/
android113
/
schedule_tg_bot
Обзор
Документация
Войти
/
android113
/
schedule_tg_bot
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/apps/handlers/callbacks.py
61 строка
3 KB
Скороходов Андрей Андреевич
updated /list commands
14 окт 2025, 16:34
14 окт 2025, 16:34
4322407
Код
Авторство
О чём код?
from core.config import logger from core.state import SCHEDULE_DATA from core.utils import escape_markdown # ИСПРАВЛЕНИЕ: Импортируем нашу новую функцию-генератор from handlers.commands import generate_paginated_list from services.schedule_manager import save_schedule_to_json from services.scheduler import reload_jobs from telegram import Update from telegram.error import BadRequest from telegram.ext import ContextTypes async def button_callback_handler( update: Update, context: ContextTypes.DEFAULT_TYPE ) -> None: """Обрабатывает нажатия на инлайн-кнопки (удаление и пагинация).""" query = update.callback_query await query.answer() try: prefix, data = query.data.split(":", 1) if prefix == "delete_lesson": lesson_index = int(data) if lesson_index < len(SCHEDULE_DATA): deleted_lesson = SCHEDULE_DATA.pop(lesson_index) if save_schedule_to_json(): reload_jobs(context.application) # После удаления обновляем текущую страницу списка current_page = lesson_index // 5 text, new_markup = generate_paginated_list(page=current_page) await query.edit_message_text( text=f"✅ Занятие *{escape_markdown(deleted_lesson['subject'])}* удалено\\.\n\n" + text, parse_mode="MarkdownV2", reply_markup=new_markup, ) else: await query.edit_message_text(text="❌ Ошибка сохранения.") else: await query.edit_message_text(text="🤔 Уже удалено.") # ИСПРАВЛЕНИЕ: Новая логика для пагинации elif prefix == "list_page": page = int(data) text, reply_markup = generate_paginated_list(page=page) await query.edit_message_text( text=text, reply_markup=reply_markup, parse_mode="Markdown" ) except BadRequest as e: if "Message is not modified" in str(e): # Игнорируем ошибку, если пользователь нажимает кнопку, не меняющую контент # (например, "вперед" на последней странице) pass else: logger.error(f"Ошибка BadRequest в button_callback_handler: {e}") await query.edit_message_text(text="❌ Произошла ошибка.") except Exception as e: logger.error(f"Ошибка в button_callback_handler: {e}") await query.edit_message_text(text="❌ Произошла ошибка.")