不和谐返回指定用户的活动状态

时间:2019-04-06 07:39:11

标签: bots discord discord.js

我正在尝试创建一个机器人,该机器人检查服务器用户的活动状态并返回他们。我在从用户那里检索活动状态时遇到了麻烦,我什至不知道是否可能。

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);

1 个答案:

答案 0 :(得分:1)

首先,我对机器人所在的所有公会进行了 for循环。在此循环中,我遍历所有guildMembers 。我将每个guildMember的状态放入新数组中,并在循环结束时添加到对象中。 也许这听起来确实很复杂,但是如果您了解 Javascript的基础,并不是很复杂。

(我不确定您是否想要用户状态(在线/离线/ dnd / idle )或游戏状态。是否想要游戏状态,将 status.push(m.user.presence.status) 行更改为 status.push(m.user.presence.game)

尝试使用以下代码:

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);