Функция edit_message_media не работает корректно
Я пытался создать слайд-шоу, я создал простого бота, когда я пишу /start бот выдает сообщение с картинкой и кнопкой "Вперед", когда я нажимаю на кнопку ничего не меняется, а после когда я снова пишу /start то всё срабатывает. С функцией edit_message_text тоже так же. У других ютуберов всё получилось, но они делали на старой версии PyTelegramBotAPI. Я ставил старую версию, но там так же. Мне кажется это связано с тем что поменялось работа передачей id сообщении. Либо там передачу API, либо chat id поменяли. Я не знаю потому что не разработчик телеграмма.
В интернете не смог найти ответа, потому что никто не писал подобный код, если даже кто-то писал наверное он приватный. Помогите пожалуйста добрые люди!
Работа бота:
- Пишу "/start" и выводится смс с картинкой и клавиатурой
- Нажимаю "Вперед", ничего не происходит
- Пишу снова "/start", и предыдущая картинка меняется и одновременно создается новое
Вот код:
import telebot
from telebot import types
bot = telebot.TeleBot("token")
@bot.message_handler(commands=['start'])
def handle_start(message):
photo = open("pictures/photo1.jpg", "rb")
markup = types.InlineKeyboardMarkup(row_width=1)
next_button = types.InlineKeyboardButton('Вперед', callback_data='next')
markup.add(next_button)
print(f"{types.InputMediaPhoto(open('pictures/photo3.jpg', 'rb'))}")
bot.send_photo(message.chat.id, photo, f'Страница: 1', reply_markup=markup)
@bot.callback_query_handler(func=lambda call: True)
def handle_button_click(call):
markup = telebot.types.InlineKeyboardMarkup()
markup.add(telebot.types.InlineKeyboardButton(text='Назад', callback_data='previous'))
if call.data == 'next':
markup.add(telebot.types.InlineKeyboardButton(text='Вперед', callback_data='next'))
new_photo = types.InputMediaPhoto(open('pictures/photo3.jpg', 'rb'))
bot.edit_message_media(media=new_photo,
chat_id=call.message.chat.id,
message_id=call.message.message_id,
reply_markup=markup)
bot.infinity_polling()
Здесь ошибка:
bot.edit_message_media(media=photo,
chat_id=call.message.chat.id,
message_id=call.message.message_id,
reply_markup=markup)
Ошибка в строке:
File "C:\Users\Nuraly\Desktop\Demon Slayer Bot\main.py", line 282, in handle_button_click
bot.edit_message_media(media=photo,
Сама ошибка:
2023-07-07 18:38:55,675 (__init__.py:1083 MainThread) ERROR - TeleBot: "Threaded polling exception: A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: message is not modified: specified new message content and reply markup are exactly the same as a current content and reply markup of the message"
2023-07-07 18:38:55,676 (__init__.py:1085 MainThread) ERROR - TeleBot: "Exception traceback:
Traceback (most recent call last):
File "C:\Users\Nuraly\Desktop\Demon Slayer Bot\venv\Lib\site-packages\telebot\__init__.py", line 1074, in __threaded_polling
self.worker_pool.raise_exceptions()
File "C:\Users\Nuraly\Desktop\Demon Slayer Bot\venv\Lib\site-packages\telebot\util.py", line 147, in raise_exceptions
raise self.exception_info
File "C:\Users\Nuraly\Desktop\Demon Slayer Bot\venv\Lib\site-packages\telebot\util.py", line 90, in run
task(*args, **kwargs)
File "C:\Users\Nuraly\Desktop\Demon Slayer Bot\venv\Lib\site-packages\telebot\__init__.py", line 6770, in _run_middlewares_and_handler
result = handler['function'](message)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Nuraly\Desktop\Demon Slayer Bot\main.py", line 282, in handle_button_click
bot.edit_message_media(media=photo,
File "C:\Users\Nuraly\Desktop\Demon Slayer Bot\venv\Lib\site-packages\telebot\__init__.py", line 3862, in edit_message_media
result = apihelper.edit_message_media(self.token, media, chat_id, message_id, inline_message_id, reply_markup)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Nuraly\Desktop\Demon Slayer Bot\venv\Lib\site-packages\telebot\apihelper.py", line 1354, in edit_message_media
return _make_request(token, method_url, params=payload, files=file, method='post' if file else 'get')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Nuraly\Desktop\Demon Slayer Bot\venv\Lib\site-packages\telebot\apihelper.py", line 162, in _make_request
json_result = _check_result(method_name, result)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Nuraly\Desktop\Demon Slayer Bot\venv\Lib\site-packages\telebot\apihelper.py", line 189, in _check_result
raise ApiTelegramException(method_name, result, result_json)
telebot.apihelper.ApiTelegramException: A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: message is not modified: specified new message content and reply markup are exactly the same as a current content and reply markup of the message
"