Как можно удалить предыдущее сообщение бота, когда пользователь нажимает на инлайн-кнопку?

Как исправить ошибку удаления сообщений с помощью переменной в коде?
  • 13 февраля 2024 г. 15:48
Ответы на вопрос 2
Для удаления предыдущего сообщения бота, когда пользователь нажимает на инлайн-кнопку, вы можете использовать метод `deleteMessage` из API вашей платформы.

Вот пример кода на Python и Telegram API для удаления предыдущего сообщения бота:

```python
import telebot

TOKEN = 'your_token'
bot = telebot.TeleBot(TOKEN)


@bot.message_handler(commands=['start'])
def start(message):
    # Отправляем сообщение пользователю и сохраняем его идентификатор (chat_id)
    sent = bot.send_message(message.chat.id, 'Привет! Нажми на кнопку.')

    # Сохраняем идентификатор сообщения для последующего удаления
    bot.register_next_step_handler(sent, save_message_id)


def save_message_id(message):
    # Получаем chat_id и id сохраненного сообщения
    chat_id = message.chat.id
    message_id = message.message_id

    # Отправляем клавиатуру с инлайн-кнопкой и сохраняем идентификатор сообщения с кнопкой
    markup = telebot.types.InlineKeyboardMarkup()
    button = telebot.types.InlineKeyboardButton(text='Нажми меня', callback_data='delete')
    markup.add(button)
    sent = bot.send_message(chat_id, 'Отлично!', reply_markup=markup)

    # Сохраняем идентификатор сообщения с кнопкой для последующего удаления
    bot.register_next_step_handler(sent, delete_previous_message, message_id)


def delete_previous_message(query, message_id):
    # Удаляем предыдущее сообщение бота
    bot.delete_message(query.from_user.id, message_id)


@bot.callback_query_handler(func=lambda call: True)
def callback_handler(call):
    if call.data == 'delete':
        # Обработка нажатия на инлайн-кнопку
        bot.answer_callback_query(call.id, text='Кнопка нажата!')
        bot.delete_message(call.message.chat.id, call.message.message_id)

bot.polling()
```

В данном примере, после того как пользователь нажимает кнопку "Нажми меня", предыдущее сообщение бота, содержащее клавиатуру с кнопкой, будет удалено.
Хотите сказать, что так не работает? 
Похожие вопросы