首页 > 解决方案 > Discord.py 删除除 pin 消息之外的所有消息

问题描述

目前我的不和谐机器人有一个功能,当一个人输入 !delete 时,它​​会删除频道中的大部分文本。但是,它会删除所有消息,包括固定的消息。如何增强我的代码以使其不会删除 pin 消息?

if message.content.startswith('!delete'):
   tmp = await client.send_message(message.channel, 'Clearing messages...')
   async for msg in client.logs_from(message.channel):
     await client.delete_message(msg)

标签: python-3.xbotsdiscorddiscord.py

解决方案


或者您可以使用purge_from函数和使用check参数仅删除非固定消息。

dicord.py:

if message.content.startswith('!delete'):
    await client.purge_from(channel, limit=None, check=lambda msg: not msg.pinned)

discord.py 重写:

if message.content.startswith('!delete'):
    await channe.purge(limit=None, check=lambda msg: not msg.pinned)

推荐阅读