Ошибка в коде telebot - Bad Request: message to edit not found
Я хочу сделать своего телеграмм бота, но натыкаюсь на ошибку:
File "xxxxx", line 195, 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 to edit not found
Ошибка возникает при нажатии на кнопку или запуске команды /start
.
Не понимаю как её решать. Помогите пожалуйста, буду рад любой критике и помощи.
Код приложения:
import telebot as tb
from telebot import types
TOKEN = 'token'
bot = tb.TeleBot(TOKEN)
# обрабатываем команду /start
@bot.message_handler(commands=['start'])
def command_start(message):
markup = types.InlineKeyboardMarkup()
# создание кнопок
btn_a = types.InlineKeyboardButton('Кнопка1', callback_data='btn_a')
btn_f = types.InlineKeyboardButton('Кнопка2', callback_data='btn_f')
# расположение кнопок
markup.row(btn_a, btn_f)
btn_s = types.InlineKeyboardButton('Кнопка3', callback_data='btn_s')
btn_d = types.InlineKeyboardButton('Кнопка4', callback_data='btn_d')
markup.row(btn_d, btn_s)
bot.reply_to(message, 'Выберите кнопку.', reply_markup=markup)
@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
if call.data == "markup":
markup = types.InlineKeyboardMarkup()
btn_a = types.InlineKeyboardButton('Кнопка1', callback_data='btn_a')
btn_f = types.InlineKeyboardButton('Кнопка2', callback_data='btn_f')
markup.row(btn_a, btn_f)
btn_s = types.InlineKeyboardButton('Кнопка3', callback_data='btn_s')
btn_d = types.InlineKeyboardButton('Кнопка4', callback_data='btn_d')
markup.row(btn_d, btn_s)
bot.edit_message_reply_markup(call.message.chat.id, call.message.message_id,
reply_markup=markup)
elif call.data == "btn_a":
markup_two_menu = types.InlineKeyboardMarkup()
btn_a_1 = types.InlineKeyboardButton('Google', url='http://google.com/')
btn_a_2 = types.InlineKeyboardButton('YouTube', url='https://www.youtube.com/')
markup_two_menu.row(btn_a_1, btn_a_2)
bot.edit_message_text('Выберите контент который хотелибы посмотреть.',
call.message.chat.id, reply_markup=markup_two_menu)
# обработка текста
@bot.message_handler()
def text(message):
bot.send_message(message.chat.id, 'Я взаимодействую только с кнопками, на вопросы не
отвечаю(')
bot.polling(none_stop=True)
Ответы (1 шт):
Автор решения: kretoffer
→ Ссылка
Эта ошибка означает что вы пытаетесь изменить сообщение, которого нету. Дело в том что в строке
bot.edit_message_text('Выберите контент который хотели бы посмотреть.',
call.message.chat.id, reply_markup=markup_two_menu)
вы передаете только chat id, но нужно передать еще и message id.
bot.edit_message_text(text='Выберите контент который хотели бы посмотреть.',
chat_id=call.message.chat.id,message_id=call.message.message_id, reply_markup=markup_two_menu)