69 lines
2.4 KiB
Python
69 lines
2.4 KiB
Python
from functools import cached_property
|
||
|
||
from helpers.events import events
|
||
from helpers.jokes import get_random
|
||
|
||
|
||
class Processor:
|
||
def __init__(self, data: dict):
|
||
self.data = data
|
||
if 'user' in data['session']:
|
||
self.user_id = data['session']['user']['user_id']
|
||
else:
|
||
self.user_id = None
|
||
events.inc("ping")
|
||
self.message = data['request']['original_utterance'].lower()
|
||
|
||
def next(self):
|
||
return {
|
||
"text": get_random()
|
||
}
|
||
|
||
def save(self):
|
||
return {
|
||
"text": "Функционал пока в разработке"
|
||
}
|
||
|
||
def finish(self):
|
||
return {
|
||
"text": "Пока-пока, заходи еще",
|
||
"end_session": True
|
||
}
|
||
|
||
def help(self):
|
||
return {
|
||
"text": "Чтобы услышать смешную шутеечку, скажи \"следующий\" или \"дальше\". Если ты устал и хочешь закончить, скажи \"закончить\" или \"хватит\"."
|
||
}
|
||
|
||
@cached_property
|
||
def handlers(self) -> dict:
|
||
return {
|
||
"следующий": self.next,
|
||
"дальше": self.next,
|
||
"помощь": self.help,
|
||
"что ты умеешь": self.help,
|
||
"закончить": self.finish,
|
||
"хватит": self.finish
|
||
}
|
||
|
||
def process(self) -> dict:
|
||
if self.data['session']['new']:
|
||
if self.user_id is not None:
|
||
events.inc("launch")
|
||
return {
|
||
"text": "Привет! Сейчас мы с тобой пошутим! Чтобы услышать смешную шутеечку, скажи \"следующий\" или \"дальше\". Если ты устал и хочешь закончить, скажи \"закончить\" или \"хватит\". "
|
||
"Держи первый анекдот:\n"
|
||
f"{get_random()}"
|
||
}
|
||
events.inc("joke")
|
||
action = None
|
||
for key, value in self.handlers.items():
|
||
if key in self.message:
|
||
action = value
|
||
break
|
||
if action is None:
|
||
return {
|
||
"text": f"Я не понимаю этой команды. Я могу выполнить только действия: {', '.join(self.handlers.keys())}"
|
||
}
|
||
return action()
|