feat: implement rotating activity states for bot presence with customizable options

This commit is contained in:
2025-10-03 14:32:16 -05:00
parent b32d7aef12
commit fc594e8860

View File

@@ -5,22 +5,70 @@ import logger from "../core/lib/logger";
bot.on(Events.ClientReady, () => { bot.on(Events.ClientReady, () => {
logger.info("Ready!"); logger.info("Ready!");
// ✨ ESTADO PERSONALIZADO (como usuarios normales) - RECOMENDADO // 🔄 ACTIVIDADES ROTATIVAS - Cambia cada 15 segundos
bot.user?.setPresence({ const activities = [
activities: [{ {
type: ActivityType.Custom, type: ActivityType.Custom,
name: 'custom', // Este campo es requerido pero no se muestra name: 'custom',
state: '✨ Activo y funcionando' // Este es el texto que se ve como estado state: '✨ Activo y funcionando'
}], },
status: 'online', // online, idle, dnd, invisible {
type: ActivityType.Playing,
name: '🎮 con los comandos'
},
{
type: ActivityType.Watching,
name: `${bot.guilds.cache.size} servidores`
},
{
type: ActivityType.Listening,
name: 'tus mensajes'
}
];
let currentActivity = 0;
// Establecer la primera actividad
bot.user?.setPresence({
activities: [activities[currentActivity]],
status: 'online',
}); });
// Otras opciones que puedes usar: // Rotar actividades cada 15 segundos
setInterval(() => {
currentActivity = (currentActivity + 1) % activities.length;
bot.user?.setPresence({
activities: [activities[currentActivity]],
status: 'online',
});
logger.info(`Actividad cambiada a: ${activities[currentActivity].name || activities[currentActivity].state}`);
}, 15000); // Cambia cada 15 segundos
// Opción 1: Configuración simple con setActivity // ============================================
// bot.user?.setActivity('con los comandos', { type: ActivityType.Playing }); // 📌 ALTERNATIVA: Una sola actividad fija
// ============================================
// Si prefieres una sola actividad sin rotación, descomenta una de estas:
// Opción 2: Ver mensajes (Watching) // ✨ ESTADO PERSONALIZADO (como usuarios normales)
// bot.user?.setPresence({
// activities: [{
// type: ActivityType.Custom,
// name: 'custom',
// state: '✨ Activo y funcionando'
// }],
// status: 'online',
// });
// 🎮 JUGANDO A...
// bot.user?.setPresence({
// activities: [{
// type: ActivityType.Playing,
// name: '🎮 Moderando servidores'
// }],
// status: 'online',
// });
// 👀 VIENDO...
// bot.user?.setPresence({ // bot.user?.setPresence({
// activities: [{ // activities: [{
// name: 'tus mensajes 👀', // name: 'tus mensajes 👀',
@@ -29,25 +77,25 @@ bot.on(Events.ClientReady, () => {
// status: 'online', // status: 'online',
// }); // });
// Para mostrar "Jugando a..." // 🎵 ESCUCHANDO...
// bot.user?.setPresence({ // bot.user?.setPresence({
// activities: [{ name: 'Minecraft', type: ActivityType.Playing }], // activities: [{
// name: 'Spotify',
// type: ActivityType.Listening
// }],
// status: 'online', // status: 'online',
// }); // });
// Para mostrar "Escuchando..." // 🏆 COMPITIENDO EN...
// bot.user?.setPresence({ // bot.user?.setPresence({
// activities: [{ name: 'Spotify', type: ActivityType.Listening }], // activities: [{
// status: 'online', // name: 'Ranked',
// }); // type: ActivityType.Competing
// }],
// Para mostrar "Compitiendo en..."
// bot.user?.setPresence({
// activities: [{ name: 'Ranked', type: ActivityType.Competing }],
// status: 'dnd', // status: 'dnd',
// }); // });
// Para streaming (requiere una URL válida de Twitch/YouTube) // 📺 STREAMING (requiere URL válida de Twitch/YouTube)
// bot.user?.setPresence({ // bot.user?.setPresence({
// activities: [{ // activities: [{
// name: 'Mi Stream', // name: 'Mi Stream',
@@ -57,33 +105,5 @@ bot.on(Events.ClientReady, () => {
// status: 'online', // status: 'online',
// }); // });
// Más ejemplos de estados personalizados con emojis:
// bot.user?.setPresence({
// activities: [{
// type: ActivityType.Custom,
// name: 'custom',
// state: '🚀 Listo para ayudar'
// }],
// status: 'online',
// });
// bot.user?.setPresence({
// activities: [{
// type: ActivityType.Custom,
// name: 'custom',
// state: '💻 Desarrollando features'
// }],
// status: 'dnd',
// });
// bot.user?.setPresence({
// activities: [{
// type: ActivityType.Custom,
// name: 'custom',
// state: '🎮 Moderando servidores'
// }],
// status: 'idle',
// });
logger.info(`Presencia configurada para ${bot.user?.tag}`); logger.info(`Presencia configurada para ${bot.user?.tag}`);
}) })