Discord.js presenceUpdate 触发多次

Discord.js presenceUpdate firing multiple times

client.on('presenceUpdate', (oldPresence, newPresence) => {
  if (!newPresence.activities) return false;
  newPresence.activities.forEach(activity => {
    if (activity.type == 'STREAMING') {
      //Do stuff if someone starts a stream
    }

我一直在为我朋友的 Discord 服务器开发一个 Discord 机器人,如果有人开始流式传输,它会自动通知。一切都很好,但昨天发生了一些我无法理解的事情。

一个人开始直播,机器人看到了,所以它发送了一条消息来通知人们。然而,当机器人决定“我要再发送 2 条流已经开始的通知”时,同一个流即将结束。这些通知彼此相隔几分钟。

有人可以帮我解决这个问题吗?我从我的代码中提供了一个小代码片段,用于检查一个人是否开始流式传输。如果用户一直在流式传输,是否有办法阻止机器人发送更多通知?我只希望机器人在有人开始流式传输时通知一次,而不是针对一个特定流多次通知。

presenceUpdate 也会在有人进入免打扰或闲置状态以及切换游戏时发出。

所以您的情况可能是主播闲置并在线,或者切换应用程序更新了他的活动,因此他们的存在。

一个可能的解决方法是拥有一个数据库(或一个临时集合)来跟踪活动的流媒体,这样它每个流只发送一条消息,然后一直等到流停止。