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.
Configuración
Sección titulada «Configuración»-
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"}; -
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.};
Referencia de configuración
Sección titulada «Referencia de configuración»StatusManagerOptions
Sección titulada «StatusManagerOptions»| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
statuses | PresenceData[] | Sí | Lista de estados que el bot irá rotando. |
RuledStatuses | RuledPresenceData[] | No | Estados condicionales por fecha (ej. festivos). |
updateInterval | number | No | Cada cuántos ms el bot cambia de estado. Si se omite, rota una vez al iniciar pero no se repite. |
order | "sequential" | "random" | No | Orden de rotación. Por defecto secuencial. |
PresenceData (por cada estado)
Sección titulada «PresenceData (por cada estado)»| Campo | Tipo | Descripción |
|---|---|---|
status | 'online' | 'dnd' | 'idle' | 'invisible' | Estado de presencia en Discord. |
activities | ActivitiesOptions[] | Array de actividades a mostrar. |
Una actividad tiene:
| Campo | Tipo | Descripción |
|---|---|---|
name | string | Texto mostrado (ej. Jugando a z-help). |
type | ActivityType | ActivityType.Playing, ActivityType.Watching, ActivityType.Listening, ActivityType.Streaming, ActivityType.Competing. |
RuledPresenceData (estados por fecha)
Sección titulada «RuledPresenceData (estados por fecha)»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 regla | Tipo | Descripción |
|---|---|---|
startTime | Date | El estado se activa después de esta fecha. |
endTime | Date | El estado se desactiva después de esta fecha. |
Ejemplos
Sección titulada «Ejemplos»Múltiples estados rotativos (secuencial)
Sección titulada «Múltiples estados rotativos (secuencial)»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.
Rotación aleatoria
Sección titulada «Rotación aleatoria»order: "random",updateInterval: 30000El bot elige un estado aleatorio de la lista cada 30 segundos.
Estado de streaming
Sección titulada «Estado de streaming»statuses: [{ status: 'online', activities: [{ name: 'Programando con Zumito', type: ActivityType.Streaming, url: 'https://twitch.tv/tucanal' }]}]Actualización manual del estado
Sección titulada «Actualización manual del estado»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 }]});Escuchar cambios de estado
Sección titulada «Escuchar cambios de estado»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);});Cómo funciona internamente
Sección titulada «Cómo funciona internamente»- El launcher (
node_modules/zumito-framework/dist/launcher.js) carga tuzumito.config.ts. - Fusiona tu configuración con los defaults del framework y la pasa a
ZumitoFramework. - Durante la inicialización, si
statusOptionsestá definido, se crea unStatusManager. - En el evento
readyde Discord, el primer estado se establece inmediatamente. - Si
updateIntervalestá configurado, el estado rota en un temporizador. - Los
RuledStatusesse filtran por sus reglas de fecha — solo los activos se incluyen en la rotación.