# DomDimaBot — es # Docs de DomDimaBot Guías de DomDimaBot — configuración, comandos, recompensas, TTS, disparadores, IA y protección del stream. Source: https://docs.domdimabot.com/es/ Language: es Documentation index: https://docs.domdimabot.com/llms.txt Documentación # Docs al ritmo de tu stream Configura DomDimaBot, automatiza el chat, lanza recompensas y TTS, y protege tu canal — organizado como el producto. [Comenzar ](https://docs.domdimabot.com/es/getting-started/index.txt) [Abrir panel ](https://domdimabot.com/) Vista previa del chat * Espectador !commands * BOT DomDimaBot Activos: !ping, !socials, !tts… prueba !help Premium * VIP\_Streamer !tts ¡Hola chat! * BOT DomDimaBot Reproduciendo voz… Pro Empieza aquí ## ¿Nuevo en DomDimaBot? Conecta Twitch, desbloquea permisos y conoce el mapa del panel. [Primeros pasos Conecta tu cuenta, acceso Básico vs Completo, y arranca con lo esencial. Leer guía → ](https://docs.domdimabot.com/es/getting-started/index.txt) [Tour del panel Overview, Comandos, Recompensas, Disparadores — dónde está cada cosa. Explorar → ](https://docs.domdimabot.com/es/dashboard/index.txt) Funciones principales ## Arma tu kit de stream Una tarjeta por tema. Salta directo a la guía que necesitas. [Comandos Comandos integrados y flujos AST avanzados. Abrir → ](https://docs.domdimabot.com/es/commands/index.txt) [Texto a voz Proveedores, etiquetas de voz y créditos de IA. Abrir → ](https://docs.domdimabot.com/es/tts/index.txt) [Recompensas Puntos, canjes automáticos y flujos de rewards. Abrir → ](https://docs.domdimabot.com/es/rewards/index.txt) [Disparadores Sonidos, overlays y medios por eventos. Abrir → ](https://docs.domdimabot.com/es/triggers/index.txt) Streams más inteligentes ## Personalidad y protección Chat vivo y canal a salvo cuando sube el tráfico. [Personalidad IA Voz, usuarios conocidos y estilo natural de chat. Abrir → ](https://docs.domdimabot.com/es/ai-personality/index.txt) [Defensa de follows Avalanchas de follows, silenciar spam y escalar modos. Abrir → ](https://docs.domdimabot.com/es/follow-defense/index.txt) Cuando quieras ## Configura en el panel Los ajustes en vivo están en domdimabot.com. Vuelve aquí para la guía completa. [Ir al panel ](https://domdimabot.com/) [Guía de setup ](https://docs.domdimabot.com/es/getting-started/index.txt) --- # Crear comandos con un asistente de IA Usa las referencias oficiales de DomDimaBot con una IA que pueda navegar para crear comandos con la sintaxis, los permisos y las pruebas correctos. Source: https://docs.domdimabot.com/es/ai-assistants/ Language: es Documentation index: https://docs.domdimabot.com/llms.txt Puedes compartir estas guías con cualquier asistente capaz de abrir páginas públicas, incluidos GPT, Grok, Gemini y Kimi. Empieza por el [índice de documentación](https://docs.domdimabot.com/es/llms.txt). Cada página también tiene un enlace **Leer Markdown** al final, con los mismos ejemplos y tablas en texto plano. ## Un prompt que puedes usar ```text Ayúdame a crear un comando personalizado para DomDimaBot. Lee https://docs.domdimabot.com/es/llms.txt y abre las referencias necesarias. Quiero: [describe el comando y un mensaje de chat de ejemplo]. Mi plan: [Free, Premium o Pro]. Quién puede usarlo: [todos, suscriptores, moderadores o broadcaster]. Lo crearé desde: [el chat de Twitch o el dashboard]. Explica el cuerpo de respuesta, la configuración, el resultado esperado y cómo probarlo. Cita las páginas que consultaste. Pregunta si falta algún requisito y no inventes funciones ni uses la sintaxis de otro bot. Si no puedes leer una página, dímelo. ``` Si tu asistente no puede navegar, abre los enlaces **Leer Markdown** que necesites y pega su contenido en la conversación. También están disponibles [todas las guías en español](https://docs.domdimabot.com/es/llms-full.txt) y [en inglés](https://docs.domdimabot.com/llms-full.txt) en archivos más grandes. Para una petición concreta, suele ser mejor usar páginas individuales. ## Referencias que debes leer antes de escribir un comando | Pregunta | Referencia | | --------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | | ¿Cómo creo, edito o restrinjo un comando? | [Resumen de comandos](https://docs.domdimabot.com/es/commands/overview/index.txt) | | ¿Cómo funcionan argumentos, variables, cadenas y condiciones? | [Sintaxis y datos AST](https://docs.domdimabot.com/es/commands/advanced/syntax/index.txt) | | ¿Existe una función y qué argumentos acepta? | [Referencia de funciones AST](https://docs.domdimabot.com/es/commands/advanced/functions/index.txt) | | ¿Cuáles son las reglas de ejecución, los errores y los límites? | [Ejecución AST](https://docs.domdimabot.com/es/commands/advanced/execution/index.txt) | | ¿Hay un patrón documentado para esta tarea? | [Recetas AST](https://docs.domdimabot.com/es/commands/advanced/recipes/index.txt) | Lee también la guía específica al usar [TTS](https://docs.domdimabot.com/es/tts/index.txt), [triggers](https://docs.domdimabot.com/es/triggers/index.txt) o [recompensas](https://docs.domdimabot.com/es/rewards/index.txt). No supongas que una función acepta los mismos argumentos que un comando de chat con un nombre parecido. ## Dar una respuesta que se pueda usar 1. Confirma el objetivo, los argumentos, los permisos de quien invoca el comando y el plan del streamer. Si guarda datos, aclara si pertenecen al canal o a cada usuario y cuánto tiempo deben conservarse. 2. Usa texto simple cuando sea suficiente. Para comportamiento dinámico, utiliza la sintaxis AST de DomDimaBot: `$(...)` llama funciones, `%(...)` accede a variables creadas por el usuario y `&p1` obtiene el primer argumento. Los marcadores como `{user}` no son equivalentes. 3. Proporciona por separado el **nombre**, el **cuerpo de respuesta**, el **cooldown** y el **nivel de usuario**. Para configurarlo por chat, incluye también la instrucción completa `!cc`. El nombre que recibe `!cc` no lleva `!`; los espectadores sí lo usan al invocar el comando guardado. 4. Comprueba la firma de cada función, la duración del almacenamiento, el plan necesario y los límites de ejecución en las referencias. Inicializa los datos antes de depender de su valor. Restringe los comandos de moderación o configuración del canal a los usuarios autorizados previstos. 5. Explica una entrada normal y su resultado esperado. Si hay argumentos o datos guardados, describe también qué pasa si faltan argumentos o es la primera ejecución. No afirmes haber ejecutado un comando generado sin haberlo probado. ## Ejemplo completo: un comando de bienvenida Objetivo: permitir que los espectadores usen `!hello` para recibir una bienvenida con su nombre. | Ajuste | Valor | | ------------------- | ------------------------------------- | | Nombre | `hello` | | Cuerpo de respuesta | `Hola $(user)! Bienvenido al stream.` | | Cooldown | `10` segundos | | Nivel de usuario | `everyone` | Como broadcaster u otro administrador autorizado de comandos, créalo en el chat de Twitch con: ```text !cc -cd=10 -ul=everyone hello Hola $(user)! Bienvenido al stream. ``` También puedes introducir estos ajustes en el editor de **Comandos** del dashboard. En el campo de respuesta guarda solo el cuerpo, no la instrucción completa `!cc`. Cuando un espectador llamado `Alex` envíe `!hello`, la respuesta esperada es: ```text Hola Alex! Bienvenido al stream. ``` Este ejemplo usa la [función `$(user)` documentada](https://docs.domdimabot.com/es/commands/advanced/functions/index.txt). No necesita argumentos ni variables guardadas. Pruébalo en tu canal después de crearlo; comprueba que esté habilitado y espera a que termine el cooldown antes de repetirlo. Para cambiar un comando existente, usa `!ec` como explica el [resumen](https://docs.domdimabot.com/es/commands/overview/index.txt). ## Para qué sirven estos archivos El índice y las páginas de texto se generan desde la misma fuente de documentación en cada compilación del sitio, en inglés y español. Incluyen las URL originales para citarlas y enlaces que se pueden seguir sin ejecutar JavaScript ni iniciar sesión. Publicar documentación legible no garantiza que un proveedor de IA la indexe ni que todas las respuestas generadas sean correctas. Comparte directamente la URL del índice, pide referencias a las páginas que el asistente realmente haya leído y prueba el comando antes de depender de él. --- # Personalidad IA Dale a tu bot una personalidad única impulsada por IA. Source: https://docs.domdimabot.com/es/ai-personality/ Language: es Documentation index: https://docs.domdimabot.com/llms.txt La función de personalidad IA de DomDimaBot le da a tu bot la habilidad de participar en conversaciones naturales, responder al contexto y desarrollar un carácter único. ## Ajustes de Personalidad Configura el carácter de tu bot a través de estos ajustes: | Ajuste | Descripción | | ----------------------- | ---------------------------------------- | | **Nombre** | Cómo los espectadores llaman a tu bot | | **Personalidad** | Rasgos core y patrones de comportamiento | | **Saludo** | Cómo el bot saluda a nuevos espectadores | | **Estilo de Respuesta** | Casual, formal, gracioso, etc. | ## Usuarios Conocidos Puedes enseñarle a DomDimaBot sobre miembros específicos de la comunidad: ```json { "username": "superfan123", "description": "Miembro de la comunidad desde hace mucho tiempo, juega RPGs", "relationship": "friend" } ``` El bot usará este contexto para personalizar las interacciones. ## Comportamiento de Respuestas > note: > > Las respuestas de IA son probabilísticas. El bot ocasionalmente puede decir cosas inesperadas. Usa los ajustes de moderación de contenido para filtrar mensajes inapropiados. ### Opciones de Configuración * **Frecuencia de respuestas** — Qué tan seguido el bot habla sin que le pidan * **Longitud máxima del mensaje** — Limitar el tamaño de las respuestas * **Memoria de conversación** — Cuántos mensajes pasados considera el bot * **Lista de ignorados** — Usuarios a los que el bot no responderá ## Seguridad del Contenido Habilita funciones de moderación para filtrar: * Spam y exceso de mayúsculas * Enlaces (configurable por usuario) * Filtros de palabras personalizados * Limitación de tasa --- # Comandos Aprende cómo funcionan los comandos de DomDimaBot, desde los integrados hasta los flujos avanzados con AST. Source: https://docs.domdimabot.com/es/commands/ Language: es Documentation index: https://docs.domdimabot.com/llms.txt Los comandos de DomDimaBot impulsan la automatización del chat — desde respuestas simples hasta flujos AST programables. Elige tu camino: [Resumen de comandos](https://docs.domdimabot.com/es/commands/overview/index.txt): Comandos integrados, permisos, cooldowns y el set de comandos por defecto. [Comandos avanzados (AST)](https://docs.domdimabot.com/es/commands/advanced/index.txt): Sintaxis, funciones, reglas de ejecución y recetas para lógica compleja. --- # Comandos Personalizados Avanzados (AST) Punto de inicio amigable para el sistema AST de DomDimaBot, con guías separadas de sintaxis, funciones, ejecución y recetas. Source: https://docs.domdimabot.com/es/commands/advanced/ Language: es Documentation index: https://docs.domdimabot.com/llms.txt El **parser AST** de DomDimaBot es la capa avanzada detrás de los comandos personalizados. Te permite construir comandos que guardan valores, ejecutan lógica, llaman funciones, reutilizan otros comandos y responden distinto según el contexto. > caution: > > Esta sección es para configuraciones avanzadas. Si solo necesitas comandos de texto simples, empieza por [Comandos](https://docs.domdimabot.com/es/commands/overview/index.txt). ## Para qué sirve AST Usa AST cuando quieres que un comando haga algo más que enviar texto fijo. * guardar contadores y progreso de usuarios * construir respuestas dinámicas * ejecutar lógica tipo if / else * trabajar con arrays y bucles * llamar funciones de Twitch, moderación, TTS, triggers y EventSub * encadenar comandos entre sí ## Importante: las variables no vienen creadas DomDimaBot **no** te da variables AST por defecto automáticamente. * Las variables las **creas tú** con `%(...)` * Si quieres guardar un valor, debes crear esa variable * Los datos de contexto normalmente vienen de **funciones** como `$(user)`, `$(twitch.game)` o de **argumentos** como `&p1` Ejemplo: ```bash %(#wins *(%(#wins) + 1)) "$(user) ahora tiene %(#wins) wins!" ``` ## Empieza aquí Esta sección AST ahora está dividida en guías más pequeñas para que sea más fácil aprenderla. 1. **[Sintaxis y Datos de AST](https://docs.domdimabot.com/es/commands/advanced/syntax/index.txt)** * prefijos * variables y almacenamiento * argumentos * arrays * condicionales * bucles * referencias a comandos 2. **[Referencia de Funciones AST](https://docs.domdimabot.com/es/commands/advanced/functions/index.txt)** * funciones de usuario y Twitch * acciones de moderación y canal * contadores, clips, followage * EventSub, TTS, triggers y chat send 3. **[Ejecución, Errores y Límites de AST](https://docs.domdimabot.com/es/commands/advanced/execution/index.txt)** * cómo corre el parser * errores comunes * límites de bucles y recursión * mentalidad de debugging 4. **[Recetas y Patrones AST](https://docs.domdimabot.com/es/commands/advanced/recipes/index.txt)** * buenas prácticas * initialize-or-increment * guard checks * selectores de usuario * sistemas completos de escudos ## Modelo mental rápido Piensa en los comandos AST como pequeños scripts dentro de un comando personalizado. * `%(...)` = leer o escribir tus variables * `$(...)` = llamar una función * `*(...)` = calcular lógica * `^(...)` = comprobar si algo existe * `#(...)` = ejecutar otro comando desde este comando ## Ejemplo rápido Este comando crea un contador simple de wins: ```bash *( ^(#wins) ? %(#wins *(%(#wins) + 1)) : %(#wins 1) ) "$(user) tiene %(#wins) wins!" ``` Qué hace: 1. comprueba si `#wins` existe 2. si existe, lo incrementa 3. si no existe, lo crea con `1` 4. imprime el total actualizado ## Funciones según el plan Algunas funciones AST dependen del plan del streamer. | Función | Free | Premium | Pro | | -------------------------------------- | -------- | ------- | ------- | | Variables en memoria | Sí | Sí | Sí | | Variables de caché (`#`, `##`) | Sí | Sí | Sí | | Variables de base de datos (`*`, `**`) | No | Sí | Sí | | Bucles más profundos | Limitado | Más | Más aún | | Voz IA / voice clone | Sí | Sí | Sí | ## Flujo recomendado 1. Empieza con una respuesta de texto plano 2. Añade argumentos como `&p1` 3. Añade funciones como `$(user)` o `$(twitch.game)` 4. Añade variables solo cuando necesites estado 5. Añade condicionales y bucles al final > tip: > > Si un comando AST puede banear usuarios, dar roles, cambiar el título o juego, iniciar encuestas o activar media, mantenlo restringido a moderadores o al broadcaster. --- # Ejecución, Errores y Límites de AST Cómo corre el parser AST, errores comunes y límites de seguridad según el plan. Source: https://docs.domdimabot.com/es/commands/advanced/execution/ Language: es Documentation index: https://docs.domdimabot.com/llms.txt Esta página explica qué pasa cuando corre un comando AST y cómo depurarlo cuando algo falla. ## Flujo de ejecución 1. Un comando o evento activa la plantilla 2. Se resuelven placeholders como `&p1` y `&t` 3. Se crea el contexto de ejecución con datos del usuario, canal y evento 4. El input se tokeniza 5. Los tokens se parsean en un AST 6. El AST se evalúa 7. Las variables se escriben en memoria, caché o base de datos si hace falta 8. La salida final se renderiza y se envía al chat ## Por qué importa Entender el orden te ayuda a depurar problemas como: * argumentos que no aparecen donde esperabas * variables faltantes * ramas que se ejecutan cuando no deberían * referencias a comandos con resultados raros * funciones EventSub que devuelven vacío en el chat ## Mensajes de error comunes | Patrón de Error | Significado | | ----------------------------------- | --------------------------------------- | | `[Unknown function: name]` | La función no está registrada | | `[Loop error: invalid loop syntax]` | La sintaxis del bucle es inválida | | `[Loop error: missing loop body]` | Al bucle le faltan `{}` | | `[Parse error: expr]` | El parser no pudo entender la expresión | | `Usage: $(func ...)` | Faltan argumentos o son inválidos | ## Límites y reglas de seguridad ### Límites de bucles por plan | Plan | Máx. profundidad de anidación | Máx. iteraciones | | ------- | ----------------------------- | ---------------- | | Free | 2 | 25 | | Premium | 3 | 50 | | Pro | 4 | 100 | ### Límites de referencia a comandos * profundidad máxima de recursión: `5` * los ciclos se detectan y se frenan ### Límites de delay * `$(delay N)` soporta hasta `60` segundos ## Checklist de debugging ### 1. Empieza simple Antes de construir el comando completo, prueba una versión mínima. ```bash "Hello $(user)!" ``` ### 2. Añade una sola cosa cada vez Buen orden: 1. texto plano 2. argumentos 3. funciones 4. variables 5. condicionales 6. bucles ### 3. Comprueba la inicialización Si un valor de caché o base de datos puede no existir todavía, compruébalo primero: ```bash *(^(#wins) ? %(#wins) : "no wins yet") ``` ### 4. Recuerda que la asignación es directa Esto está mal si quieres incrementar: ```bash %(#wins 1) ``` Esto está bien: ```bash %(#wins *(%(#wins) + 1)) ``` ### 5. Recuerda el contexto EventSub Funciones como `$(cheer.amount)` o `$(reward.input)` solo funcionan cuando el comando corre desde el tipo de evento correcto. > note: > > Si una función EventSub parece vacía durante pruebas en chat, normalmente no significa que esté rota. Suele significar que el contexto actual no contiene esa carga útil del evento. ## Errores comunes ### Valor de caché vacío Si una variable `#` o `##` expiró, volverá vacía. ### Posición de `&t` `&t` debe ir al final. No puedes definir nuevos `&pN` después. ### Abusar de bucles Si un bucle puede reemplazarse por una expresión directa o una referencia a otro comando, suele ser mejor la opción simple. ### Acciones potentes en comandos públicos Los comandos que usan moderación, roles, título, juego, encuestas o triggers no deberían estar disponibles para todo el mundo. ## Mentalidad práctica para depurar Cuando un comando falla, hazte estas preguntas en orden: 1. ¿Mis argumentos están bien? 2. ¿Creé la variable antes de leerla? 3. ¿Estoy asignando o incrementando? 4. ¿Estoy en el contexto correcto para esa función? 5. ¿Creé recursión o demasiada complejidad con bucles? ## Consejo para probar con seguridad Construye primero la salida, y después añade los side effects. Por ejemplo, prueba el texto y la lógica antes de añadir: * `$(ban ...)` * `$(vip ...)` * `$(set.title ...)` * `$(start.poll ...)` * `$(trigger.send ...)` Así es mucho más fácil confirmar la lógica antes de que el comando empiece a cambiar el estado real del canal. --- # Referencia de Funciones AST Funciones AST disponibles: usuario, Twitch, moderación, EventSub, TTS, triggers, contadores, clips y chat. Source: https://docs.domdimabot.com/es/commands/advanced/functions/ Language: es Documentation index: https://docs.domdimabot.com/llms.txt Las funciones se llaman con `$(...)`. ```bash $(user) $(random 10) $(twitch.game) ``` > note: > > Algunas funciones solo leen datos. Otras ejecutan acciones como banear, cambiar título, hablar por TTS o enviar mensajes al chat. Restringe los comandos con acciones fuertes a roles de confianza. ## Funciones de usuario | Función | Descripción | Uso | | --------------- | ---------------------------------- | --------------- | | `$(user)` | Nombre del usuario actual | `$(user)` | | `$(touser)` | Usuario objetivo desde el contexto | `$(touser)` | | `$(randomuser)` | Usuario aleatorio del chat | `$(randomuser)` | ## Funciones aleatorias | Función | Descripción | Uso | | ------------- | ----------------------------------------- | -------------- | | `$(random N)` | Entero aleatorio de `0` a `N-1` | `$(random 10)` | | `$(random)` | Entero aleatorio con el rango por defecto | `$(random)` | ## Funciones de texto | Función | Descripción | Uso | | ----------------------------------- | ---------------------------------------------------------- | ------------------------------------ | | `$(upper texto)` | Convierte a mayúsculas | `$(upper hola)` → `HOLA` | | `$(lower texto)` | Convierte a minúsculas | `$(lower HOLA)` → `hola` | | `$(title texto)` | Capitaliza cada palabra | `$(title hola mundo)` → `Hola Mundo` | | `$(capitalize texto)` | Capitaliza solo la primera letra | `$(capitalize hola)` → `Hola` | | `$(trim texto)` | Quita espacios al inicio y al final | `$(trim " hola ")` → `hola` | | `$(length texto)` | Longitud del texto | `$(length hola)` → `4` | | `$(slice inicio [fin] texto)` | Corta texto por posición; negativos cuentan desde el final | `$(slice 0 4 hola mundo)` → `hola` | | `$(replace buscar reemplazo texto)` | Reemplaza todas las ocurrencias (literal, sin regex) | `$(replace o 0 foo)` → `f00` | Para buscar o reemplazar valores de varias palabras, usa comillas: `$(replace "texto viejo" "texto nuevo" el texto viejo aquí)`. ## Funciones de Twitch | Función | Descripción | Uso | | ------------------- | ---------------------- | ------------------- | | `$(twitch.subs)` | Número de subs | `$(twitch.subs)` | | `$(twitch.title)` | Título del stream | `$(twitch.title)` | | `$(twitch.game)` | Categoría actual | `$(twitch.game)` | | `$(twitch.viewers)` | Viewers / chatters | `$(twitch.viewers)` | | `$(twitch.follows)` | Número de follows | `$(twitch.follows)` | | `$(twitch.channel)` | Nombre del broadcaster | `$(twitch.channel)` | | `$(twitch.login)` | Login del broadcaster | `$(twitch.login)` | ## Funciones de moderación | Función | Descripción | Args | Nivel | | | ----------------------- | ------------------------------------------------------- | ----------------------------- | ------- | --- | | `$(vip)` o `$(add.vip)` | Dar VIP | `username [days]` | Mod | | | `$(unvip)` | Quitar VIP | `username` | Mod | | | `$(ban)` | Ban o timeout | `username [duration_seconds]` | Mod | | | `$(ban.mod)` | Ban y restaurar mod opcionalmente | \`username seconds true | false\` | Mod | | `$(mod)` o `$(add.mod)` | Dar moderador | `username [days]` | Owner | | | `$(unmod)` | Quitar moderador | `username` | Owner | | | `$(clear.chat)` | Limpiar chat | none | Mod | | | `$(emoteonly)` | Activar solo emotes | `[duration_seconds]` | Mod | | | `$(bot.mode attack)` | Activa manualmente el Modo Ataque de Defensa de Follows | none | Mod | | | `$(bot.mode status)` | Muestra el modo actual de Defensa de Follows | none | Mod | | Las duraciones temporales de mod y VIP de `1` a `365` días requieren **Premium o Pro**. > caution: > > `$(bot.mode attack)` puede banear permanentemente followers rastreados de una ola activa de follows. Usalo solo en comandos restringidos a moderadores, como `!defmode`. Consulta [Defensa de Follows](https://docs.domdimabot.com/es/follow-defense/index.txt) para más detalles. ## Funciones de canal | Función | Descripción | Uso | | --------------------------------------------- | -------------------------------- | ------------------------------------------ | | `$(raid channel)` | Hacer raid a un canal | `$(raid targetchannel)` | | `$(unraid)` | Cancelar raid | `$(unraid)` | | `$(set.title new_title)` | Actualizar el título | `$(set.title Playing Valorant!)` | | `$(set.game game_name)` | Actualizar categoría | `$(set.game Valorant)` | | `$(start.prediction title;opt1/opt2;seconds)` | Iniciar predicción | `$(start.prediction Who wins?;A/B;120)` | | `$(start.poll title;opt1/opt2;seconds)` | Iniciar encuesta | `$(start.poll Favorite game?;COD/Halo;60)` | | `$(ad)` | Duración del anuncio en segundos | `$(ad)` | | `$(ad.time)` | Duración del anuncio en segundos | `$(ad.time)` | | `$(ai prompt)` | Respuesta generada por IA | `$(ai tell a joke)` | ## Funciones de conteo | Función | Descripción | Uso | | ------------- | --------------------------------------------- | ------------- | | `$(count N)` | Lee el conteo actual y opcionalmente suma `N` | `$(count 5)` | | `$(count 0)` | Lee el conteo sin cambiarlo | `$(count 0)` | | `$(count -3)` | Resta del conteo | `$(count -3)` | | `$(scount)` | Incremento simple de `+1` | `$(scount)` | | `$(bits)` | Bits de un evento cheer | `$(bits)` | ## Funciones de clip | Función | Descripción | Uso | | ---------------- | ------------------------------ | ---------------- | | `$(create.clip)` | Crea un clip y devuelve la URL | `$(create.clip)` | ## Funciones de followage | Función | Descripción | Uso | | ----------------------- | --------------------------------------- | -------------------- | | `$(followage username)` | Devuelve cuánto tiempo sigue un usuario | `$(followage ronni)` | ## Funciones de EventSub Estas solo devuelven datos útiles cuando el comando se dispara desde el evento EventSub correcto. | Función | Contexto EventSub | Devuelve | | ----------------------- | --------------------------- | -------------------------------- | | `$(raid.channel)` | `channel.raid` | Nombre del canal que raidea | | `$(raid.login)` | `channel.raid` | Login del canal que raidea | | `$(raid.viewers)` | `channel.raid` | Número de viewers del raid | | `$(cheer.amount)` | `channel.cheer` | Bits del cheer | | `$(cheer.message)` | `channel.cheer` | Texto del cheer | | `$(sub.tier)` | `channel.subscribe` | Prime / Tier 1 / Tier 2 / Tier 3 | | `$(sub.months)` | `channel.subscribe` | Meses acumulados | | `$(gifted.user)` | `channel.gift` | Usuario receptor del regalo | | `$(hypetrain.progress)` | `hypetrain.event` | Progreso hacia la meta | | `$(hypetrain.level)` | `hypetrain.event` | Nivel actual | | `$(hypetrain.end)` | `hypetrain.event` | Timestamp final | | `$(shoutout.channel)` | `channel.shoutout` | Canal del shoutout | | `$(reward.input)` | `channel.points_redemption` | Input de la redención | | `$(redemption.input)` | `channel.points_redemption` | Input de la redención | | `$(ad)` | `channel.ad_break` | Duración del anuncio | ## Funciones de TTS | Función | Plan | Descripción | Uso | | --------------------------- | ----- | ----------------------- | --------------------------- | | `$(tts message)` | Todos | Cola de TTS por defecto | `$(tts Hello world)` | | `$(tts.speak message)` | Todos | Igual que `$(tts ...)` | `$(tts.speak Hello)` | | `$(tts.ai message)` | Todos | Igual que `$(tts ...)` | `$(tts.ai Hello world)` | | `$(tts.clone name message)` | Todos | TTS con voice clone | `$(tts.clone voice1 Hello)` | ## Funciones de trigger | Función | Descripción | Uso | | --------------------------- | -------------------------- | ------------------------------ | | `$(trigger.send name)` | Dispara un trigger | `$(trigger.send airhorn)` | | `$(trigger.send name true)` | Dispara un trigger en cola | `$(trigger.send airhorn true)` | ## Funciones de delay, control y chat | Función | Descripción | Uso | | ---------------------- | ----------------------------------- | ------------------------------ | | `$(delay N)` | Pausa `N` segundos, máximo `60` | `$(delay 5)` | | `$(break)` | Sale de un bucle antes de tiempo | `$(break)` | | `$(continue)` | Salta la iteración actual del bucle | `$(continue)` | | `$(chat.send message)` | Envía un mensaje al chat | `$(chat.send Hello everyone!)` | ## Ejemplos rápidos | Función | Ejemplo de uso | Salida de ejemplo | | ------------------------------ | ------------------------------------------------ | ----------------------------------- | | `$(user)` | `"Welcome $(user)!"` | `Welcome ronchi!` | | `$(random 20)` | `"You rolled: $(random 20)"` | `You rolled: 7` | | `$(twitch.subs)` | `"We have $(twitch.subs) subscribers!"` | `We have 1542 subscribers!` | | `$(count 1)` | `"Uses: $(count 1)"` | `Uses: 42` | | `$(followage ronchi)` | `"$(user) has followed for $(followage ronchi)"` | `ronchi has followed for 1 year...` | | `$(create.clip)` | `"Clip: $(create.clip)"` | `Clip: https://clips.twitch.tv/...` | | `$(trigger.send airhorn)` | `"$(trigger.send airhorn)"` | El trigger se dispara | | `$(chat.send Hello everyone!)` | `"$(chat.send Hello everyone!)"` | Mensaje enviado | > tip: > > Si una función cambia el estado del canal o modera usuarios, acompáñala con permisos correctos en tu dashboard. --- # Recetas y Patrones AST Buenas prácticas y patrones AST avanzados, incluyendo contadores, guard checks, selectores de usuario y sistemas de escudos. Source: https://docs.domdimabot.com/es/commands/advanced/recipes/ Language: es Documentation index: https://docs.domdimabot.com/llms.txt Esta página muestra patrones AST reutilizables que puedes adaptar a tus propios comandos. ## Buenas prácticas ### Incrementa correctamente Mal: ```bash %(#wins 1) ``` Bien: ```bash %(#wins *(%(#wins) + 1)) ``` ### Inicializa antes de depender del valor ```bash *(^(#wins) ? %(#wins) : 0) ``` ### Elige el almacenamiento correcto * usa `#` o `##` para datos temporales de 24h * usa `*` o `**` para datos permanentes de Premium / Pro ### Mantén los bucles pequeños * respeta los límites del plan * usa `$(break)` si puedes salir antes ### Usa contexto real para comandos EventSub * las pruebas desde chat no representan del todo redemptions, cheers, raids o subs ## Resumen de patrones | Patrón | Idea de sintaxis | Propósito | | ------------------------- | ----------------------------------- | ------------------------------------------ | | Inicializar-o-incrementar | `*(^(**x) ? %(**x + 1) : %(**x 1))` | Contador inteligente | | Selector de usuario | `%(**var(%(target)))` | Leer o escribir estado de otro usuario | | Guard check | `*(^(**target) ? FAIL : ACT)` | Evitar una acción si existe una condición | | Side effect en ternaria | `*(cond ? $(action) : "")` | Ejecutar una acción dentro de una rama | | Comparación anidada | `*(a > b ? A_WIN : B_WIN)` | Lógica de combate con varias ramas | | Aritmética de estado | `%(winner *(%(winner) - %(loser)))` | Actualizar estado guardado con matemáticas | ## Receta 1: inicializar o incrementar Este es uno de los patrones AST más comunes. ```bash *( ^(**escudos) ? %(**escudos *(%(**escudos) + 1)) : %(**escudos 1) ) $(user) ha comprado un escudo, ahora tiene %(**escudos) escudos ``` Qué hace: 1. comprueba si `**escudos` existe 2. si existe, suma 1 3. si no existe, lo crea con valor `1` 4. imprime el total final ## Receta 2: guard check / rebote de escudos Si el objetivo tiene escudos, el ataque rebota. Si no, el objetivo es baneado y pierde los escudos. ```bash %(target $(reward.input)) *( ^(**escudos(%(target))) ? $(ban.mod $(user) 300 true) "¡%(target) tiene escudos! El ataque rebotó hacia %(user)." : $(ban.mod %(target) 300 true) %(**escudos(%(target)) 0) "¡%(user) atacó y baneó a %(target)! Los escudos de %(target) se han perdido." ) ``` Ideas clave usadas aquí: * guardar el input del evento en una variable local * usar un selector de usuario para inspeccionar datos de otro usuario * ejecutar una acción dentro de una rama ternaria * resetear el estado después de la acción ## Receta 3: batalla completa de escudos Quien tenga más escudos gana. El perdedor es baneado. El ganador pierde una cantidad de escudos igual a los del perdedor. ```bash %(attacker %(user)) %(defender $(reward.input)) *( ^(**escudos(%(defender))) ? *( ^(**escudos(%(attacker))) ? *( %(**escudos(%(attacker))) > %(**escudos(%(defender))) ? $(ban.mod %(defender) 300 true) %(**escudos(%(defender)) 0) %(**escudos(%(attacker)) *(%(**escudos(%(attacker))) - %(**escudos(%(defender))))) "¡%(attacker) gana! %(defender) baneado. %(attacker) ahora tiene %(**escudos(%(attacker))) escudos." : $(ban.mod %(attacker) 300 true) %(**escudos(%(attacker)) 0) %(**escudos(%(defender)) *(%(**escudos(%(defender))) - %(**escudos(%(attacker))))) "¡%(defender) gana! %(attacker) baneado. %(defender) ahora tiene %(**escudos(%(defender))) escudos." ) : "¡%(defender) tiene escudos pero %(attacker) no tiene ninguno!" : $(ban.mod %(defender) 300 true) "¡%(defender) no tiene escudos y fue baneado por %(user)!" ) ``` Por qué esto ya es avanzado: * ternarias anidadas * lectura del estado guardado de dos usuarios * múltiples escrituras en una rama * actualizaciones aritméticas basadas en el estado previo ## Cómo construir tus propios sistemas Cuando diseñes un comando AST avanzado, este orden suele funcionar bien: 1. define la entrada 2. decide qué estado necesitas guardar 3. define los guard checks 4. define la rama de éxito 5. define la rama de fallo 6. solo después añade side effects como bans, cambio de título o triggers ## Buenos casos de uso para recetas AST * sistemas de lealtad * economías con contadores * inventarios de coleccionables * batallas entre viewers * mini juegos activados por redemptions * shoutouts dinámicos * flujos automáticos de chat > tip: > > Si tu lógica empieza a ser difícil de leer, divide el sistema en más de un comando y usa referencias `#(...)` para que cada pieza sea más pequeña. --- # Sintaxis y Datos de AST Bloques base de AST: prefijos, almacenamiento, argumentos, arrays, expresiones, condicionales, bucles y referencias a comandos. Source: https://docs.domdimabot.com/es/commands/advanced/syntax/ Language: es Documentation index: https://docs.domdimabot.com/llms.txt Esta página cubre la sintaxis principal que usarás para construir comandos AST. ## Prefijos principales El parser entiende 5 prefijos importantes: | Prefijo | Sintaxis | Propósito | Ejemplo | | ------- | --------------------------- | ----------------------------- | ------------------------- | | `$( ` | `$(funcName arg1 arg2)` | Llamar una función | `$(random 10)` | | `%( ` | `%(name)` o `%(name value)` | Leer o escribir una variable | `%(wins)`, `%(wins 5)` | | `*( ` | `*(condition ? yes : no)` | Calcular lógica o matemáticas | `*(5 > 3 ? "yes" : "no")` | | `^( ` | `^(variableName)` | Comprobar existencia | `^(#wins)` | | `#( ` | `#(commandName args...)` | Llamar otro comando | `#(othercmd arg1)` | ## Variables y almacenamiento Las variables las creas tú. Pueden ser temporales o persistentes según el prefijo que uses. | Prefijo | Almacenamiento | Persistencia | Plan | Ejemplo | | ------- | --------------------------- | ------------------------ | ------------- | ------------ | | ninguno | Memoria | Solo la ejecución actual | Free | `%(temp)` | | `#` | Caché | Hasta 24 horas | Free | `%(#wins)` | | `##` | Caché + por usuario | Hasta 24 horas | Free | `%(##chips)` | | `*` | Base de datos | Permanente | Premium / Pro | `%(*wins)` | | `**` | Base de datos + por usuario | Permanente | Premium / Pro | `%(**rank)` | ### Comportamientos importantes 1. Las variables de caché expiran después de unas 24 horas. 2. Si una variable de caché expiró, vuelve **vacía**, no con `0`. 3. La asignación sobrescribe. ```bash %(#wins 1) ``` Ese ejemplo **pone** el valor en `1`. No suma 1. ### Patrón correcto para incrementar ```bash %(#wins *(%(#wins) + 1)) ``` ### Selectores por usuario Los valores por usuario pueden apuntar a otro usuario: ```bash %(##rank) %(##rank(&p1)) %(**rank) %(**rank(&p1)) ``` ## Placeholders de argumentos Cuando un viewer usa un comando, sus argumentos se pueden acceder con placeholders. | Placeholder | Significado | Ejemplo | | ---------------------- | ----------------------- | ------------------------ | | `&p1`, `&p2`, `&p3`... | Argumentos posicionales | `&p1` = primer argumento | | `&t` | Todo el texto restante | `&t` = todo lo que queda | ### Reglas * `&t` debe ir al final * no puedes crear nuevos `&pN` después de `&t` ### Ejemplos ```bash Comando: !greet Hello World Mensaje: Hello &p1 and &p2! → Hello Hello and World! ``` ```bash Comando: !echo lots of args here Mensaje: &p1 &p2 &t → lots of args here ``` ```bash Mensaje: &t &p1 → Error: cannot create new &pN after &t ``` ## Template strings Usa comillas dobles y `${}` cuando quieras interpolación dentro de un string. ```bash "Hola ${$(user)}!" "Has ganado ${%(#wins)} veces!" ``` ## Caracteres especiales y escapes Los paréntesis definen dónde empieza y termina una expresión, así que un `)` literal dentro de una la cerraría antes de tiempo. Tienes tres herramientas para incluir caracteres especiales como texto plano: 1. **Los pares balanceados funcionan directamente.** Los paréntesis que abren y cierran dentro de una expresión se mantienen como texto: ```bash $(say score (5-3)) → score ( 5 - 3 ) ``` 2. **Las comillas dobles** protegen cualquier texto, incluidos caracteres desbalanceados: ```bash $(say "quoted :) here") → quoted :) here ``` 3. **Los escapes con barra invertida** protegen un solo carácter. Usa `\(` `\)` `\[` `\]` `\{` `\}` `\;` `\?` `\:` y `\\`: ```bash $(say hello \:\)) → hello :) %(mood \:\)) %(mood) → :) ``` > tip: > > Los emoticonos como `:)` o `;)` son el caso más común — escápalos (`\:\)`, `\)`) o envuelve el texto en comillas. ## Arrays ### Arrays literales ```bash %[item1, item2, item3] %[1, 2, 3, 4, 5] ``` ### Accesores de array | Sintaxis | Significado | Ejemplo | | ----------------- | ---------------------- | -------------------------------- | | `%(arr[0])` | Acceder por índice | `%(items[0])` | | `%(arr[-1])` | Acceder desde el final | `%(items[-1])` = último elemento | | `%(arr[random])` | Elemento aleatorio | `%(items[random])` | | `%(arr[].length)` | Longitud del array | `%(items[].length)` | | `%(arr[] value)` | Agregar valor | `%(items[] extra)` | | `%(arr[2] value)` | Reemplazar por índice | `%(items[2] updated)` | ### Ejemplos ```bash %(items[0]) %(items[random]) %(items[].length) %(items[] extra) %(items[1] replacement) %[1, 2, 3][random] ``` ## Operadores y expresiones ### Comparación | Operador | Significado | Ejemplo | | ----------- | ------------- | ------------------------ | | `==` o `=` | Igual | `%(wins) == 5` | | `!=` o `<>` | Distinto | `%(status) != "offline"` | | `>` | Mayor que | `%(level) > 3` | | `<` | Menor que | `%(age) < 18` | | `>=` | Mayor o igual | `%(wins) >= 10` | | `<=` | Menor o igual | `%(wins) <= 5` | | `~=` | Contiene | `%(tags) ~= "gaming"` | ### Aritmética | Operador | Significado | Ejemplo | | -------- | ----------- | ------------------ | | `+` | Sumar | `*(%(#wins) + 1)` | | `-` | Restar | `*(%(#wins) - 1)` | | `*` | Multiplicar | `*(%(x) * 2)` | | `/` | Dividir | `*(%(total) / 2)` | | `%` | Módulo | `*(%(count) % 10)` | ### Operadores unarios | Operador | Significado | | -------- | ----------- | | `+` | Más unario | | `-` | Negación | ### Operadores de asignación Estos son para **variables de bucle solamente**: | Operador | Significado | | -------- | --------------------- | | `=` | Asignar | | `++` | Incrementar en 1 | | `--` | Decrementar en 1 | | `+=` | Sumar y asignar | | `-=` | Restar y asignar | | `*=` | Multiplicar y asignar | | `/=` | Dividir y asignar | | `%=` | Módulo y asignar | ## Condicionales AST usa expresiones ternarias para ramificar lógica: ```bash *(condition ? trueValue : falseValue) *(%(#wins) > 10 ? "Champion" : "Keep trying") *(%(islive) == 1 ? "Stream is live!" : "Stream is offline") ``` ## Bucles ### Bucle de rango ```bash *(for #i = 0; #i < 3; #i++ { %(out[] #i) }) ``` ### Bucle foreach ```bash *(for #item in %(#items[]) { %(result[] %(#item)) }) ``` ### Control de bucle | Función | Propósito | | ------------- | ------------------------------ | | `$(break)` | Salir del bucle inmediatamente | | `$(continue)` | Saltar la iteración actual | ### Límites por plan | Plan | Máx. profundidad de anidación | Máx. iteraciones | | ------- | ----------------------------- | ---------------- | | Free | 2 | 25 | | Premium | 3 | 50 | | Pro | 4 | 100 | ### Ejemplo de bucle ```bash *(for #i = 0; #i < %(#count); #i++ { %(output[] #i) }) "Tus números: ${%(output[])}" ``` ## Referencias a comandos Puedes ejecutar un comando dentro de otro: ```bash #(othercmd arg1 arg2) ``` ### Reglas * profundidad máxima de recursión: `5` * los ciclos se detectan y bloquean * la salida del comando referenciado se parsea y se inserta de vuelta ## Verificación de existencia Usa `^()` para preguntar si algo existe: ```bash ^(#wins) ^(#items[0]) ^(##balance) ``` Esto devuelve `true` o `false`. > tip: > > Si estás escribiendo un comando que guarda estado, `^()` suele ser la forma más limpia de decidir entre “inicializar” y “actualizar”. --- # Comandos Todo sobre los comandos predeterminados y personalizados de DomDimaBot. Source: https://docs.domdimabot.com/es/commands/overview/ Language: es Documentation index: https://docs.domdimabot.com/llms.txt Los comandos son la base de DomDimaBot. Se dividen en dos categorías: **Comandos Predeterminados** (incluidos) y **Comandos Personalizados** (creados por ti). ## Comandos Predeterminados Estos comandos vienen preinstalados con DomDimaBot. Son comandos incluidos por defecto, pero aquí **no** los llamamos “reservados” porque poco a poco se están convirtiendo en comandos normales que los usuarios pueden configurar y editar. > note: > > Esta sección coincide con la lista actual de comandos incluidos en la configuración del bot. Muchos de ellos pueden activarse, desactivarse y ajustarse con el tiempo. ### Niveles de Permiso * **Everyone** — cualquier viewer puede usarlo * **Moderator** — requiere acceso de moderador * **Editor** — comandos de gestión de nivel más alto ### 🎮 Stream, Chat y Moderación | Comando | Permiso | Estado por Defecto | Qué hace | | ------------- | --------- | ------------------ | ------------------------------------------------------------------------------- | | `!anuncio` | Moderator | Activado | Envía un anuncio al canal; visible en navegador web, no en móvil | | `!promo` | Moderator | Activado | Promo / shoutout por texto pensado para que se vea también en móvil | | `!so` | Moderator | Activado | Menciona a un usuario y puede enviar un clip si el sistema de clips está activo | | `!game` | Moderator | Activado | Cambia el juego / categoría actual | | `!title` | Moderator | Activado | Cambia el título actual del stream | | `!s` | Everyone | Desactivado | Hace que el bot hable en el chat | | `!onlyemotes` | Moderator | Activado | Activa o desactiva el modo solo emotes, opcionalmente por segundos | | `!vip` | Editor | Activado | Da VIP de forma permanente o temporal | | `!unvip` | Editor | Activado | Quita el VIP a un usuario | | `!mod` | Editor | Activado | Da moderador de forma permanente o temporal | | `!unmod` | Editor | Activado | Quita moderador a un usuario | | `!vanish` | Everyone | Activado | Hace que un usuario desaparezca del chat | | `!clearchat` | Moderator | Desactivado | Limpia el chat | ### 🎯 Predicciones y Encuestas | Comando | Permiso | Estado por Defecto | Qué hace | | -------------- | --------- | ------------------ | ---------------------------------------------------------------- | | `!predi` | Moderator | Activado | Crea una predicción | | `!lockpredi` | Moderator | Activado | Bloquea la predicción actual para que no se pueda seguir votando | | `!endpredi` | Moderator | Activado | Termina la predicción actual y elige la opción ganadora | | `!cancelpredi` | Moderator | Activado | Cancela la predicción actual | | `!poll` | Moderator | Activado | Crea una encuesta | | `!endpoll` | Moderator | Activado | Termina la encuesta actual | | `!cancelpoll` | Moderator | Activado | Cancela la encuesta actual | ### 🛠️ Gestión de Comandos y Temporizadores | Comando | Permiso | Estado por Defecto | Qué hace | | ----------- | --------- | ------------------ | -------------------------------------------------------------------- | | `!cc` | Moderator | Activado | Crea un comando personalizado | | `!ec` | Moderator | Activado | Edita un comando personalizado | | `!dc` | Moderator | Activado | Elimina un comando personalizado | | `!enable` | Moderator | Activado | Activa un comando | | `!disable` | Moderator | Activado | Desactiva un comando | | `!commands` | Everyone | Activado | Muestra los comandos disponibles para ese usuario según sus permisos | | `!cct` | Moderator | Activado | Crea un temporizador personalizado | | `!ect` | Moderator | Activado | Edita un temporizador existente | | `!dct` | Moderator | Activado | Elimina un temporizador | ### 🎉 Utilidad y Diversión | Comando | Permiso | Estado por Defecto | Qué hace | | ------------- | -------- | ------------------ | ------------------------------------------------------------- | | `!ruletarusa` | Everyone | Activado | Ruleta rusa; puede dar timeout de 150 segundos | | `!sumimetro` | Everyone | Activado | Da una lectura dominante / sumisa para ti o para otro usuario | | `!memide` | Everyone | Activado | Devuelve una medida imaginaria | | `!amor` | Everyone | Activado | Mide el amor entre dos usuarios | | `!ponerla` | Everyone | Activado | Devuelve un porcentaje de posibilidades | | `!mecabe` | Everyone | Activado | Devuelve un resultado en forma de medida / broma | | `!followage` | Everyone | Activado | Muestra cuánto tiempo lleva alguien siguiendo el canal | | `!clip` | Everyone | Activado | Crea un clip con duración y título opcionales | | `!duel` | Everyone | Activado | Inicia un duelo entre usuarios | ### Sintaxis Exacta y Límites #### `!anuncio` **Uso:** `!anuncio `\ **Límite:** el mensaje no puede superar `300` caracteres\ **Nota:** visible en navegadores web, no en móvil **Ejemplo:** ```text !anuncio Hola como estas ``` #### `!predi` **Uso:** `!predi ;/;`\ **Límites:** * título máximo de `30` caracteres * opciones de máximo `20` caracteres cada una * mínimo `2` opciones y máximo `10` * las opciones deben separarse con `/` * el tiempo debe estar entre `30` segundos y `5` minutos **Ejemplo:** ```text !predi ¿Ganara el streamer?;Si/No;60 ``` #### `!endpredi` **Uso:** `!endpredi `\ **Nota:** el número debe ser la opción ganadora **Ejemplo:** ```text !endpredi 1 ``` #### `!cancelpredi` **Uso:** `!cancelpredi`\ **Nota:** solo funciona si la predicción está activa o bloqueada #### `!lockpredi` **Uso:** `!lockpredi`\ **Nota:** solo funciona si la predicción está activa #### `!poll` **Uso:** `!poll ;/;`\ **Límites:** * título máximo de `25` caracteres * opciones de máximo `25` caracteres cada una * mínimo `2` opciones y máximo `5` * las opciones deben separarse con `/` * el tiempo debe estar entre `30` segundos y `5` minutos **Ejemplo:** ```text !poll ¿Ganara el streamer?;Si/No;60 ``` #### `!endpoll` **Uso:** `!endpoll`\ **Nota:** solo funciona si la encuesta está activa #### `!cancelpoll` **Uso:** `!cancelpoll`\ **Nota:** solo funciona si la encuesta está activa #### `!game` **Uso:** `!game ` **Ejemplo:** ```text !game Fortnite ``` #### `!title` **Uso:** `!title ` **Ejemplo:** ```text !title Hola como estas ``` #### `!s` **Uso:** `!s `\ **Estado por defecto:** desactivado **Ejemplo:** ```text !s Hola como estas ``` #### `!sumimetro` **Uso:** `!sumimetro [username]` **Ejemplos:** ```text !sumimetro !sumimetro username ``` #### `!memide` **Uso:** `!memide` #### `!amor` **Uso:** * `!amor ` * `!amor ` **Notas:** * si apuntas a tu propio usuario, responde con una frase negativa * si no pasas argumentos, recuerda cómo se usa y responde con una frase negativa #### `!ponerla` **Uso:** `!ponerla` #### `!mecabe` **Uso:** `!mecabe` #### `!onlyemotes` **Uso:** `!onlyemotes [segundos]` **Ejemplos:** ```text !onlyemotes !onlyemotes 10 ``` #### `!cc` **Uso:** `!cc [opciones] ` **Opciones soportadas:** * `-cd=` para cooldown * `-ul=` para user level **Límites:** * el nombre no puede tener espacios * el nombre no puede tener caracteres especiales * el nombre tiene máximo `20` caracteres * la respuesta tiene máximo `450` caracteres **Ejemplos:** ```text !cc discord Sigueme en mi discord: discord.cdom201.com !cc -cd=10 -ul=mod discord Sigueme en mi discord: discord.cdom201.com ``` #### `!ec` **Uso:** `!ec [opciones] ` **Opciones soportadas:** * `-cd=` * `-ul=` **Límites:** * el nombre no puede tener espacios * el nombre no puede tener caracteres especiales * el nombre tiene máximo `20` caracteres * la respuesta tiene máximo `450` caracteres **Ejemplos:** ```text !ec discord Sigueme en mi discord: discord.cdom201.com !ec -cd=10 -ul=mod discord Sigueme en mi discord: discord.cdom201.com ``` #### `!dc` **Uso:** `!dc ` **Ejemplo:** ```text !dc discord ``` #### `!followage` **Uso:** `!followage [username]` #### `!clip` **Uso:** * `!clip` * `!clip 20` * `!clip Momento epico` * `!clip 20 Momento epico` **Comportamiento:** * si el primer argumento es un número, se usa como duración * el rango válido es de `5` a `60` segundos * si el primer argumento no es un número, se usa como título * duraciones fuera de rango usan `30` segundos por defecto #### `!vip` **Uso:** `!vip [days]` **Nota:** el VIP temporal solo está disponible para usuarios **Premium** y **Pro**, con un máximo de `30` días. #### `!commands` **Uso:** `!commands`\ **Nota:** solo muestra los comandos disponibles para el nivel de permisos de ese usuario #### `!clearchat` **Uso:** `!clearchat`\ **Estado por defecto:** desactivado #### `!enable` **Uso:** `!enable ` #### `!disable` **Uso:** `!disable ` #### `!cct` **Uso:** `!cct ` **Ejemplos:** ```text !cct mitemporizador 15 Hola mundo! !cct saludo 30m Visita las redes! !cct recordatorio-pro 7m Este temporizador Pro se ejecuta cada siete minutos. ``` **Notas:** * este es un comando de temporizador repetitivo que funciona solo mientras el canal está en vivo; es distinto de los temporizadores de cuenta regresiva de una sola ejecución * un número sin sufijo se interpreta como minutos; también se aceptan `15m` y `1h` * intervalos Gratis: `15`, `30`, `45` o `60` minutos * intervalos Premium: múltiplos de `5` minutos desde `5` hasta `180` * intervalos Pro: cualquier minuto entero desde `1` hasta `180` * los intervalos existentes fuera del plan siguen funcionando después de cambiar de plan, pero para editarlos debes elegir un intervalo permitido por el plan actual * los mensajes admiten todo el analizador AST, incluidas referencias como `#(comando)` #### `!ect` **Uso:** `!ect [frecuencia] [mensaje]` **Nota:** el temporizador debe existir y cualquier edición debe cumplir las reglas de intervalo del plan actual **Ejemplo:** ```text !ect mitemporizador 10m Nuevo mensaje aqui ``` #### `!dct` **Uso:** `!dct ` **Ejemplo:** ```text !dct mitemporizador ``` #### `!mod` **Uso:** `!mod [days]` **Nota:** el moderador temporal solo está disponible para usuarios **Premium** y **Pro**, con un máximo de `30` días. #### `!unmod` **Uso:** `!unmod ` #### `!unvip` **Uso:** `!unvip ` #### `!vanish` **Uso:** `!vanish ` #### `!duel` **Uso:** * `!duel ` * `!duel accept` * `!duel decline` **Nota:** el usuario retado debe aceptar o declinar el duelo > tip: > > Si quieres lógica dinámica avanzada, variables, funciones, encadenamiento o estado guardado, continúa con la documentación AST en la siguiente sección. Aquí el objetivo es describir el conjunto actual de comandos incluidos por defecto. ## Comandos Personalizados Los comandos personalizados los creas tú y pueden enviar texto, usar funciones AST, guardar datos, activar media y llamar otros comandos. > tip: > > Consulta la página del [Dashboard](https://docs.domdimabot.com/es/dashboard/index.txt) para una guía visual sobre cómo crear y gestionar comandos personalizados a través de la interfaz web. ### Cómo Crear Comandos Personalizados Puedes crear comandos personalizados de dos maneras: **Por Chat** Usa el comando `!cc` directamente en el chat: ``` !cc ``` El nombre del comando se crea **sin** el `!`. **Ejemplo:** ``` 😎Streamer: !cc discord ¡Mira mi Discord! discord.gg/ejemplo 🤖 DomDimaBot: ¡Comando !discord creado! ``` Con opciones: ``` !cc -cd=300 -ul=tier1 discord ¡Discord solo para subs! discord.gg/subonly 🤖 DomDimaBot: ¡Comando !discord creado con configuración personalizada! ``` | Opción | Descripción | | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | | `-cd=` | Enfriamiento en segundos: usa un entero mayor que `5` al crear con `!cc`. Los valores de `5` o menos se convierten en `15`; `!ec` sí acepta `5`. | | `-ul=` | Nivel de usuario: `everyone`, `tier1`, `tier2`, `tier3`, `vip`, `founder`, `mod`, `editor`, `admin`, `broadcaster` | **Editar:** `!ec `\ **Eliminar:** `!dc ` **Por Dashboard** Navega a la sección **Comandos** en tu dashboard para un editor visual con: * Lista completa de comandos con interruptores de activar/desactivar * Configuración de enfriamiento y permisos * Editor de respuestas para texto / plantillas AST * Estadísticas de uso de comandos * Gestión de temporizadores ### Comandos Básicos vs Avanzados Hay dos formas útiles de entender los comandos personalizados: | Tipo | Mejor para | Ejemplo | | ----------------------------- | -------------------------------------------------- | ----------------------------------------- | | **Comandos de texto básicos** | enlaces, reglas, información simple | `!discord`, `!reglas`, `!horario` | | **Comandos AST** | respuestas dinámicas, contadores, lógica, triggers | `!uptime`, `!abrazo`, sistemas de lealtad | ### Nota importante sobre AST DomDimaBot **no** usa sintaxis tipo `{user}` o `{game}` para la lógica avanzada de comandos. Usa: * `$(user)` para el usuario actual * `$(twitch.game)` para el juego actual * `&p1`, `&p2`, `&t` para argumentos * `%(...)` para variables que tú mismo creas ## Ejemplos de Patrones Correctos para Comandos Personalizados **Texto** Respuestas de texto plano para información, enlaces y anuncios. ``` !cc discord ¡Mira mi Discord! discord.gg/ejemplo ``` **Ejemplo en chat:** ``` 💬 Espectador: !discord 🤖 DomDimaBot: ¡Mira mi Discord! discord.gg/ejemplo ``` ``` !cc reglas ¡Por favor sé amable y diviértete! ``` **Funciones** Las respuestas dinámicas deben usar funciones AST. **Ejemplo:** ``` !cc gameinfo $(twitch.channel) está jugando ahora mismo a $(twitch.game) ``` **Ejemplo en chat:** ``` 💬 Espectador: !gameinfo 🤖 DomDimaBot: DomDima está jugando ahora mismo a Valorant ``` **Parámetros** Usa `&p1`, `&p2` y `&t` cuando quieras recibir entrada del usuario. **Argumento único:** ``` !cc abrazo $(user) le manda un cálido abrazo a &p1! 🤗 ``` **Ejemplo en chat:** ``` 💬 Espectador: !abrazo @AmigoUsuario 🤖 DomDimaBot: Espectador le manda un cálido abrazo a @AmigoUsuario! 🤗 ``` **Texto restante:** ``` !cc decir $(user) dice: &t ``` **Ejemplo en chat:** ``` 💬 Espectador: !decir este bot está increíble 🤖 DomDimaBot: Espectador dice: este bot está increíble ``` **Datos Guardados** Las variables AST las creas tú. No existen por defecto. ``` !cc wins *(^(#wins) ? %(#wins *(%(#wins) + 1)) : %(#wins 1)) $(user) ahora tiene %(#wins) wins! ``` **Ejemplo en chat:** ``` 💬 Espectador: !wins 🤖 DomDimaBot: Espectador ahora tiene 1 wins! ``` En el siguiente uso: ```text 💬 Espectador: !wins 🤖 DomDimaBot: Espectador ahora tiene 2 wins! ``` **Triggers y Encadenamiento** Puedes disparar media configurada y llamar otros comandos desde AST. **Ejemplo de trigger:** ``` !cc airhorn $(trigger.send airhorn) AIRHORN! ``` **Ejemplo en chat:** ``` 💬 Espectador: !airhorn 🤖 DomDimaBot: AIRHORN! ``` Si existe un trigger llamado `airhorn`, se disparará cuando corra el comando. **Ejemplo de referencia a comando:** ``` !cc creator Mira mis enlaces aquí: #(discord) ``` Esto ejecuta el comando `discord` dentro de `creator`. ### Comandos Personalizados Avanzados Los ejemplos anteriores solo cubren lo básico. El sistema AST completo soporta: * **Condiciones** con `*(...)` * **Variables y almacenamiento** con `%(...)` * **Verificación de existencia** con `^(...)` * **Argumentos** con `&p1`, `&p2` y `&t` * **Referencias a comandos** con `#(...)` * **Bucles, arrays y lógica avanzada** * **Llamadas a funciones** para Twitch, moderación, TTS, triggers, EventSub y más 👉 Para la referencia AST completa y correcta, usa estas páginas: * **[Comandos Personalizados Avanzados](https://docs.domdimabot.com/es/commands/advanced/index.txt)** * **[Sintaxis y Datos de AST](https://docs.domdimabot.com/es/commands/advanced/syntax/index.txt)** * **[Referencia de Funciones AST](https://docs.domdimabot.com/es/commands/advanced/functions/index.txt)** * **[Ejecución, Errores y Límites de AST](https://docs.domdimabot.com/es/commands/advanced/execution/index.txt)** * **[Recetas y Patrones AST](https://docs.domdimabot.com/es/commands/advanced/recipes/index.txt)** *** *Para crear comandos personalizados, usa el comando `!cc` en el chat o visita la sección Comandos en tu panel de control.* --- # Panel de Control Navega y usa el panel de control de DomDimaBot. Source: https://docs.domdimabot.com/es/dashboard/ Language: es Documentation index: https://docs.domdimabot.com/llms.txt El panel de control de DomDimaBot es tu centro para configurar y monitorear tu bot. ## Secciones del Panel ### Vista General La vista principal del panel muestra: * Estado actual de la transmisión * Estadísticas rápidas (espectadores, seguidores, comandos usados) * Feed de actividad reciente * Disparadores activos ### Comandos * Crear y editar comandos de chat * Configurar permisos y enfriamientos * Previsualizar respuestas de comandos * Organizar comandos con etiquetas ### Recompensas * Gestionar recompensas de puntos del canal * Ver historial de canjes * Configurar recompensas automatizadas vs manuales * Configurar períodos de enfriamiento ### Disparadores * Subir archivos de medios (sonidos, imágenes) * Configurar eventos de disparadores * Probar secuencias de disparadores * Monitorear estado de conexión de OBS ### Ajustes * **General** — Nombre del canal, idioma, zona horaria * **Permisos** — Quién puede usar qué funciones * **Moderación** — Ajustes de auto-moderación * **Integraciones** — Conectar servicios externos ## Acciones Rápidas Accede a acciones comunes desde la barra de navegación superior: | Acción | Descripción | | ----------------------------- | ----------------------------------------------------------- | | **Probar Comando** | Probar rápidamente cualquier comando | | **Alternar Modo Transmisión** | Habilitar/deshabilitar funciones específicas de transmisión | | **Parada de Emergencia** | Deshabilitar todos los disparadores instantáneamente | | **Refrescar Panel** | Forzar sincronización con Twitch | ## Navegación Usa la barra lateral para navegar entre secciones. La barra lateral es contraíble en pantallas más pequeñas. * **Panel de Control** — Vista general y acciones rápidas * **Comandos** — Gestionar comandos de chat * **Recompensas** — Recompensas de puntos del canal * **Disparadores** — Medios y automatización * **Personalidad IA** — Ajustes de carácter del bot * **Analíticas** — Métricas e insights de transmisión * **Ajustes** — Opciones de configuración --- # Defensa de Follows Protege tu canal de avalanchas de follows, ataques con bots y hate raids. Source: https://docs.domdimabot.com/es/follow-defense/ Language: es Documentation index: https://docs.domdimabot.com/llms.txt Defensa de Follows ayuda a proteger tu stream cuando alguien envia una gran ola de cuentas bot a seguir tu canal. Estos ataques pueden llenar el chat de alertas, activar overlays repetidamente y saturar tu flujo de moderacion. DomDimaBot observa la velocidad de follows en segundo plano y puede pasar por tres niveles de proteccion: **Modo Silencioso**, **Modo Proteccion** y **Modo Ataque**. > note: > > Defensa de Follows se puede desactivar completamente. Si ya usas otro sistema de proteccion, desactiva la Defensa de Follows de DomDimaBot para evitar interferencias con tus alertas o moderacion. ## Que hace Defensa de Follows Cuando esta activado, DomDimaBot puede: * Detectar rafagas de follows demasiado rapidas en segundos. * Silenciar temporalmente alertas de follows para detener spam en chat y overlays. * Rastrear los followers de la ola actual para revision o accion posterior. * Banear nuevos follows durante eventos confirmados de proteccion. * Escalar manualmente a Modo Ataque con un comando personalizado. * Detectar raids y rastrear follows de raid sin tratarlos automaticamente como ataques. * Guardar historial de ataques y posibles fuentes de hate raid para referencia futura. ## Resumen de modos | Modo | Disparador predeterminado | Que sucede | | ------------------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | | **Normal** | Sin rafaga activa | Las alertas de follows funcionan normalmente. | | **Modo Silencioso** | 10 follows en 5 segundos | Se silencian las alertas de follows y se rastrea la ola. Todavia no hay bans. | | **Modo Proteccion** | 100 follows en la ventana de deteccion | DomDimaBot anuncia proteccion y banea nuevos follows de la ola, excepto si hay una raid activa. | | **Modo Ataque** | 500 follows o activacion manual | DomDimaBot banea todos los follows rastreados de la ola y sigue baneando nuevos follows hasta que el modo expire o se reinicie. | Todos los limites son configurables por canal. ## Como funciona la deteccion Defensa de Follows usa una ventana corta de tiempo en vez de esperar minutos para reaccionar. Por defecto: * **Limite silencioso:** 10 follows * **Ventana de deteccion:** 5 segundos * **Duracion de rastreo:** 60 segundos * **Limite de proteccion:** 100 follows * **Limite de ataque:** 500 follows Ejemplo: ```txt 10 follows en 5 segundos -> Modo Silencioso 100 follows en 5 segundos -> Modo Proteccion 500 follows en 5 segundos -> Modo Ataque ``` Si una rafaga solo llega al Modo Silencioso y luego se detiene, DomDimaBot vuelve a normal despues de la duracion de rastreo y envia un resumen corto en vez de spamear cada alerta de follow. ## Modo Silencioso Modo Silencioso es la primera capa de seguridad. Cuando se activa: * DomDimaBot deja de enviar mensajes de alerta de follows. * Los triggers relacionados con follows deben quedar silenciados mientras el modo esta activo. * Los followers de la ola se rastrean. * Nadie es baneado todavia. Esto es util para picos sospechosos que aun podrian ser legitimos. ## Modo Proteccion Modo Proteccion se activa cuando la ola de follows supera el limite de proteccion. Cuando se activa fuera de una raid: * DomDimaBot envia un aviso al chat. * Los nuevos follows de la ola son baneados usando el endpoint de bans de Twitch. * Los follows ya rastreados quedan disponibles para escalar. > caution: > > Modo Proteccion usa bans, no timeouts, cuando banea atacantes de follows. Asegurate de que tus limites coincidan con la actividad normal de tu canal. ## Modo Ataque Modo Ataque es la respuesta mas fuerte. Puede activarse automaticamente cuando se alcanza el limite de ataque, o manualmente con un comando AST. Cuando se activa: * DomDimaBot banea todos los followers rastreados de la ola actual. * DomDimaBot sigue baneando nuevos follows mientras el modo esta activo. * El evento se guarda en el historial de ataques. * Si se activo durante una raid, el raider puede registrarse como posible fuente de hate raid. > danger: > > Modo Ataque puede banear permanentemente muchas cuentas rapidamente. Usalo solo cuando tengas confianza de que la ola de follows es hostil. ## Comando manual: `!defmode` El backend proporciona una funcion AST para escalar manualmente: ```txt $(bot.mode attack) ``` Puedes crear el nombre de comando que prefieras. Un comando recomendado es: ```txt !defmode -> $(bot.mode attack) ``` Tambien puedes revisar el estado con: ```txt $(bot.mode status) ``` > tip: > > Limita tu comando de defensa a moderadores de confianza o al dueno del canal. Realiza acciones de moderacion. ## Comportamiento con raids No toda ola grande de follows es un ataque. Un streamer grande puede raidear tu canal con miles de espectadores y provocar cientos de follows legitimos. Cuando DomDimaBot recibe un evento de raid de Twitch: * Marca el canal como en ventana de raid durante 5 minutos. * Los follows durante esa ventana son rastreados. * DomDimaBot no anuncia automaticamente Modo Proteccion ni banea follows de raid solo porque se alcanzaron los limites. * Si activas manualmente Modo Ataque durante la raid, DomDimaBot trata la ola rastreada como hostil y puede registrar al raider como posible fuente de hate raid. Esto permite que las raids legitimas ocurran normalmente, pero te da una respuesta rapida si la raid se vuelve abusiva. ## Desactivacion global Usa la opcion global **Activar Defensa de Follows** para encender o apagar todo el sistema. Cuando Defensa de Follows esta desactivado: * DomDimaBot no encola eventos de defensa de follows. * DomDimaBot no silencia alertas de follows por estado de defensa. * DomDimaBot no realiza bans de defensa de follows. * El historial existente sigue disponible para revision. Esto se recomienda si ya usas otro bot o servicio de moderacion para protegerte de ataques de follows. ## Referencia de configuracion | Configuracion | Predeterminado | Descripcion | | ------------------------------ | -------------- | ----------------------------------------------------------------------------- | | **Activar Defensa de Follows** | Activado | Enciende o apaga todo el sistema. | | **Modo Silencioso activado** | Activado | Permite que la primera capa de proteccion silencie alertas. | | **Modo Proteccion activado** | Activado | Permite que DomDimaBot banee nuevos follows durante una avalancha confirmada. | | **Modo Ataque activado** | Activado | Permite bans automaticos o manuales de toda la ola. | | **Limite silencioso** | 10 | Numero de follows necesarios para entrar en Modo Silencioso. | | **Ventana de deteccion** | 5 segundos | Ventana de tiempo usada para detectar rafagas. | | **Limite de proteccion** | 100 | Numero de follows necesarios para entrar en Modo Proteccion. | | **Limite de ataque** | 500 | Numero de follows necesarios para entrar en Modo Ataque. | | **Duracion de rastreo** | 60 segundos | Cuanto tiempo DomDimaBot rastrea la ola actual. | | **Follows esperados por hora** | Personalizado | Linea base opcional que configuras para la actividad normal de tu canal. | ## Configuracion recomendada 1. **Activa Defensa de Follows** Activa la opcion global salvo que ya uses otro sistema de proteccion de follows. 2. **Configura limites realistas** Comienza con los valores predeterminados y ajustalos segun el tamano de tu canal y actividad normal de follows. 3. **Crea un comando manual de defensa** Agrega un comando solo para moderadores como `!defmode` que ejecute `$(bot.mode attack)`. 4. **Explica a tus moderadores que hace** Asegurate de que tus moderadores de confianza entiendan que Modo Ataque banea todos los follows rastreados en la ola activa. 5. **Revisa el historial despues de incidentes** Usa los logs de ataques y fuentes de hate raid para entender que paso y ajustar la configuracion despues. ## Escenarios comunes ### Un pico pequeno sospechoso Si llegan 10 follows en 5 segundos y luego se detienen, DomDimaBot entra en Modo Silencioso, silencia alertas, rastrea la ola y luego vuelve a normal con un resumen. ### Una avalancha clara de follows Si la ola llega al limite de proteccion fuera de una raid, DomDimaBot entra en Modo Proteccion y empieza a banear nuevos follows de la ola. ### Un ataque hostil grande Si la ola llega al limite de ataque, o un moderador usa `!defmode`, DomDimaBot entra en Modo Ataque y banea todos los follows rastreados de la ola. ### Una raid legitima grande Si hay un evento de raid activo de Twitch, DomDimaBot rastrea follows silenciosamente. No baneara automaticamente follows de raid salvo que actives Modo Ataque manualmente. --- # Getting Started Configura DomDimaBot y empieza a transmitir más inteligentemente. Source: https://docs.domdimabot.com/es/getting-started/ Language: es Documentation index: https://docs.domdimabot.com/llms.txt ¡Bienvenido a DomDimaBot! Esta guía te ayudará a conectar y configurar tu bot. ## Niveles de Autenticación DomDimaBot tiene dos niveles de acceso: | Función | Acceso Básico | Acceso Completo | | -------------------------- | ------------- | --------------- | | Comandos personalizados | ✅ | ✅ | | Interacción en chat | ✅ | ✅ | | Chat con personalidad IA | ❌ | ✅ | | Recompensas del canal | ❌ | ✅ | | Disparadores y medios | ❌ | ✅ | | Herramientas de moderación | ❌ | ✅ | | Analíticas | ❌ | ✅ | | Integraciones del streamer | ❌ | ✅ | El **Acceso Básico** se otorga automáticamente cuando inicias sesión por primera vez con Twitch. El **Acceso Completo** requiere que autorices al bot para acceder a tu cuenta de Twitch con todos los permisos necesarios. ## Proceso de Configuración 1. **Visita el panel de control** Ve a [domdimabot.com](https://domdimabot.com/) y haz clic en **Iniciar sesión con Twitch**. 2. **Autentícate con Twitch** * Si es tu primera vez, una cuenta de DomDimaBot se creará automáticamente * Si ya has usado DomDimaBot antes, iniciarás sesión con tu cuenta existente En este punto tienes **Acceso Básico** y puedes usar comandos personalizados y funciones básicas de chat. 3. **Autoriza el Acceso Completo** *(opcional pero recomendado)* Haz clic en **Autorizar Bot** en el encabezado del panel. Serás redirigido a Twitch para otorgar los permisos necesarios. El bot necesita acceso a herramientas de moderación, chat, encuestas, predicciones, suscripciones y más — todo lo que necesita para ejecutar tu transmisión sin problemas. > tip: > > Debes tener 2FA habilitado en tu cuenta de Twitch para otorgar estos permisos. Nunca se solicitan datos sensibles como tu clave de transmisión. Cuando autorizas, DomDimaBot automáticamente: * Crea comandos predeterminados para tu canal * Configura webhooks predeterminados para eventos en vivo * Prepara tu cuenta con valores por defecto Si omites este paso, tendrás que configurar todo manualmente. 4. **Configura los ajustes** Configura tu idioma preferido, zona horaria y preferencias de notificación desde el panel. 5. **Prueba tu bot** Escribe `!ping` en tu chat de Twitch para verificar que el bot está respondiendo. ## Próximos Pasos Una vez configurado, explora estas guías: * **[Comandos](https://docs.domdimabot.com/es/commands/overview/index.txt)** — Crea comandos personalizados de chat * **[Recompensas](https://docs.domdimabot.com/es/rewards/index.txt)** — Configura canjes de puntos del canal * **[Disparadores](https://docs.domdimabot.com/es/triggers/index.txt)** — Automatiza sonidos y overlays * **[Defensa de Follows](https://docs.domdimabot.com/es/follow-defense/index.txt)** — Protege tu canal de avalanchas de follows y hate raids * **[Personalidad IA](https://docs.domdimabot.com/es/ai-personality/index.txt)** — Configura el carácter de tu bot --- # Recompensas del Canal Gestiona y automatiza las recompensas de puntos de tu canal de Twitch. Source: https://docs.domdimabot.com/es/rewards/ Language: es Documentation index: https://docs.domdimabot.com/llms.txt Las recompensas de puntos del canal permiten a tus espectadores gastar sus puntos acumulados en experiencias e interacciones especiales. ## Configurar Recompensas Ve a **Recompensas** en tu panel para crear y gestionar las recompensas de puntos del canal. ### Propiedades de las Recompensas | Propiedad | Descripción | | --------- | ---------------------------------------------- | | `title` | Nombre mostrado a los espectadores | | `cost` | Puntos requeridos para canjear | | `prompt` | Instrucciones mostradas al canjear | | `enabled` | Si los espectadores pueden canjear actualmente | ## Recompensas Automáticas vs Manuales > tip: > > DomDimaBot soporta tanto recompensas automatizadas (manejadas enteramente por el bot) como recompensas manuales (requieren tu aprobación). ### Recompensas Automatizadas Estas recompensas se procesan inmediatamente cuando se canjean: * **Texto a Voz** — Leer mensajes de espectadores en voz alta * **Efectos de Sonido** — Reproducir clips de audio en la transmisión * **Disparadores de Overlay** — Mostrar animaciones/gráficos en la transmisión * **Comandos del Bot** — Ejecutar secuencias de comandos personalizados ### Recompensas Manuales Estas recompensas requieren tu aprobación antes de ejecutar: * **Shoutouts** — Obtener un shoutout personalizado en transmisión * **Rey/Reina del Chat** — Rol de reconocimiento especial * **Solicitudes Personalizadas** — Interacciones especiales que apruebes ## Enfriamientos de Recompensas Configura enfriamientos globales o por recompensa para prevenir spam: ``` Enfriamiento Global: 30 segundos (aplica a todas las recompensas) Efectos de Sonido: 60 segundos de enfriamiento por espectador ``` --- # Disparadores y Medios Automatiza sonidos, overlays y animaciones durante tu transmisión. Source: https://docs.domdimabot.com/es/triggers/ Language: es Documentation index: https://docs.domdimabot.com/llms.txt Los disparadores son acciones basadas en eventos que suceden automáticamente durante tu transmisión. Conecta sonidos, overlays y más a momentos específicos. ## Tipos de Disparadores ### Disparadores Basados en Chat Se activan con mensajes específicos de chat o uso de comandos: * Invocaciones de comandos personalizados * Detección de palabras clave * Patrones de frases ### Disparadores Basados en Eventos Reaccionan automáticamente a eventos de Twitch: * Nuevos seguidores * Nuevas suscripciones * Raids * Donaciones de Bits * Canjes de puntos del canal ## Tipos de Medios | Tipo | Descripción | | ------------ | ---------------------------------------------------------------- | | **Sonidos** | Clips de audio reproducidos a través del audio de la transmisión | | **Overlays** | Gráficos visuales/animaciones mostrados en la transmisión | | **TTS** | Mensajes de texto a voz | | **Combos** | Múltiples tipos de medios encadenados | ## Configurar Disparadores 1. **Navega a Disparadores** Abre la sección de Disparadores en tu panel. 2. **Sube Medios** Sube tus archivos de sonido, imágenes de overlay o configura los ajustes de TTS. 3. **Crea un Disparador** Selecciona el evento disparador y vincúlalo a la acción de medio deseada. 4. **Prueba** Usa el botón de prueba para previsualizar cómo actuará tu disparador en vivo. > caution: > > Los disparadores de medios requieren que OBS esté conectado a DomDimaBot para que los overlays y algunas funciones de audio funcionen correctamente. ## Conexión con OBS Para usar disparadores de overlay, necesitarás el plugin de OBS de DomDimaBot instalado. Consulta la [guía de configuración de OBS](https://docs.domdimabot.com/es/triggers/obs-setup/) para instrucciones. --- # Texto a Voz Configura y usa la salida de voz texto a voz para tu stream. Source: https://docs.domdimabot.com/es/tts/ Language: es Documentation index: https://docs.domdimabot.com/llms.txt El texto a voz (TTS) lee los mensajes de tus espectadores en voz alta durante tu stream. DomDimaBot soporta dos proveedores de TTS con diferentes calidades de voz, costos y capacidades. ## Proveedores ### Piper — Local (Todos los Planes) Piper es un motor de voz neural local que se ejecuta en el servidor de DomDimaBot. Esta disponible en todos los planes y usa creditos de IA. **Costo en creditos IA:** 1 credito por 50 caracteres **Voces disponibles:** * Ingles (EE.UU.) — `en_US-ryan-medium` * Espanol (Mexico) — `es_MX-ald-medium` **Caracteristicas:** * Sintesis rapida (local, sin llamadas a API) * Sin etiquetas expresivas/de emocion * Sin funciones premium de IA * Disponible para todos los usuarios sin importar su plan *** ### Fish Audio — Voces Clonadas (Todos los Planes) Fish Audio ofrece voces clonadas de personajes. Esta disponible en todos los planes y usa creditos de IA. **Voces disponibles:** * Gojo, Rias Gremory, Carlos Bodoque, Toji Fushiguro **Caracteristicas:** * Voces clonadas de personajes * Disponible con `$(tts.fish ...)` y `$(tts.clone ...)` * Tambien se puede usar como motor predeterminado del canal *** ## Resumen de Costos en Creditos IA | Proveedor | Creditos IA | | ---------- | ------------------- | | Piper | 1 por 50 caracteres | | Fish Audio | Usa creditos de IA | ## Creditos IA Mensuales por Plan | Plan | Creditos Mensuales | | ------- | ------------------ | | Free | 25,000 | | Premium | 125,000 | | Pro | 500,000 | > note: > > Los creditos IA se consumen cuando un mensaje TTS se encola para sintesis. El costo en creditos se calcula sobre el conteo de caracteres del mensaje hablado. ## Comandos ### `!s` — Hablar **Permiso:** Todos **Uso:** `!s ` Hace que DomDimaBot lea tu mensaje en voz alta usando el proveedor y voz de TTS predeterminados del canal. **Ejemplo:** ``` !s Hola chat, bienvenidos al stream ``` ### Funciones AST En comandos personalizados y el sistema AST, usa estas funciones para control detallado: | Funcion | Proveedor | Notas | | ------------------ | ------------------------ | ----------------------------------------- | | `$(tts ...)` | Proveedor predeterminado | Usa el motor TTS predeterminado del canal | | `$(tts.speak ...)` | Solo Piper | Fuerza la voz local de Piper | | `$(tts.ai ...)` | Proveedor predeterminado | Igual que `$(tts ...)` | | `$(tts.clone ...)` | Fish Audio | TTS con voz clonada | | `$(tts.fish ...)` | Fish Audio | Igual que `$(tts.clone ...)` | **Ejemplos:** ``` $(tts.speak Hola desde Piper) $(tts.fish gojo Hola desde Fish Audio) ``` ## Configuracion del Canal Configura el TTS en tu panel bajo **Modulos → Texto a Voz**: * **Habilitar/deshabilitar** TTS del canal * Seleccion de **proveedor predeterminado** (Piper o Fish Audio) * **Seleccion de voz** por idioma o voz clonada * **Filtros de mensaje** — omitir emotes, reemplazar enlaces, normalizar espacios, longitud maxima * **Configuracion de cola** — maximo de elementos TTS pendientes