我正在尝试创建一个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));
}
如果我假设这一行是一个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
是在变量被你的请求中的数据填充之前发生的。
之所以出现这个问题是因为 activities
返回一个数组 Activity
所以你可以在数组中循环,或者你可以使用 activities[0]
我想明白了:只要用
member.user.presence.activities
那就好办了。