Esta guía define el flujo estándar para agregar comandos de chat (Twitch/Discord) de forma coherente con la arquitectura actual.
- Implementar clase de comando en
src/components/<plataforma>/commands. - Registrar el comando en
src/app/Application.js. - Definir regla de cooldown en
config/cooldowns.jsonsi corresponde. - Añadir/actualizar tests.
- Documentar comportamiento y ejemplos de uso.
Ejemplo para Twitch:
- Archivo:
src/components/twitch/commands/PingCommand.js
export class PingCommand {
constructor() {
this.name = 'ping';
this.aliases = ['p'];
}
async execute() {
return 'pong';
}
}Recomendaciones:
- Exponer
nameobligatorio. - Usar
aliasessolo cuando aporten valor real. - Mantener
execute(context)con salida simple (string) y sin side effects innecesarios.
En src/app/Application.js, registrar en el CommandRegistry:
commandRegistry.register(new PingCommand());Agregar regla en config/cooldowns.json:
{
"platforms": {
"twitch": {
"ping": {
"enabled": true,
"seconds": 5,
"scope": "user_channel"
}
}
}
}Scopes disponibles:
user_channelchanneluser_globalglobal
- Test de unidad del comando (respuesta base y validaciones).
- Test de integración con
CommandRegistrycuando use cooldown. - Test de borde para inputs inválidos.
Referencia de suite de cooldown:
npm test -- test/cooldown-system.test.jsAgregar al menos:
- Sintaxis:
!comando <args>. - Ejemplo real de entrada/salida.
- Restricciones (cooldown, permisos, límites).
- Dependencias externas (si aplica).
Plantilla recomendada:
docs/development/feature-doc-template.md
Referencia de implementación basada en configuración:
docs/custom-commands-system.md
- Comando implementado y registrado.
- Cooldown configurado (o justificación de no usarlo).
- Tests agregados/actualizados.
- Documentación actualizada.
- Mensajes de error comprensibles para chat.