僵尸无法识别消息在初始发送后约5秒后被删除(服务器消息删除)。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了僵尸无法识别消息在初始发送后约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天前的消息。如果这是一个选项

答案

使用下面的事件可能会有一些帮助,因为它不需要消息在缓存中。

@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(...

引用:

另一答案
@commands.Cog.listener()
    async def on_message_delete(self, c):
        if(c.guild):
            if c.guild.name == "Sniper's lounge":
                if c.author.bot == True:
                    print(f"Bot: {c.author} deleted --- {c.clean_content} --- in #{c.channel.name}");
                    pass;
                else:
                    print(f"User: {c.author} deleted --- {c.clean_content} --- in #{c.channel.name}");
                    pass;
            elif c.guild.name == "New GAR":
                if c.author.bot == True:
                    print(f"Bot: {c.author} deleted --- {c.clean_content} --- in #{c.channel.name}");
                    pass;
                else:
                    print(f"User: {c.author} deleted --- {c.clean_content} --- in #{c.channel.name}");
                    pass;
        else:
            pass;

以上是关于僵尸无法识别消息在初始发送后约5秒后被删除(服务器消息删除)。的主要内容,如果未能解决你的问题,请参考以下文章

头大了,Mysql写入数据十几秒后被自动删除了

js实现每次程序发送一个数据 ,多次发送不一样,5秒后继续执行多次程序,判断如果五秒后发送过来的数据和上次不一样,少的删除多的增加

Azure 服务总线 PeekLock 在五秒后超时

删除项目后的僵尸heroku进程?

发送后 10 秒使用 JDA 删除消息

一条 Objective-C 消息被发送到一个已释放的“NSThread”对象(僵尸),地址为: