【问题标题】:Discord.py delete all messages except pin messagesDiscord.py 删除除 pin 消息之外的所有消息
【发布时间】:2019-05-07 16:58:48
【问题描述】:

目前我的不和谐机器人有一个功能,当一个人输入 !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.x bots discord discord.py


    【解决方案1】:

    您可以使用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)
    

    【讨论】:

      【解决方案2】:

      或者你可以使用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)
      

      【讨论】:

      • 太棒了,谢谢!
      猜你喜欢
      • 1970-01-01
      • 2018-06-29
      • 1970-01-01
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-21
      • 2021-12-16
      相关资源
      最近更新 更多