Bots 不一致返回指定的用户';s的活动状态

Bots 不一致返回指定的用户';s的活动状态,bots,discord,discord.js,Bots,Discord,Discord.js,我正在尝试创建一个bot来检查服务器用户的活动状态并返回他们。实际上,我很难从用户那里检索到活动状态,我甚至不知道这是否可行 const Discord = require('discord.js'); const client = new Discord.Client(); const token ='nah'; const PREFIX = '//'; function Statuscheck() { ///Code for retrieval of the status check

我正在尝试创建一个bot来检查服务器用户的活动状态并返回他们。实际上,我很难从用户那里检索到活动状态,我甚至不知道这是否可行

const Discord = require('discord.js');
const client = new Discord.Client();
const token ='nah';
const PREFIX = '//';
function Statuscheck() {
    ///Code for retrieval of the status check would go here
    console.log('set');///So I know the timer works
}


client.on('ready', () =>{
    console.log('Bot is running...');
})

client.on('ready', () =>{
    setInterval(Statuscheck, 10000)//runs the check funtion evrey 10s to keep up to date
})

client.login(token);

首先,我对所有启用机器人的行会进行for循环。在这个循环中,我通过所有行会成员执行另一个循环。我推送新数组中每一个对象的状态,并将其添加到循环末尾的对象中。 也许这听起来很复杂,但如果您了解Javascript的基础知识,就不会太复杂了

(我不确定您想要的是用户状态(在线/离线/dnd/idle)还是游戏状态。如果您想要游戏状态,请更改行
状态。推送(m.user.presence.status)
状态。推送(m.user.presence.game)

尝试使用以下代码:


你好。是的,我正在尝试获取活动状态(在线、空闲和离线),这无疑是朝着正确方向迈出的一大步。当我运行你的代码时,我得到了这个错误。我会调查一下的,但我已经很久没写代码了。前面提到了一个类似的问题,它返回每个用户的基本信息以及他们的活动状态。我需要指定要监视的用户是否可以使用此选项?如果没有,我可以用你给我的东西工作。:)很抱歉发生了这个问题,您能告诉我index.js中的第26行是哪一行,这样我就知道我应该在哪里查找问题了吗?:)谢谢@我们已经通过更改
setInterval(等待状态检查(客户端),10000)对回调错误进行了排序
设置间隔(()=>状态检查(客户端),10000)。我已经解决了这个问题,但是我还有很多其他的问题,我不知道如何解决,所以我要回答我的问题,打开一个新的来解决这个问题。(不客气!)介意接受我的回答吗@巴贝
const Discord = require('discord.js');
const client = new Discord.Client();
const token = 'nah';
const PREFIX = '//';

async function statuscheck() {
    const statusArray = {};
    await client.guilds.array().forEach(async g => {
        const status = [];
        await g.members.array().forEach(m => {
            status.push(m.user.presence.status);
        });
        statusArray[g.id] = status;
    });
    console.log('set'); // /So I know the timer works
    return statusArray;
}


client.on('ready', () => {
    console.log('Bot is running...');
});

client.on('ready', async client => {
    setInterval(await statuscheck(client), 10000); // runs the check funtion evrey 10s to keep up to date
});

client.login(token);