即使在不和谐中明确检查历史记录后仍重复消息

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配合,轻松实现网站客服聊天室 补充:历史记录 和 消息提醒

如何同时获取多个频道历史记录?

如何在不丢失历史记录的情况下从 SVN 存储库中删除***目录?

如何在不更改浏览器历史记录的情况下更改 url

Git 可以在不丢失历史记录的情况下重组我的文件夹吗?