【问题标题】:Game of every user undefined, even if it should not be每个用户的游戏未定义,即使它不应该是
【发布时间】:2020-08-08 09:32:33
【问题描述】:

我正在尝试创建一个 Discord 机器人,它会检查用户正在玩的游戏并自动分配合适的角色。目前,我仍在研究如何为用户获取游戏。我设法获得了服务器上所有用户的列表,但它总是说游戏未定义,即使对于当前正在玩游戏并在不和谐中显示它的人也是如此。我不确定到底是什么问题,因为我对 JavaScript 很陌生。

我当前的代码:

client.on('ready', () =>{
    getAllUsersGames();
});

function getAllUsersGames(){
    
    var server = client.guilds.cache.get("Server-Id"); 

    var memberList = server.members;  
    memberList.cache.forEach(member => console.log(member.user.username + " - " + member.user.presence.activities.name));
}

【问题讨论】:

  • 具体是哪一部分说undefined?
  • 请分享一些关于memberList应该是什么样子的示例数据
  • paul5.0 - undefined online509 - undefined Terrifix - undefined 57 - undefined D3SERT - undefined 等等。用户名没问题,但我就是无法让游戏正常运行。
  • @LearningEveryday 本质上是一个成员对象的列表,里面包含了用户名等匹配的属性。

标签: javascript node.js bots discord discord.js


【解决方案1】:

我想通了:只需使用

member.user.presence.activities

这样就好了。

【讨论】:

    【解决方案2】:

    您遇到此问题的原因是因为 activities 返回一个 Activity 数组,因此您可以循环访问该数组,也可以使用 activities[0] 获取第一个活动

    【讨论】:

      【解决方案3】:

      如果我假设这一行是一个 http GET 请求 var server = client.guilds.cache.get("Server-Id"); 那么你必须使用async函数和await这个请求。

      async function getAllUsersGames(){
      
          var server = await client.guilds.cache.get("Server-Id"); 
      
          var memberList = server.members;  
          memberList.cache.forEach(member => console.log(member.user.username + " - " + member.user.presence.activities.name));
      }
      

      您未定义的原因是console.log 发生在变量被您请求中的数据填充之前。

      【讨论】:

      • 嗯,听起来似乎有道理,但我仍然无法为每个用户定义。我的代码中是否还有其他错误?
      • 我不熟悉discord API,但我可能会调试并单步调试我的代码,尝试console.log(member) 如果member === undefined 然后问题在上面,如果它已定义,那么问题将尝试访问未定义键中的值。
      • 它不能是未定义的成员,因为用户名就像一个魅力。但我认为他们改变了游戏信息的工作方式,因为在所有帖子中我都可以发现他们正在使用 member.users.game。然而,在文档中没有提到用户中名为 game 的游戏属性。
      猜你喜欢
      • 2021-09-11
      • 2022-09-22
      • 1970-01-01
      • 1970-01-01
      • 2019-07-12
      • 2013-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多