Глядя на их документы , logs_from
выбирает канал вместе с дополнительными аргументами, позволяющими фильтровать сообщения для извлечения.
Так что, если вы просто хотите удалить все сообщения,Вы можете сделать что-то вроде
async def on_message(message):
NONSENSE_LIMIT = 999999999999
if message.content.startswith('!delete'):
async for log in client.logs_from(message.channel, limit=NONSENSE_LIMIT):
if log.author == message.author:
await client.delete_message(log)
, что приведет к удалению всех сообщений для пользователя, который вводит эту команду.Ваш бот должен иметь разрешение manage messages
для этого канала.
Обратите внимание, что количество возвращаемых сообщений ограничено, и здесь я просто записываю некоторые произвольные бессмысленные ограничения.Если вы хотите быть точным, вам нужно как-то выяснить, сколько сообщений в канале, а затем использовать это в качестве ограничения.
Я только что посмотрел Discord API за последние 5 минут, поэтому яне знаю, есть ли более эффективный способ сделать это.