71 lines
3.8 KiB
Python
71 lines
3.8 KiB
Python
import logging
|
||
|
||
from daemons.bot import bot
|
||
from helpers.mongo import mongo
|
||
|
||
|
||
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
|
||
self.message = data['request']['original_utterance'].lower()
|
||
|
||
def get_lesson_for_user(self, hse_id: int):
|
||
for lesson in mongo.lessons_collection.find({"hse_user_id": hse_id}).sort([("begin", 1)]):
|
||
return lesson
|
||
return None
|
||
|
||
def process(self) -> dict:
|
||
logging.info("user %s is saying\"%s\"", self.user_id, self.message)
|
||
if "что ты умеешь" in self.message or "помощь" in self.message:
|
||
return {
|
||
"text": "Я буду тебе подсказывать расписание занятий из РУЗа. Чтобы подключить меня к своему расписанию, зайди в бота, нажми на кнопку \"Подключение Алисы\" и назови мне код из сообщения."
|
||
}
|
||
if self.data['session']['new']:
|
||
if self.user_id is None:
|
||
return {"text": "Пингуй дальше"}
|
||
else:
|
||
user = mongo.users_collection.find_one({"yandex_id": self.user_id})
|
||
if user is None:
|
||
return {
|
||
"text": "Привет! Я буду тебе подсказывать расписание занятий из РУЗа. Чтобы подключить меня к своему расписанию, зайди в бота, нажми на кнопку \"Подключение Алисы\" и назови мне код из сообщения."
|
||
}
|
||
else:
|
||
lesson = self.get_lesson_for_user(user['hse_id'])
|
||
if lesson is None:
|
||
return {
|
||
"text": f"В ближайшее время у тебя нет пар",
|
||
"end_session": True
|
||
}
|
||
return {
|
||
"text": f'Твое ближайшее занятие {lesson["begin"].strftime("%d %B %H:%M")}: {lesson["discipline"]}',
|
||
"end_session": True
|
||
}
|
||
else:
|
||
hse_id = self.message.replace(' ', '')
|
||
try:
|
||
user = mongo.users_collection.find_one({"hse_id": int(hse_id)})
|
||
except ValueError:
|
||
return {
|
||
"text": "Извини, не могу разобрать код, назови его еще раз"
|
||
}
|
||
if user is None:
|
||
return {
|
||
"text": "Извини, не могу разобрать код, назови его еще раз"
|
||
}
|
||
else:
|
||
mongo.users_collection.update_one({"hse_id": int(hse_id)}, {"$set": {"yandex_id": self.user_id}})
|
||
bot.send_message(user['chat_id'], "Алиса успешно подключена!")
|
||
lesson = self.get_lesson_for_user(user['hse_id'])
|
||
if lesson is None:
|
||
return {
|
||
"text": f"Отлично, теперь я могу подсказывать тебе расписание. В ближайшее время у тебя нет пар",
|
||
"end_session": True
|
||
}
|
||
return {
|
||
"text": f'Отлично, теперь я могу подсказывать тебе расписание. Твое ближайшее занятие {lesson["begin"].strftime("%d %B %H:%M")}: {lesson["discipline"]}',
|
||
"end_session": True
|
||
} |