每个用户的游戏未定义,即使它不应该是

问题描述 投票:0回答:1

我正在尝试创建一个Discord机器人,它可以检查用户正在玩的游戏并自动分配合适的角色。目前我还在想如何为用户获取游戏。我设法获得了服务器上所有用户的列表,但它总是说未定义的游戏,即使是当前正在玩一款游戏的人,也会在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));
}
javascript node.js bots discord discord.js
1个回答
0
投票

如果我假设这一行是一个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 是在变量被你的请求中的数据填充之前发生的。


0
投票

之所以出现这个问题是因为 activities 返回一个数组 Activity 所以你可以在数组中循环,或者你可以使用 activities[0]


0
投票

我想明白了:只要用

member.user.presence.activities

那就好办了。

© www.soinside.com 2019 - 2024. All rights reserved.