It's version 0.6 I add users DB
This commit is contained in:
+61
-19
@@ -4,11 +4,43 @@ from models.state import BotState
|
||||
from services.schedule_service import ScheduleService
|
||||
from utils.antispam import is_chat_spam, saving
|
||||
from storage.message_storage import save_message
|
||||
from storage.users_storage import set_group, get_group
|
||||
from aiogram.utils.keyboard import InlineKeyboardBuilder
|
||||
|
||||
VALID_GROUPS = [
|
||||
"603Т", "33мд", "32мд", "31тс", "30тс", "29то", "28то", "27д", "26д", "25тм", "24тм",
|
||||
"23д", "22мд", "21мд", "20тс", "19тс", "18то", "17то", "16д", "15д", "14тм", "13тм",
|
||||
"12д", "11мд", "10мд", "8тс", "7то", "7Ст", "6то", "6Сб", "5д", "5Cа", "4Сб", "3тм",
|
||||
"3Са", "2тм", "2Cб", "1Са", "600Р", "601Р", "602д"
|
||||
]
|
||||
|
||||
def register_handlers(dp: Dispatcher, state: BotState):
|
||||
@dp.message(Command("rasp"))
|
||||
@saving
|
||||
async def send_schedule(message: types.Message):
|
||||
"""Отправка расписания (текст)"""
|
||||
if is_chat_spam(message.chat.id, state):
|
||||
await message.answer("НЕ СПАМЬТЕ!!!")
|
||||
return
|
||||
|
||||
args = message.text.split(maxsplit=2)
|
||||
# Определяем группу
|
||||
if len(args) > 1:
|
||||
group = args[1].strip()
|
||||
else:
|
||||
group = get_group(message.from_user.id)
|
||||
|
||||
# Определяем смещение по дню
|
||||
day_offset = int(args[2]) if len(args) > 2 and args[2].isdigit() else 0
|
||||
|
||||
schedule_service = ScheduleService()
|
||||
text, url, day, month = await schedule_service.get_schedule(group, day_offset)
|
||||
|
||||
msg = await message.answer(text, parse_mode="Markdownv2")
|
||||
save_message(msg.chat.id, msg.message_id)
|
||||
|
||||
@dp.message(Command("prasp"))
|
||||
@saving
|
||||
async def send_schedule(message: types.Message):
|
||||
"""Отправка расписания"""
|
||||
if is_chat_spam(message.chat.id, state):
|
||||
@@ -16,25 +48,10 @@ def register_handlers(dp: Dispatcher, state: BotState):
|
||||
return
|
||||
|
||||
args = message.text.split(maxsplit=2)
|
||||
group = args[1].strip() if len(args) > 1 else "30тс"
|
||||
day_offset = int(args[2]) if len(args) > 2 and args[2].isdigit() else 0
|
||||
|
||||
schedule_service = ScheduleService()
|
||||
text, url, day, month = await schedule_service.get_schedule(group, day_offset)
|
||||
# Отправляем текст расписания
|
||||
msg = await message.answer(text, parse_mode="Markdownv2")
|
||||
|
||||
save_message(message.chat.id, msg.message_id)
|
||||
|
||||
@dp.message(Command("prasp"))
|
||||
async def send_schedule(message: types.Message):
|
||||
"""Отправка расписания"""
|
||||
if is_chat_spam(message.chat.id, state):
|
||||
await message.answer("НЕ СПАМЬТЕ!!!")
|
||||
return
|
||||
|
||||
args = message.text.split(maxsplit=2)
|
||||
group = args[1].strip() if len(args) > 1 else "30тс"
|
||||
if len(args) > 1:
|
||||
group = args[1].strip()
|
||||
else:
|
||||
group = get_group(message.from_user.id)
|
||||
day_offset = int(args[2]) if len(args) > 2 and args[2].isdigit() else 0
|
||||
|
||||
schedule_service = ScheduleService()
|
||||
@@ -54,3 +71,28 @@ def register_handlers(dp: Dispatcher, state: BotState):
|
||||
state.file_id_cache[group.lower()] = msg.photo[-1].file_id
|
||||
else:
|
||||
await message.answer(f"Не удалось найти расписание для {group}")
|
||||
|
||||
@dp.message(Command("set"))
|
||||
@saving
|
||||
async def set(message: types.Message):
|
||||
# создаём клавиатуру
|
||||
builder = InlineKeyboardBuilder()
|
||||
for group in VALID_GROUPS:
|
||||
builder.button(text=group, callback_data=f"set_group:{group}")
|
||||
builder.adjust(5) # количество кнопок в строке
|
||||
|
||||
await message.answer(
|
||||
"Выбери группу из списка:",
|
||||
reply_markup=builder.as_markup()
|
||||
)
|
||||
|
||||
@dp.callback_query(lambda c: c.data.startswith("set_group:"))
|
||||
async def process_group_choice(callback: types.CallbackQuery):
|
||||
group = callback.data.split(":")[1]
|
||||
set_group(callback.from_user.id, group)
|
||||
|
||||
# редактируем сообщение: убираем клавиатуру
|
||||
await callback.message.edit_reply_markup(reply_markup=None)
|
||||
|
||||
await callback.message.answer(f"✅ Группа установлена: {group}")
|
||||
await callback.answer()
|
||||
|
||||
Reference in New Issue
Block a user