Ошибка изменения сообщения от бота

пишу бота на питоне с использованием библиотеки 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)
→ Ссылка