Как полностью очистить чат с помощью команды у telegram бота?

Пишем telegram-бота по финансовой грамотности. Нужно, чтобы при вводе команды /clear все сообщения удалялись. Используем вот этот метод:

@bot.message_handler(content_types=['clear'])
def chatting(message):
    bot.send_message(message.chat.id, message.id)

Однако удаляется лишь одно сообщение, если добавить " - 1 ", или удаляется только одно сообщение, которое отправляет бот.

Вообще реально сделать примерно также, но только чтобы удалялось всё? Без разницы, новые это или старые сообщения, главное чтобы работало.
Заранее спасибо.


Ответы (1 шт):

Автор решения: 1 Mamedov

Для удаления всех сообщений в чате с помощью Telegram бота, вы можете использовать метод bot.delete_message(chat_id, message_id) в цикле для удаления каждого сообщения.

Пример кода:

@bot.message_handler(commands=['clear'])
def clear_chat(message):
    chat_id = message.chat.id
    message_id = message.message_id
    
    # Получаем список всех сообщений в чате
    messages = bot.fetch_all(chat_id)
    
    # Удаляем каждое сообщение
    for m in messages:
        bot.delete_message(chat_id, m.message_id)
    
    # Удаляем сообщение, которое отправил пользователь
    bot.delete_message(chat_id, message_id)

Этот код получает список всех сообщений в чате с помощью метода bot.fetch_all(chat_id), а затем удаляет каждое сообщение в цикле с помощью bot.delete_message(chat_id, message_id). В конце он также удаляет сообщение, которое отправил пользователь.

Обратите внимание, что метод fetch_all может вернуть только ограниченное количество сообщений, поэтому в больших чатах может потребоваться несколько вызовов этого метода с использованием параметра offset.

→ Ссылка