import random from functools import cached_property from helpers.mongo import mongo class Processor: def __init__(self, data: dict): self.data = data self.user_id = data['session']['user']['user_id'] self.message = data['request']['original_utterance'] def next(self): count_docs = mongo.jokes_collection.count_documents({}) rnd = random.randrange(count_docs) anek = mongo.jokes_collection.find_one({"id": rnd}) return { "text": anek['text'] } def save(self): return { "text": "Функционал пока в разработке" } def finish(self): return { "text": "Пока-пока, заходи еще", "end_session": True } @cached_property def handlers(self) -> dict: return { "следующий": self.next, "дальше": self.next, "сохрани": self.save, "закончить": self.finish, "хватит": self.finish } def process(self) -> dict: if self.data['session']['new']: return { "text": "Привет! Сейчас мы с тобой пошутим! Чтобы услышать смешную шутеечку, скажи \"следующий\" или \"дальше\". Если ты устал и хочешь закончить, скажи \"закончить\" или \"хватит\"." } action = self.handlers.get(self.message) if action is None: return { "text": f"Я не понимаю этой команды. Я могу выполнить только действия: {', '.join(self.handlers.keys())}" } return action()