yandex code
This commit is contained in:
parent
dfbc0c5057
commit
acfc7bf22e
@ -37,10 +37,10 @@ class Processor:
|
|||||||
self.user_id = None
|
self.user_id = None
|
||||||
self.message = data['request']['original_utterance'].lower()
|
self.message = data['request']['original_utterance'].lower()
|
||||||
|
|
||||||
def get_lesson_for_user(self, hse_id: int):
|
def get_lesson_for_user(self, chat_id: int):
|
||||||
user = mongo.users_collection.find_one({"hse_id": hse_id})
|
user = mongo.users_collection.find_one({"chat_id": chat_id})
|
||||||
t = now(user)
|
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 lesson
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ class Processor:
|
|||||||
logging.info("user %s is saying\"%s\"", self.user_id, self.message)
|
logging.info("user %s is saying\"%s\"", self.user_id, self.message)
|
||||||
if "что ты умеешь" in self.message or "помощь" in self.message:
|
if "что ты умеешь" in self.message or "помощь" in self.message:
|
||||||
return {
|
return {
|
||||||
"text": "Я буду тебе подсказывать расписание занятий из РУЗа. Чтобы подключить меня к своему расписанию, зайди в бота, нажми на кнопку \"Подключение Алисы\" и назови мне код из сообщения по одной цифре."
|
"text": "Я буду тебе подсказывать расписание занятий из РУЗа. Чтобы подключить меня к своему расписанию, зайди в бота, нажми на кнопку \"Подключение Алисы\" и назови мне фразу из сообщения."
|
||||||
}
|
}
|
||||||
if self.data['session']['new']:
|
if self.data['session']['new']:
|
||||||
if self.user_id is None:
|
if self.user_id is None:
|
||||||
@ -60,7 +60,7 @@ class Processor:
|
|||||||
"text": "Привет! Я буду тебе подсказывать расписание занятий из РУЗа. Чтобы подключить меня к своему расписанию, зайди в бота, нажми на кнопку \"Подключение Алисы\" и назови мне код из сообщения по одной цифре."
|
"text": "Привет! Я буду тебе подсказывать расписание занятий из РУЗа. Чтобы подключить меня к своему расписанию, зайди в бота, нажми на кнопку \"Подключение Алисы\" и назови мне код из сообщения по одной цифре."
|
||||||
}
|
}
|
||||||
else:
|
else:
|
||||||
lesson = self.get_lesson_for_user(user['hse_id'])
|
lesson = self.get_lesson_for_user(user['chat_id'])
|
||||||
if lesson is None:
|
if lesson is None:
|
||||||
return {
|
return {
|
||||||
"text": f"В ближайшее время у тебя нет пар",
|
"text": f"В ближайшее время у тебя нет пар",
|
||||||
@ -71,9 +71,9 @@ class Processor:
|
|||||||
"end_session": True
|
"end_session": True
|
||||||
}
|
}
|
||||||
else:
|
else:
|
||||||
hse_id = try_parse(self.message)
|
code = self.message
|
||||||
try:
|
try:
|
||||||
user = mongo.users_collection.find_one({"hse_id": hse_id})
|
user = mongo.users_collection.find_one({"yandex_code": code})
|
||||||
except ValueError:
|
except ValueError:
|
||||||
return {
|
return {
|
||||||
"text": "Извини, не могу разобрать код, назови его еще раз"
|
"text": "Извини, не могу разобрать код, назови его еще раз"
|
||||||
@ -83,9 +83,9 @@ class Processor:
|
|||||||
"text": "Извини, не могу разобрать код, назови его еще раз"
|
"text": "Извини, не могу разобрать код, назови его еще раз"
|
||||||
}
|
}
|
||||||
else:
|
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'], "Алиса успешно подключена!")
|
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:
|
if lesson is None:
|
||||||
return {
|
return {
|
||||||
"text": f"Отлично, теперь я могу подсказывать тебе расписание. В ближайшее время у тебя нет пар",
|
"text": f"Отлично, теперь я могу подсказывать тебе расписание. В ближайшее время у тебя нет пар",
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import datetime
|
import datetime
|
||||||
|
from random import choice
|
||||||
|
|
||||||
from telebot.types import Message, ReplyKeyboardRemove
|
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, \
|
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
|
campus_keyboard, daily_notify_type, notify_type, first_lesson_notify
|
||||||
from helpers.mongo import mongo
|
from helpers.mongo import mongo
|
||||||
|
from helpers.platform import platform
|
||||||
from helpers.ruz import ruz
|
from helpers.ruz import ruz
|
||||||
|
|
||||||
|
|
||||||
@ -34,7 +36,8 @@ class Answer:
|
|||||||
'daily_notify_today': True,
|
'daily_notify_today': True,
|
||||||
'first_lesson_notify': None,
|
'first_lesson_notify': None,
|
||||||
'last_schedule_fetch': datetime.datetime.now(),
|
'last_schedule_fetch': datetime.datetime.now(),
|
||||||
'yandex_id': None
|
'yandex_id': None,
|
||||||
|
'yandex_code': None,
|
||||||
}
|
}
|
||||||
mongo.users_collection.insert_one(user)
|
mongo.users_collection.insert_one(user)
|
||||||
self.user = user
|
self.user = user
|
||||||
@ -143,7 +146,15 @@ class Answer:
|
|||||||
return
|
return
|
||||||
elif self.message_text == "Подключение Алисы":
|
elif self.message_text == "Подключение Алисы":
|
||||||
if self.user['yandex_id'] is None:
|
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:
|
else:
|
||||||
text = "Янедкс.Алиса уже подключена. Чтобы узнать ближайшую пару, вызови навык \"Расписание вышки\""
|
text = "Янедкс.Алиса уже подключена. Чтобы узнать ближайшую пару, вызови навык \"Расписание вышки\""
|
||||||
else:
|
else:
|
||||||
|
@ -15,6 +15,12 @@ class Mongo:
|
|||||||
self.users_collection.create_index([
|
self.users_collection.create_index([
|
||||||
("chat_id", 1)
|
("chat_id", 1)
|
||||||
])
|
])
|
||||||
|
self.users_collection.create_index([
|
||||||
|
("yandex_id", 1)
|
||||||
|
])
|
||||||
|
self.users_collection.create_index([
|
||||||
|
("yandex_code", 1)
|
||||||
|
])
|
||||||
self.users_collection.create_index([
|
self.users_collection.create_index([
|
||||||
("notify_minutes", 1)
|
("notify_minutes", 1)
|
||||||
])
|
])
|
||||||
|
Loading…
Reference in New Issue
Block a user