53 lines
1.8 KiB
Python
53 lines
1.8 KiB
Python
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()
|