python - 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(...
参考:
推荐阅读
- async-await - ServiceStack:“HostContext.AppHost.ExecuteMessage”的异步版本?
- java - 使用 Apache Ignite 重新部署 JBoss WAR 时,无法编组自定义事件:StartRoutineDiscoveryMessage
- python - 使用递归 bsearch 在列表中查找最大值的时间复杂度
- javascript - D3.js 放大面积图,如果 y 域取负值,则行为怪异
- kubectl - 使用 kubectl 重启 helm pod
- python - 正确解释 statsmodels.tsa.ar_models.ar_select_order 函数数组以确定最佳滞后
- javascript - Angular 8 Rxjs distinctUntilChanged 运算符
- mysql - 在 MySQL 中的两个表中的请求
- c - C 插入数组指针
- python - 使用未声明的标识符“NUMPY_IMPORT_ARRAY_RETVAL”返回 NUMPY_IMPORT_ARRAY_RETVAL;