Ошибка изменения сообщения от бота
пишу бота на питоне с использованием библиотеки telebot, с помощью этого метода хочу отредактировать отправленное ранее ботом сообщение
bot.send_message(message.chat.id, 'Initialization 0% (##########)')
bot.edit_message_text(message.chat.id, 'Initialization 25% (//########)', message_id=message.message_id)
bot.edit_message_text(message.chat.id, 'Initialization 60% (//////####)', message_id=message.message_id)
bot.edit_message_text(message.chat.id, 'Initialization 100% (//////////)', message_id=message.message_id)
bot.send_message(message.chat.id, 'Initialization completed')
но вызывает ошибку
[b'{"ok":false,"error_code":400,"description":"Bad Request: chat not found"}']"
в чем причина? как исправить?
Ответы (1 шт):
Автор решения: D. Violet
→ Ссылка
bot.edit_message_text работает только на изменение уже существующего сообщения, поэтому логично, что его стоит помещать только в @bot.callback_query_handler.
Вот пример:
import telebot
from telebot import types
from time import sleep
@bot.message_handler(commands=['start'])
def start(message):
kb = types.InlineKeyboardMarkup()
b = types.InlineKeyboardButton(text='Initialization', callback_data='initialization')
kb.add(b)
bot.send_message(message.chat.id, 'hi', reply_markup=kb)
@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
if call.data == 'initialization':
bot.edit_message_text(chat_id=call.message.chat.id, text='Initialization 0% (##########)',
message_id=call.message.message_id)
sleep(2)
bot.edit_message_text(chat_id=call.message.chat.id, text='Initialization 25% (//########)',
message_id=call.message.message_id)
sleep(2)
bot.edit_message_text(chat_id=call.message.chat.id, text='Initialization 60% (//////####)',
message_id=call.message.message_id)
sleep(2)
bot.edit_message_text(chat_id=call.message.chat.id, text='Initialization 100% (//////////)',
message_id=call.message.message_id)
sleep(2)
bot.edit_message_text(chat_id=call.message.chat.id, text='Initialization completed',
message_id=call.message.message_id)