Discord.py删除除固定消息外的所有消息

时间:2018-12-06 02:53:27

标签: python-3.x bots discord discord.py

当前,当有人键入!delete时,我的discord机器人具有一项功能,它会删除频道中的大多数文本。但是,它将删除所有消息,包括固定的消息。如何增强我的代码,使其不删除固定消息?

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)

2 个答案:

答案 0 :(得分:0)

您可以使用message.pinned检查消息是否固定。

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

答案 1 :(得分:0)

或者您可以使用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-rewrite:

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