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.save, "закончить": self.finish } def process(self) -> dict: action = self.handlers.get(self.message) if action is None: return { "text": f"Я не понимаю этой команды. Я могу выполнить только действия: {', '.join(self.handlers.keys())}" } return action()