Tengo este proyecto de bot, por lo que básicamente el bot le mostrará cuánto servidor tiene y cuántos miembros hay en ese servidor en el que se encuentra actualmente. ¿Hay alguna manera de solucionar esto ya que siempre muestra 1 usuario (que soy yo? probablemente) mientras tanto, hay como 400 personas en el servidor en el que estoy.
Aquí está mi código:
const { MessageEmbed } = require("discord.js") module.exports = async bot => { console.log(`${bot.user.username} is now online!`) var activities = [ `${bot.guilds.cache.size} servers`, `${bot.users.cache.forEach(guild)} users!` ], i = 0; setInterval(() => bot.user.setActivity(`${PREFIX}help | ${activities[i++ % activities.length]}`, { type: "WATCHING" }),5000) };Podría intentar usar <Guild>.memberCount . El problema es que su código actualmente solo captura a los usuarios almacenados en caché, que aparentemente es solo uno.
Editar: Aquí, según lo solicitado, un ejemplo de código:
const { MessageEmbed } = require('discord.js'); module.exports = async bot => { console.log(`${bot.user.username} is now online!`); let counter = 0; bot.guilds.cache.forEach(guild => { counter += guild.memberCount; }); const activities = [`${bot.guilds.cache.size} servers`, `${counter} users!` ], i = 0; setInterval(() => bot.user.setActivity(`${PREFIX}help | ${activities[i++ % activities.length]}`, { type: 'WATCHING' }),120_000); } Hice algunos cambios más pequeños... en general, no use var , use let o const . Además, no debería cambiar su estado cada 5 segundos, ya que eso se considera spam de API. Cambié su intervalo a 5 minutos, lo cual es más razonable (pero sigue siendo un número pequeño, si no le importa demasiado, incluso lo configuraría en 10 minutos).