【发布时间】:2021-01-21 07:40:30
【问题描述】:
我正在尝试制作一个机器人来检测消息何时被删除,并将消息发送到与消息内容相同的频道。
即使消息不在机器人的cached_messages 中,我也希望能够执行此操作,因此我使用的是on_raw_message_delete(payload)。
我的问题是,当尝试使用await channel.fetch_message(payload.message_id) 从频道获取消息时,我收到以下错误:discord.errors.NotFound: 404 Not Found (error code: 10008): Unknown Message
我认为这是因为消息已经从频道中消失了,但我不知道我还能如何从消息中获取内容或其他任何内容。
这是我的代码(请注意,我有一个 self 参数,因为这个 sn-p 是 cog 的一部分)
@commands.Cog.listener()
async def on_raw_message_delete(self, payload):
channel = self.bot.get_channel(payload.channel_id)
message = await channel.fetch_message(payload.message_id)
channel.send(f'Message deleted with content: {message.content}')
我也试过channel = await self.bot.fetch_channel(payload.channel_id),但我得到了同样的错误
【问题讨论】:
-
消息丢失。您需要缓存它以检索其内容。机器人在
on_raw_message_delete上看到的所有内容都是discordpy.readthedocs.io/en/latest/…,但是缓存每条可能被删除的消息并不是一种合适的方法。 -
@TinNguyen 那么有没有合适的方法,还是只是不可行?
-
如果您事先知道哪些邮件可能会被删除,您可以缓存它们。但是只缓存每条消息是不可行的。
标签: python-3.x discord discord.py discord.py-rewrite