【发布时间】:2022-08-06 11:16:59
【问题描述】:
我有一个机器人,它发布带有嵌入和一些按钮的消息。一段时间后(最多多天),我想更改嵌入中的一些文本并删除按钮。这应该在不对任何事件做出反应但纯粹基于时间戳的情况下发生,这意味着我没有得到引用原始消息的交互对象。
我想原则上我可以使用asyncio.sleep() 或bot.wait_for(),但我已经体验到如果连接在某些时候丢失,即使只是很短的时间,这些也很容易失败。大多数情况下,当时间过去几个小时时,计划的事件不会触发。有什么方法可以让这个更可靠吗?
我想到的另一种可能性是在我的数据库中记录频道和消息 ID,然后,一旦时机成熟,使用bot.get_channel(channel_id) 和channel.fetch_message(message_id) 获取消息并更新它。这对我来说似乎是一种解决方法,所以我想知道是否有更直接/优雅的方式来实现这一目标?
-
例如,您可以尝试创建一个任务,例如每 5 秒检查一次消息。有关后台任务的示例,请参阅 here。
-
如果您重新启动机器人,数据(消息)将需要在某个地方供您访问。所以是的,一定要将消息和频道 ID 存储在某处。您需要使用后台任务来确定下一次更新消息的时间(在此之前您可以找到 min 和 asyncio sleep)
标签: python discord.py