Игра каждого пользователя не определена, даже если она не должна быть - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь создать бота 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));
}

Ответы [ 3 ]

0 голосов
/ 24 апреля 2020

Причина, по которой вы столкнулись с этой проблемой, заключается в том, что activities возвращает массив Activity, чтобы вы могли либо l oop через массив, либо вы могли бы просто получите первое действие, используя activities[0]

0 голосов
/ 24 апреля 2020

Я понял: просто используйте

member.user.presence.activities

Это бы отлично работало.

0 голосов
/ 24 апреля 2020

Если я предполагаю, что эта строка является 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 происходит до того, как переменная заполнена данными из вашего запроса.

...