我希望当检测到游戏服务器离线时,状态变为橙色(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);
});
我试过这个,但它不起作用。只更新消息,不更新状态...
答案 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);
});