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()