Изменено: расписан блок ближайшей пары

This commit is contained in:
far-galaxy 2023-02-05 18:16:39 +03:00
parent 6158af655c
commit e50a531abe
4 changed files with 86 additions and 20 deletions

43
bot.py
View File

@ -2,11 +2,13 @@ from database.l9 import L9_DB
from database.tg import TG_DB
from database.shedule import Shedule_DB
from utils.config import *
from utils.stuff import *
import telegram
from tg.keyboards import Keyboard
import logging
from logging.handlers import TimedRotatingFileHandler as TRFL
import configparser
import datetime
logger = logging.getLogger('bot')
@ -97,12 +99,45 @@ class Bot:
self.addGroup(l9Id, query)
elif query.text == 'Главное меню':
near = self.shedule.nearLesson(query.date, l9Id)
if near != None:
# TODO: прописать другие случаи
now = query.date
# now = datetime.datetime(2023, 2, 6, 14, 0)
pairs = self.shedule.nearLesson(now, l9Id)
if pairs != None:
pair = pairs[0][0][1]
if pair.date() > now.date():
text = loc['shedule']['next_days']
day = datetime.timedelta(days=1)
if pair.date() - now.date() == day:
text += f" {loc['shedule']['tomorrow']}:\n"
else:
text += (
f' {pair.day} {month[pair.month-1]}:\n'
)
elif pair.time() > now.time():
text = f"{loc['shedule']['today']}:\n"
else:
text = f"{loc['shedule']['now']}:\n"
text += self.shedule.strLesson(
[p[0] for p in pairs[0]]
)
if len(pairs) == 2 and pair.date() == now.date():
text += f"\n{loc['shedule']['next']}:\n"
text += self.shedule.strLesson(
[p[0] for p in pairs[1]]
)
elif pair.date() == now.date():
text += f"\n{loc['shedule']['next_empty']}"
# TODO: Добавить смайликов
self.tg.sendMessage(
tgId,
f"{loc['shedule']['near']}:\n{near}",
text,
reply_markup=Keyboard.menu(),
)
else:
self.tg.sendMessage(
tgId,
loc['shedule']['no_shedule'],
reply_markup=Keyboard.menu(),
)

View File

@ -3,6 +3,7 @@ from .a_ssau_parser import *
import telegram
from configparser import ConfigParser
import datetime
from itertools import groupby
class Shedule_DB:
@ -161,15 +162,32 @@ class Shedule_DB:
lessonId = self.db.get(
'lessons',
f"(groupId = {groupIds[0][0]}{second_gr}) AND `end` > '{str_time}' "
'ORDER BY `begin` LIMIT 2',
['lessonId, begin'],
'ORDER BY `begin` LIMIT 4',
['lessonId', 'begin'],
)
if lessonId != []:
if len(lessonId) == 2 and lessonId[0][1] == lessonId[1][1]:
return self.strLesson([lessonId[0][0], lessonId[1][0]])
if len(lessonId) >= 2:
pairs = [
list(pair)
for begin, pair in groupby(
lessonId, key=lambda d: d[1]
)
]
if (
len(pairs) >= 2
and pairs[0][0][1].date() != pairs[1][0][1].date()
):
pairs = [pairs[0]]
elif (
len(pairs) > 2
and pairs[0][0][1].date() == pairs[1][0][1].date()
):
pairs = pairs[:2]
else:
return self.strLesson([lessonId[0][0]])
pairs = [lessonId[0]]
return pairs
elif not retry:
for groupId in [i for i in groupIds if i[0] > 1000]:

View File

@ -1,34 +1,33 @@
[etc]
oops=Ой!
cancel=Действие отменено
overlimit=Бот работает в тестовом режиме, поэтому количество пользователей временно ограничено.
К сожалению, в данный момент лимит превышен, поэтому доступ для вас закрыт 😢
Попробуйте зайти на следующей неделе, когда лимит будет повышен
hello=Привет! Я твой новый помощник, который подскажет тебе, какая сейчас пара, и будет напоминать о занятиях, чтобы ты ничего не упустил 🤗
Давай знакомиться! Введи свой номер группы (например, 2305 или 2305-240502D)
[group]
connected=Поздравляем, твоя группа %%s, направление "%%s", подключена!
exists=❗️Эта группа у тебя уже подключена
error=❗У меня этой группы пока нет, а сайте возникла какая-то ошибка.
Попробуйте позже
checkShedule:Такой группы у меня пока нет в базе, но она есть на сайте
%%s
Проверь, пожалуйста, что это твоя группа и нажми кнопку
empty=К сожалению, такой группы нет ни в моей базе, ни на сайте университета :(
loading=Загружаю расписание...
loaded=Расписание загружено!
nogroup=Возможно, ты написал не ту группу, попробуй снова
[shedule]
near=Ближайшая пара
near=Ближайшая пара
next_days=❗️Сегодня пар нет
Ближайшая пара
tomorrow=завтра
today=Ближайшая пара сегодня
now=Сейчас
next=Далее
next_empty=Далее сегодня ничего не будет
no_shedule=Расписание пустое
Либо пары кончились, либо что-то пошло не так

14
utils/stuff.py Normal file
View File

@ -0,0 +1,14 @@
month = (
"января",
"февраля",
"марта",
"апреля",
"мая",
"июня",
"июля",
"августа",
"сентября",
"октября",
"ноября",
"декабря",
)