Bot无法识别邮件已在初始发送后约5秒钟后删除(删除服务器消息)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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天前删除了一条消息。如果这是一个选项

答案

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

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

参考:

另一答案
Client.get_channel()

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

C# Discord Bot 编码:创建一个发送垃圾邮件的命令,然后用另一个命令停止

文件夹已在另一程序中打开,无法卸载怎么办

Discord bot 发送后删除消息

PHP Mailer:从 gmail 向 yahoo 发送邮件,无法识别代码

Rails 5 mailer Net::SMTPFatalError 发送电子邮件时

在特定角色通道中发送消息几秒钟后,尝试删除通知正在添加角色的消息