Files
aero/additional_functions.py

88 lines
3.3 KiB
Python

import re
import datetime
from aiogram.types import Message, ReplyKeyboardMarkup, KeyboardButton
from aiogram import Bot
from get import get_timetable_for_day, fetch_timetable_data
from DB import UseDB
def get_group_id(user_id):
db = UseDB("users")
if db.find_document({"user_id": user_id}):
return db.find_document({"user_id": user_id})[0]["group_id"]
else:
return None
async def on_notification(msg: Message):
time_on_notification = msg.text.split()[1]
pattern = r'^([01]?[0-9]|2[0-3]):([0-5]?[0-9])$'
if re.match(pattern, time_on_notification):
time_obj = datetime.datetime.strptime(time_on_notification, "%H:%M")
db = UseDB("users")
db.update_document(
{"user_id": msg.from_user.id},
{"notification": time_obj}
)
await msg.answer(f"Отлично, время теперь установленно на: {time_obj}")
else:
await msg.answer(
"Формат времени не правильный. "
"Правильный формат команды: /on_notification часы:минуты."
)
async def set_group(msg: Message):
try:
group_id = int(msg.text.split()[1])
except ValueError:
return await msg.answer(
"Указанная вами группа не найдена. "
"Пожалуйста, проверьте корректность номера группы."
)
response = fetch_timetable_data(group_id)
if "404" in str(response) or "500" in str(response):
await msg.answer(
"Указанная вами группа не найдена. "
"Пожалуйста, проверьте корректность номера группы."
)
else:
db = UseDB("users")
if db.find_document({"user_id": msg.from_user.id}):
db.update_document(
{"user_id": msg.from_user.id},
{"group_id": group_id}
)
else:
db.insert_document(
{
"user_id": msg.from_user.id,
"group_id": group_id,
"notification": "off"
}
)
kb = [
[KeyboardButton(text="сегодня")],
[KeyboardButton(text="завтра")],
[KeyboardButton(text="послезавтра")]
]
keyboard = ReplyKeyboardMarkup(keyboard=kb, resize_keyboard=True)
await msg.answer("Я сохранил группу для вас.", reply_markup=keyboard)
async def timetable_for_day(msg: Message, shift: int = 0):
group_id = get_group_id(msg.from_user.id)
if group_id is None:
return await msg.answer(
"Кажется, вашего пользователя нет в нашей базе данных."
"Чтобы начать работу, пожалуйста, укажите вашу группу с "
"помощью команды: /set_group номер_группы."
)
for text in get_timetable_for_day(group_id, shift):
await msg.answer(text)
async def timetable_day(user_id: int, group_id: int, bot: Bot):
for text in get_timetable_for_day(group_id, 1):
await bot.send_message(chat_id=user_id, text=text)