Установите Discord Bot Activity на количество пользователей онлайн. Раздор. js - PullRequest
1 голос
/ 03 мая 2020

Я хочу, чтобы статус ботов отображал количество людей, которые в данный момент находятся в сети. Я пытался с этим кодом, но он продолжает говорить:

TypeError: client.guilds.get не является функцией

//Checks if the bot is online
client.once('ready', () => {
  console.log(`Logged in as ${client.user.tag}!`);

  //Activity
  var guild = client.guilds.get('id here');
  var onlineCount = guild.membersCount.filter(m => m.presence.status === 'online').size
    client.user.setActivity('games with ' + onlineCount + ' people' , { type: 'PLAYING' });
});

Ответы [ 2 ]

1 голос
/ 03 мая 2020

После разногласий. js v12 теперь вам нужно использовать свойство cache для доступа к коллекции guilds, поэтому вам нужно заменить var guild = client.guilds.get('id here'); на var guild = client.guilds.cache.get('id here');


Не имеет отношения к вопросу : Вы получаете guild s memberCount и фильтруете его, чтобы получить количество онлайн-пользователей в этой гильдии, проблема в том, что memberCount возвращает number, а не коллекцию GuildMember с, вместо этого вам нужно использовать свойство members, которое необходимо использовать для доступа к этой коллекции cache снова:

var onlineCount = guild.members.cache.filter(m => m.presence.status === 'online').size
0 голосов
/ 03 мая 2020

Вот готовый продукт

setInterval(() => { 
   var guild = client.guilds.cache.get('insert server id');
   var onlineCount = guild.members.cache.filter(m => m.presence.status !== 'offline').size
   client.user.setActivity('with ' + (onlineCount-1) + ' people?' , { type: 'PLAYING' });
}, 10000); //Runs every 10 seconds.

-1 означает, что бот не считает себя :)

...