“user.setStatus”不更新机器人的状态 Discord.JS

时间:2021-02-03 15:42:22

标签: javascript node.js discord discord.js gamedig

我希望当检测到游戏服务器离线时,状态变为橙色(idle),而当服务器在线时,状态变为绿色(online)。

为此,我使用了 client.user.setStatus('online')client.user.setStatus('idle'),但状态没有改变,只有消息更新了。

这是我的代码:

client.on('ready', () => {
  console.log('OK')

  setInterval(() => {
    Gamedig.query({
      type: 'garrysmod',
      host: 'xx.xx.xx.xx',
      port: '27015'
    })
      .then((updatedState) => {
        state = updatedState;

        const nb_joueursmax = state.maxplayers;
        const nb_joueurs = state.players.length;
        
        client.user.setStatus('online');
        client.user.setActivity(`${nb_joueurs}/${nb_joueursmax} Joueurs`);  
      })
      .catch((e) => {
        console.log(e);
        client.user.setStatus('idle');
        client.user.setActivity('Serveur Hors Ligne');
      });
  }, 6000);
});

我试过这个,但它不起作用。只更新消息,不更新状态...

1 个答案:

答案 0 :(得分:2)

似乎没有错误,它应该可以正常工作,可能只是反应/更新很慢。您还可以使用 setPresence 通过单个命令更新状态和活动:

client.on('ready', () => {
  console.log('OK');

  setInterval(() => {
    Gamedig.query({
      type: 'garrysmod',
      host: 'xx.xx.xx.xx',
      port: '27015',
    })
      .then((updatedState) => {
        state = updatedState;

        const nb_joueursmax = state.maxplayers;
        const nb_joueurs = state.players.length;

        client.user.setPresence({
          activity: { name: `${nb_joueurs}/${nb_joueursmax} Joueurs` },
          status: 'online',
        });
      })
      .catch((e) => {
        console.log(e);
        client.user.setPresence({
          activity: { name: 'Serveur Hors Ligne' },
          status: 'idle',
        });
      });
  }, 6000);
});