我正在尝试创建一个可以检测到何时删除消息的机器人,并将消息发送到与消息内容相同的通道。
即使消息不在漫游器的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
参数,因为此代码段是齿轮的一部分)
@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)
,但出现相同的错误
答案 0 :(得分:1)
您可以为此使用payload.cached_message
。
但是问题是,如果已删除的消息是在漫游器处于脱机状态时发送的,则它返回None
,如果漫游器看不到频道,我想也是一样的。如果您的漫游器可以不间断运行,那就没有问题。
所以您可以简单地做:
@commands.Cog.listener()
async def on_raw_message_delete(self, payload):
message = payload.cached_message
channel = message.channel
await channel.send(f'Message deleted with content: {message.content}')