Tengo un comando que otorga un rol a un usuario si tiene .gg/ en su estado personalizado. No hay registros de errores, pero el bot no otorga el rol a los usuarios que tienen este estado.
client.on('presenceUpdate', async (oldPresence, newPresence) => { const role = newPresence.guild.roles.cache.get('726517660279373986'); const member = newPresence.member; const activities = member.user.presence.activities[0]; if (activities && (activities.state.includes('.gg/') || activities.state.includes('discord.gg/'))) { return newPresence.member.roles.add(role); } else if (member.roles.cache.get(role.id)) { newPresence.member.roles.remove(role); } });Discord presentó Gateway Intents para que los desarrolladores de bots puedan elegir qué eventos recibe su bot en función de los datos que necesita para funcionar. Las intenciones son grupos con nombre de eventos WebSocket predefinidos, que recibirá el cliente discord.js.
Necesita que la intención GUILD_PRESENCE privilegiada esté habilitada para configurar un detector de presenceUpdate funcional funcional.
Puede habilitarlo yendo al Portal de desarrolladores de Discord > Su aplicación > Bot > (Desplácese hacia abajo y localice las intenciones privilegiadas) > Activar la intención de presencia.
Esto es lo que estarías buscando: 