yandex code

This commit is contained in:
emmatveev 2023-11-11 13:37:50 +03:00
parent dfbc0c5057
commit acfc7bf22e
3 changed files with 28 additions and 11 deletions

View File

@ -37,10 +37,10 @@ class Processor:
self.user_id = None
self.message = data['request']['original_utterance'].lower()
def get_lesson_for_user(self, hse_id: int):
user = mongo.users_collection.find_one({"hse_id": hse_id})
def get_lesson_for_user(self, chat_id: int):
user = mongo.users_collection.find_one({"chat_id": chat_id})
t = now(user)
for lesson in mongo.lessons_collection.find({"hse_user_id": hse_id, "begin": {"$gte": t}}).sort([("begin", 1)]):
for lesson in mongo.lessons_collection.find({"user_email": user['email'], "begin": {"$gte": t}}).sort([("begin", 1)]):
return lesson
return None
@ -48,7 +48,7 @@ class Processor:
logging.info("user %s is saying\"%s\"", self.user_id, self.message)
if "что ты умеешь" in self.message or "помощь" in self.message:
return {
"text": "Я буду тебе подсказывать расписание занятий из РУЗа. Чтобы подключить меня к своему расписанию, зайди в бота, нажми на кнопку \"Подключение Алисы\" и назови мне код из сообщения по одной цифре."
"text": "Я буду тебе подсказывать расписание занятий из РУЗа. Чтобы подключить меня к своему расписанию, зайди в бота, нажми на кнопку \"Подключение Алисы\" и назови мне фразу из сообщения."
}
if self.data['session']['new']:
if self.user_id is None:
@ -60,7 +60,7 @@ class Processor:
"text": "Привет! Я буду тебе подсказывать расписание занятий из РУЗа. Чтобы подключить меня к своему расписанию, зайди в бота, нажми на кнопку \"Подключение Алисы\" и назови мне код из сообщения по одной цифре."
}
else:
lesson = self.get_lesson_for_user(user['hse_id'])
lesson = self.get_lesson_for_user(user['chat_id'])
if lesson is None:
return {
"text": f"В ближайшее время у тебя нет пар",
@ -71,9 +71,9 @@ class Processor:
"end_session": True
}
else:
hse_id = try_parse(self.message)
code = self.message
try:
user = mongo.users_collection.find_one({"hse_id": hse_id})
user = mongo.users_collection.find_one({"yandex_code": code})
except ValueError:
return {
"text": "Извини, не могу разобрать код, назови его еще раз"
@ -83,9 +83,9 @@ class Processor:
"text": "Извини, не могу разобрать код, назови его еще раз"
}
else:
mongo.users_collection.update_one({"hse_id": int(hse_id)}, {"$set": {"yandex_id": self.user_id}})
mongo.users_collection.update_one({"yandex_code": code}, {"$set": {"yandex_id": self.user_id, "yandex_code": None}})
bot.send_message(user['chat_id'], "Алиса успешно подключена!")
lesson = self.get_lesson_for_user(user['hse_id'])
lesson = self.get_lesson_for_user(user['chat_id'])
if lesson is None:
return {
"text": f"Отлично, теперь я могу подсказывать тебе расписание. В ближайшее время у тебя нет пар",

View File

@ -1,4 +1,5 @@
import datetime
from random import choice
from telebot.types import Message, ReplyKeyboardRemove
@ -8,6 +9,7 @@ from helpers import get_next_daily_notify_time
from helpers.keyboards import main_keyboard, notify_keyboard, yes_no_keyboard, again_keyboard, no_daily_notify, \
campus_keyboard, daily_notify_type, notify_type, first_lesson_notify
from helpers.mongo import mongo
from helpers.platform import platform
from helpers.ruz import ruz
@ -34,7 +36,8 @@ class Answer:
'daily_notify_today': True,
'first_lesson_notify': None,
'last_schedule_fetch': datetime.datetime.now(),
'yandex_id': None
'yandex_id': None,
'yandex_code': None,
}
mongo.users_collection.insert_one(user)
self.user = user
@ -143,7 +146,15 @@ class Answer:
return
elif self.message_text == "Подключение Алисы":
if self.user['yandex_id'] is None:
text = "Для того, чтобы подключить Яндекс.Алису, вызови навык \"Расписание вышки\" и назови этот код: " + str(self.user['hse_id'])
words = platform.get_config('words')
while True:
random_words = [choice(words) for _ in range(4)]
code = ' '.join(random_words)
u = mongo.users_collection.find_one({"yandex_code": code})
if u is None:
break
mongo.users_collection.update_one({'chat_id': self.user['chat_id']}, {"$set": {"yandex_code": code}})
text = "Для того, чтобы подключить Яндекс.Алису, вызови навык \"Расписание вышки\" и назови этот код: " + code
else:
text = "Янедкс.Алиса уже подключена. Чтобы узнать ближайшую пару, вызови навык \"Расписание вышки\""
else:

View File

@ -15,6 +15,12 @@ class Mongo:
self.users_collection.create_index([
("chat_id", 1)
])
self.users_collection.create_index([
("yandex_id", 1)
])
self.users_collection.create_index([
("yandex_code", 1)
])
self.users_collection.create_index([
("notify_minutes", 1)
])