首页 > 解决方案 > Bot 无法识别消息在初始发送后约 5 秒后被删除(服务器消息删除)

问题描述

我有一个不需要的小功能,如果在初始发送后 5 秒后删除消息,我的机器人无法识别。以下是我记录已删除消息的代码

@commands.Cog.listener()
async def on_message_delete(self, c):
    if(c.guild):
        if c.guild.name == "Server Name":
            if c.author.bot == True:
                print(f"{c.created_at} || Bot: {c.author} deleted --- {c.content} --- in #{c.channel}");
            else:
                print(f"{c.created_at} || User: {c.author} deleted --- {c.content} --- in #{c.channel}");

我知道在文档中有一个名为“max messages”的值与“on_message_delete”相关联。如果没有成功,我无法实施它。我正在寻找服务器范围的日志记录,例如,如果有人从 5 天前删除了一条消息。如果这是一个选项

标签: pythonbotsdiscord.py

解决方案


使用以下事件可能会有所帮助,因为它不需要消息在缓存中:

@commands.Cog.listener()
async def on_raw_message_delete(self, payload):
    if payload.guild_id:
        guild = self.bot.get_guild(payload.guild_id)
        channel = self.bot.get_channel(payload.channel_id)
        message = await channel.fetch_message(payload.message_id)
        if guild.name == "Server Name":
            if message.author.bot: # more pythonic way of checking bools
                print(...
            else:
                print(...

参考:


推荐阅读