Ir al contenido

Actualizar el estado del bot

El framework proporciona un StatusManager que rota automáticamente los estados de presencia de tu bot. Se configura a través de zumito.config.ts, que es cargado por el launcher del framework.

  1. Crea un archivo de opciones de estado

    Crea src/config/StatusOptions.ts:

    import { ActivityType } from "zumito-framework/discord";
    import type { StatusManagerOptions } from "zumito-framework";
    export const statusOptions: StatusManagerOptions = {
    statuses: [{
    status: 'online',
    activities: [{
    name: 'z-help',
    type: ActivityType.Playing
    }]
    }],
    RuledStatuses: [],
    updateInterval: 15000,
    order: "sequential"
    };
  2. Pásalo a zumito.config.ts

    zumito.config.ts
    import type { LauncherConfig } from 'zumito-framework';
    import { statusOptions } from './src/config/StatusOptions.js';
    export const config: LauncherConfig = {
    statusOptions: statusOptions,
    // ... bundles, discordClientOptions, etc.
    };
CampoTipoRequeridoDescripción
statusesPresenceData[]Lista de estados que el bot irá rotando.
RuledStatusesRuledPresenceData[]NoEstados condicionales por fecha (ej. festivos).
updateIntervalnumberNoCada cuántos ms el bot cambia de estado. Si se omite, rota una vez al iniciar pero no se repite.
order"sequential" | "random"NoOrden de rotación. Por defecto secuencial.
CampoTipoDescripción
status'online' | 'dnd' | 'idle' | 'invisible'Estado de presencia en Discord.
activitiesActivitiesOptions[]Array de actividades a mostrar.

Una actividad tiene:

CampoTipoDescripción
namestringTexto mostrado (ej. Jugando a z-help).
typeActivityTypeActivityType.Playing, ActivityType.Watching, ActivityType.Listening, ActivityType.Streaming, ActivityType.Competing.

Estados con reglas de fecha — solo se activan dentro de un rango temporal:

RuledStatuses: [{
status: 'online',
activities: [{
name: 'Evento de Halloween!',
type: ActivityType.Playing
}],
rules: [{
startTime: new Date('2026-10-25'),
endTime: new Date('2026-11-01')
}]
}]
Campo de reglaTipoDescripción
startTimeDateEl estado se activa después de esta fecha.
endTimeDateEl estado se desactiva después de esta fecha.
statuses: [
{
status: 'online',
activities: [{ name: 'con fuego', type: ActivityType.Playing }]
},
{
status: 'dnd',
activities: [{ name: 'la documentación', type: ActivityType.Watching }]
},
{
status: 'idle',
activities: [{ name: 'lofi beats', type: ActivityType.Listening }]
}
],
updateInterval: 20000,
order: "sequential"

El bot rota por cada estado cada 20 segundos, en orden.

order: "random",
updateInterval: 30000

El bot elige un estado aleatorio de la lista cada 30 segundos.

statuses: [{
status: 'online',
activities: [{
name: 'Programando con Zumito',
type: ActivityType.Streaming,
url: 'https://twitch.tv/tucanal'
}]
}]

También puedes actualizar el estado programáticamente desde tus módulos:

import { ServiceContainer } from 'zumito-framework';
import { ZumitoFramework } from 'zumito-framework';
const framework = ServiceContainer.get(ZumitoFramework);
framework.statusManager?.setStatus({
status: 'dnd',
activities: [{ name: 'en mantenimiento...', type: ActivityType.Playing }]
});

El evento statusChanged se dispara cada vez que la presencia cambia:

framework.eventEmitter.on('statusChanged', (presenceData) => {
console.log('El estado del bot cambió a:', presenceData);
});
  1. El launcher (node_modules/zumito-framework/dist/launcher.js) carga tu zumito.config.ts.
  2. Fusiona tu configuración con los defaults del framework y la pasa a ZumitoFramework.
  3. Durante la inicialización, si statusOptions está definido, se crea un StatusManager.
  4. En el evento ready de Discord, el primer estado se establece inmediatamente.
  5. Si updateInterval está configurado, el estado rota en un temporizador.
  6. Los RuledStatuses se filtran por sus reglas de fecha — solo los activos se incluyen en la rotación.