Отчистка чата телеграмм бот aiogram
Пожалуйста помогите сделать то что после команды /clear отчищался весь чат
Источник: Stack Overflow на русском
Пожалуйста помогите сделать то что после команды /clear отчищался весь чат
В Telegram есть ограничение, которое не позволяет ботам напрямую удалять историю чата. Можно через сохранения id сообщений, которые необходимо удалить, в базу данных. Затем бот может удалить сообщения через цикл запросов.
Пример удаления всех сообщений, через цикл (aiogram 3.x):
from aiogram.exceptions import TelegramBadRequest
@router.message(Command("clear"))
async def cmd_clear(message: Message, bot: Bot) -> None:
try:
# Все сообщения, начиная с текущего и до первого (message_id = 0)
for i in range(message.message_id, 0, -1):
await bot.delete_message(message.from_user.id, i)
except TelegramBadRequest as ex:
# Если сообщение не найдено (уже удалено или не существует),
# код ошибки будет "Bad Request: message to delete not found"
if ex.message == "Bad Request: message to delete not found":
print("Все сообщения удалены")
id
всех отправляемых/получаемых сообщений/clear
, который будет брать id
сообщений из БД и удалять их с помощью bot.delete_message(message_id)
но имейте ввиду, что:
can_post_messages
разрешения, могут удалять исходящие сообщения в каналах.can_delete_messages
в супергруппе или канале, он может удалить там любое сообщение.(взято из документации)