即使在不和谐中明确检查历史记录后仍重复消息
Posted
技术标签:
【中文标题】即使在不和谐中明确检查历史记录后仍重复消息【英文标题】:Repeating messages even after explicitly checking for history in discord 【发布时间】:2022-01-23 21:20:21 【问题描述】:我正在尝试制作一个不和谐的机器人,并且我添加了在 24 小时后使用 tasks.loop
以 24 小时(64800 秒)为间隔重复的任务的功能。由于代码是在 repl.it 上运行的,我使用uptimerobot 在 5 分钟后连续发送 ping 以使其始终在 repl.it 中运行。我的问题是,即使在查看频道中的历史记录后,消息也会再次发送,如下图所示。 (通过在这里检查,我的意思是解释是 API 附带的解释)。我在这里使用 NASA api。
def get_APOD():
image = requests.get("https://api.nasa.gov/planetary/apod?api_key="+apod)
json_data = json.loads(image.text)
description = json_data["url"]
explanation = "'" + json_data["explanation"]+ "'"
title = json_data["title"]
return description,explanation,title
@client.event
async def on_ready():
print('We have logged in as 0.user'.format(client))
send_message.start()
@tasks.loop(seconds=64800.0)
async def send_message():
channel = client.get_channel(int(apod_channel))
messages = await channel.history(limit=1).flatten()
description,explanation,title = get_APOD()
if messages[0].content == explanation:
print("Its the same")
else:
await channel.send(description)
await channel.send(title)
await channel.send(explanation)
在这里您可以看到消息重复了两次。我在这里写的代码不应该这样。因为它会检查频道中的历史记录。
但是,当我重新启动 repl.it IDE 时,代码将正常运行并打印“It's the same”,如果消息已发送但否则它会失败。
这里有什么问题?感谢任何帮助。
【问题讨论】:
也许您同时使用了 repl.it 和 IDLE?我唯一确定的是命令触发一次但执行两次,反之亦然。 不,实际上 repl.it 是我的 IDLE。我没有使用任何其他环境。 【参考方案1】:这是Repeating messages even after explicitly checking for history in discord的副本
请不要发布两次相同的问题
【讨论】:
以上是关于即使在不和谐中明确检查历史记录后仍重复消息的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET SignalR 与LayIM配合,轻松实现网站客服聊天室 补充:历史记录 和 消息提醒