/
outthevoid
/
python_telegram_bot_project
Обзор
Документация
Войти
/
outthevoid
/
python_telegram_bot_project
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
utils/paginate_results.py
118 строк
4 KB
VladimirChukavin
Добавил вызов функции bot_edit_message_media после перехвата исключения.
17 сен 2025, 15:56
17 сен 2025, 15:56
f5c9384
Код
Авторство
О чём код?
from telebot.types import InputMediaPhoto, InputFile, InlineKeyboardMarkup, Message from loguru import logger from telebot import TeleBot from keyboards.inline.inline_keyboard_pagination import create_pagination_keyboard from utils.process_server_response import process_server_response def bot_send_photo( bot: TeleBot, chat_id: int, poster: InputMediaPhoto | InputFile, text: str, keyboard: InlineKeyboardMarkup, ) -> Message: """ Функция для отправки картинки :param bot: Объект TeleBot :param chat_id: Идентификатор чата :param poster: Объект картинки :param text: Текст сообщения :param keyboard: Объект инлайн-клавиатуры :return: """ return bot.send_photo( chat_id, poster, caption=text, parse_mode="HTML", reply_markup=keyboard, ) def bot_edit_message_media( bot: TeleBot, chat_id: int, poster: InputMediaPhoto | InputFile, text: str, keyboard: InlineKeyboardMarkup, edit_message_id: int = None, ) -> Message: """ Функция для редактирования медиа сообщения :param bot: Объект TeleBot :param chat_id: Идентификатор чата :param poster: Объект картинки :param text: Текст сообщения :param keyboard: Объект инлайн-клавиатуры :param edit_message_id: Идентификатор отправленного сообщения :return: """ return bot.edit_message_media( media=InputMediaPhoto(media=poster, caption=text, parse_mode="HTML"), chat_id=chat_id, message_id=edit_message_id, reply_markup=keyboard, ) def send_paginated_results( bot: TeleBot, chat_id: int, page: int, results: dict, edit_message_id: int = None, watched: bool = False, ) -> None: """ Функция для устройства пагинации результатов поиска :param bot: Объект TeleBot :param chat_id: Идентификатор чата :param page: Номер страницы :param results: Словарь результатов поиска :param edit_message_id: Идентификатор отправленного сообщения :param watched: Отметка фильма (просмотрен/не просмотрен) :return: None """ movies = results.get(chat_id).get("movies") if not movies: bot.send_message(chat_id, "По вашему запросу ничего не найдено.") return movie = movies[page - 1] text, poster = process_server_response(movie) if len(text) > 1024: text = text[:1021] + "..." stub = InputFile("misc/poster_none.png") pagination_keyboard = create_pagination_keyboard( len(movies), page, watched, ) if edit_message_id: try: if poster: bot_edit_message_media( bot, chat_id, poster, text, pagination_keyboard, edit_message_id ) else: bot_edit_message_media( bot, chat_id, stub, text, pagination_keyboard, edit_message_id ) except Exception as e: logger.error("Ошибка при редактировании сообщения: {}".format(e)) bot_edit_message_media( bot, chat_id, stub, text, pagination_keyboard, edit_message_id ) else: if poster: bot_send_photo(bot, chat_id, poster, text, pagination_keyboard) else: bot_send_photo(bot, chat_id, stub, text, pagination_keyboard)