discord py - 在多个服务器上删除具有相同内容的消息(原始删除)
Posted
技术标签:
【中文标题】discord py - 在多个服务器上删除具有相同内容的消息(原始删除)【英文标题】:discord py - Delete a message with same content on multiple servers (raw delete) 【发布时间】:2021-04-09 01:59:05 【问题描述】:我正在编写一个全球聊天不和谐机器人(如this)
全局聊天是一个机器人,它与所有其他服务器共享来自特定频道的频道消息,使用该机器人并设置一个频道。如果用户在此频道中写了一条消息,机器人会以完全相同的消息布局将其发布到所有其他服务器上。
像这样的全球聊天需要良好的审核功能,例如快速轻松地删除消息。
现在这是我的问题:我想使用 on_raw_message_delete
事件,如果来自 global-bot 的版主在没有命令但使用 Discord 功能本身的情况下删除了频道消息,就会发生这种情况。
当用户删除一条不和谐的消息时,如何在所有其他服务器上删除完全相同的消息? 我认为我必须将消息保存在数据库中并且必须使用相似性检查,但我没有计划如何做到这一点。我真的需要帮助,我尽力了几天但不知道。我想要代码函数。
【问题讨论】:
【参考方案1】:我会创建一个字典,键是用户制作的消息,值是您的机器人将发送到其他服务器的消息列表。
这样,当用户删除一条消息时,您可以在 on_raw_message_delete
方法中捕获该事件,获取已删除消息的 id,并在您的 dict 中获取该消息的值。
完成的代码可能如下所示:
messages =
async def on_message(self, message):
self.messages[message.id] = [await chan.send(message.content) for chan in linked_channels]
async def on_raw_message_delete(self, payload):
for msg in self.messages[payload.message_id]:
await msg.delete()
【讨论】:
以上是关于discord py - 在多个服务器上删除具有相同内容的消息(原始删除)的主要内容,如果未能解决你的问题,请参考以下文章