Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Bot状态临时更改_Javascript_Discord_Discord.js - Fatal编程技术网

Javascript Bot状态临时更改

Javascript Bot状态临时更改,javascript,discord,discord.js,Javascript,Discord,Discord.js,我有PresenceUpdate设置,所以当特定用户流传输机器人状态更新时,它会在频道中宣布。它确实宣布了,并且工作正常,但是机器人状态似乎只改变了约20秒,然后它就会回到默认状态 我已尝试使用以下方法修复它: For循环 While循环 递归函数 有人能帮我解决这个问题吗?这是我的密码: client.on("presenceUpdate", (oldPresence, newPresence) => { let announcement = "An

我有PresenceUpdate设置,所以当特定用户流传输机器人状态更新时,它会在频道中宣布。它确实宣布了,并且工作正常,但是机器人状态似乎只改变了约20秒,然后它就会回到默认状态

我已尝试使用以下方法修复它:

  • For循环
  • While循环
  • 递归函数
有人能帮我解决这个问题吗?这是我的密码:

client.on("presenceUpdate", (oldPresence, newPresence) => {
  let announcement = "Announcement Message";
  if (!newPresence.activities) return false;
  newPresence.activities.forEach(activity => {
      if (activity.type == "STREAMING") {
        if(newPresence.user.id == "ID OF USER STREAMING") {
          console.log(`${newPresence.user.tag} is streaming at ${activity.url}.`);
          client.channels.cache.get("My Channel ID").send(announcement);
          client.user.setActivity("to the server", { type: "STREAMING",  url: "Twitch Link"});
       };
      };
  });
});

编辑:好的,所以我设法通过删除部分来修复它,如果他们不流式处理,状态将返回默认状态。然而,现在即使用户不再使用流媒体,它仍然停留在流媒体上。我如何解决这个问题?代码也已更新。

您可以将流媒体用户的id存储在某个位置,然后在状态更新时检查是否是同一用户

以下是一个例子:

if(client.streamingUserID!==undefined&&client.streamingUserID!==newPresence.user.id)返回;
newPresence.activities.forEach(activity=>{
如果(activity.type==“流媒体”){
如果(newPresence.user.id==“用户流的id”){
log(`${newPresence.user.tag}正在${activity.url}处进行流式处理);
client.channels.cache.get(“我的频道ID”).send(公告);
client.user.setActivity(“到服务器,{type:“流”,url:“Twitch Link”});
client.streamingUserID=newPresence.user.id;
}; 
}否则{
//将活动设置回默认值,然后
删除client.streamingUserID;
}
});

第一个if语句中出现错误,我必须更改
===
==。现在我只是在等待拖缆上线,看看它是否有效。我会尽快给你更新。@JustCVhilling-woops抱歉,这里的小错误^^它不起作用,状态现在消失了,没有设置为流媒体模式或任何东西。我只想能够有它的流模式,当用户停止流它停止too@JustCVhilling实际上,我想知道你为什么要使用forEach循环?为什么不抓紧第一个活动,做你的事情呢?顺便说一句,我可能在上一次编辑中添加了一个修复程序。最近我问了一个问题来更新presenceupdate的代码。您可以在我的页面上找到它,如果有更好的方法来检测特定用户,而不是我必须使用forEach循环,那么这就是我使用的代码。