Automatización: Creando tu Primer Bot Centinela en 5 Líneas
Construye un guardián reactivo de moderación, respuestas de diagnóstico y bloqueo de phishing sin dependencias de Node.js, Python externo o servidores dedicados. Motor nativo integrado en el cliente FenixIRC.
Arquitectura del Motor de Automatización
A diferencia de clientes tradicionales que requieren instalar eggdrop, Node.js o interpreters de Python en servidores virtuales (VPS), FenixIRC integra un motor reactivo embebido directamente en su ciclo de despacho de frames IRC. Opera dentro del hilo de IO asíncrono, analizando strings entrantes y disparando secuencias formateadas sin latencia de red añadida.
Arranque Post-Conexión
Matriz secuencial onConnectCommands disparada de forma atómica tras recibir el RPL numérico 001 (RPL_WELCOME).
Aliases y Macros de Salida (OUT)
Transformador de comandos salientes. Expande atajos ingresados en el campo de texto (e.g. /kban) antes de emitir frames hacia el socket TCP.
Triggers Reactivos (IN / FILTER)
Evaluador de expresiones regulares en tiempo real sobre ráfagas de mensajes. Aplica acciones sancionadoras (Kick, Ban, Mute) o respuestas automáticas sin intervención del operador.
El Bot Centinela en 5 Líneas de Código
| Línea | Patrón RegEx (Trigger) | Evento | Acción IRC Emitida | Propósito Táctico |
|---|---|---|---|---|
| 01 | ^!ping | PRIVMSG | NOTICE %N :PONG! ... | Diagnóstico de latencia e interactividad privada sin floodear el canal principal. |
| 02 | ^!help | PRIVMSG | PRIVMSG %C :Bot Centinela... | Guía de comandos públicos rápida a los recién llegados en el canal activo (%C). |
| 03 | (?i)(http|https)://\S+ | IN_FILTER | KICK %C %N :Spam... | Expulsión inmediata de usuarios que publiquen URLs no autorizadas. |
| 04 | (?i)(discord\.gg|t\.me|join #) | IN_FILTER | MODE +b | KICK | Mitigación estricta de invasiones / raids de captación hacia Discord o Telegram con baneo de máscara. |
| 05 | ^!status | PRIVMSG | PRIVMSG %C :Estado... | Auditoría rápida del estado criptográfico y flags de protección del canal. |
Filtrado Táctico de Spam Mediante RegEx
Las expresiones regulares evaluadas por el motor de FenixIRC permiten blindar salas concurridas contra tácticas comunes de denegación de lectura y ataques automatizados.
Detecta repeticiones consecutivas de un mismo carácter (e.g. "aaaaaaaaaaaa" o "!!!!!!!!!!!!!!").
Filtra cadenas que superan los 15 caracteres sin incluir letras minúsculas, evitando la contaminación visual del scroll.
Detecta extensiones ejecutables o dominios recurrentes usados comúnmente para secuestro de tokens y malware.
Automatización de Inicio Post-Conexión
Ejecutados secuencialmente cada 150ms al validar el handshake TLS con el servidor.
Cuando el socket intercepta el código RPL_WELCOME (001), el despachador de eventos vacía la pila de comandos con sanitización de prefijo:
server.onConnectCommands.forEachIndexed { index, rawCmd ->
val sanitized = rawCmd.removePrefix("/")
dispatcher.sendRawLine(sanitized, delayMs = index * 150L)
}
logger.info { "Post-connect commands flushed for \${server.host}" }
}
+B notifica al IRCD que la sesión corresponde a un Bot oficial del canal.
Tabla de Tokens de Inyección Dinámica
| Token | Identificador | Ejemplo de Reemplazo | Caso Típico de Uso |
|---|---|---|---|
| %N | Nickname Emisor | Phoenix_77 | Dirigir avisos por privado (NOTICE) o seleccionar objetivo de KICK. |
| %C | Canal Objetivo | #seguridad | Enviar mensajes al contexto activo donde se originó el trigger. |
| %T | Texto Completo | "¡Alerta en sala central!" | Replicar o loguear la cadena exacta evaluada. |
| %A | Primer Argumento | usuario_sospechoso | Comandos parametrizados como !ban %A. |
| %SERVER | Host Activo | irc.fenix.net | Identificación de ruteo y diagnóstico multicentral. |
Caso Práctico: Despliegue en 3 Pasos
Configura Arranque
Ingresa en los ajustes de tu red dentro de FenixIRC y agrega la identificación NickServ y auto-join de las salas que desees vigilar en onConnectCommands.
Pega las 5 Reglas
Copia el bloque de 5 líneas del Centinela en la pestaña Scripts & Triggers de FenixIRC. Las flags se compilarán en memoria instantáneamente.
Verifica Operatividad
Escribe !ping o prueba un trigger de prueba. Observarás cómo el Centinela procesa y aplica la sanción o respuesta en < 2 milisegundos.