disney / discord.py如何在多天后编辑bot嵌入?



我有一个机器人发布消息与嵌入和一些按钮。一段时间后(多达多天),我想改变嵌入和删除按钮的一些文字。这应该在不响应任何事件的情况下发生,而纯粹基于时间戳,这意味着我不会得到引用原始消息的交互对象。

我想原则上我可以使用asyncio.sleep()bot.wait_for(),但我经历过,如果连接在某些时候丢失,即使只是很短的时间,这些都很容易失败。大多数情况下,当时间经过几个小时后,计划的事件将不会触发。有没有办法让它更可靠?

我想到的另一种可能性是在我的DB中记录通道和消息id,然后,一旦时间到了,用bot.get_channel(channel_id)channel.fetch_message(message_id)获取消息并更新它。这对我来说似乎有点变通,所以我想知道是否有一种更直接/优雅的方式来实现这一点?

我使用任何其他公共机器人开发人员在这种情况下使用的解决方案是:

  1. 存储时间戳,以及必要的详细信息,如messageID,channelID,GuildID
  2. 将消息作为Webhook发布,因此我们只需要存储TimeStamp消息id.点击查看messageID如何单独帮助Webhooks (discorpy)

您可以创建一个@tasks.loop()来检查时间戳,然后,您可以根据消息的类型获取消息(使用edit_message(messageID)用于Webhook消息)。

最新更新