Действительно простой способ сделать это в новых версиях discord.py, вероятно, будет выглядеть примерно так:
@client.event
async def on_message(message):
if '-clear all' in message.content and message.author.permissions_in(message.channel).manage_messages:
deleted = await message.channel.purge(limit=10000, check=is_not_pinned)
await message.channel.send('All messages deleted.'.format(deleted))
await client.process_commands(message)
Вы также можете использовать для этого обычную команду, поэтому вам не понадобится await client.process_commands(message)
, но функция, которая вам нужна, по-прежнему будет await message.channel.purge(limit=amount, check=is_not_pinned)
Таким образом, только люди с разрешением на управление сообщениями смогут использовать эту команду, и она не будет удалять закрепленные сообщения.
Вы можете установить сумму равной невероятно большое число, поэтому он просто удалит почти все, если не все. Я пробовал его только около 300, и он работал отлично (хотя может занять некоторое время).