Как удалить сообщение с помощью PyTelegramBotApi?

Как настроить бота так, чтобы он удалял только сообщения, сгенерированные кнопками, а не свои собственные? <br/> <br/> Приведу пример кода, где при условии, что текст сообщения равен "Эверест", бот удаляет сообщение, нажатое мной кнопкой, и отправляет новое сообщение с ссылкой.
  • 21 июля 2024 г. 16:22
Ответы на вопрос 1
Для удаления сообщения с помощью PyTelegramBotApi можно воспользоваться методом delete_message. Ниже приведен пример кода:

```python
import telebot

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

@bot.message_handler(func=lambda message: True)
def handle_message(message):
    if message.text == "Эверест":
        bot.delete_message(message.chat.id, message.message_id)

        # Отправляем новое сообщение с ссылкой
        bot.send_message(message.chat.id, "Новое сообщение с ссылкой")

bot.polling()
```

Чтобы настроить бота так, чтобы он удалял только сообщения, сгенерированные кнопками, вы можете добавить проверку на тип сообщения в функции обработчика сообщений. В данном случае, если сообщение было отправлено кнопкой, то у него будет заполнено поле callback_query. Пример кода:

```python
@bot.message_handler(func=lambda message: True)
def handle_message(message):
    if message.text == "Эверест":
        bot.delete_message(message.chat.id, message.message_id)

@bot.callback_query_handler(func=lambda call: True)
def handle_button(call):
    # Ваша логика обработки нажатия кнопки
    bot.delete_message(call.message.chat.id, call.message.message_id)
    bot.send_message(call.message.chat.id, "Новое сообщение с ссылкой")

bot.polling()
```

Таким образом, если сообщение было отправлено кнопкой, оно будет удалено, а затем отправлено новое сообщение с ссылкой.
Похожие вопросы