Custom Commands V3Flows y el editor
Custom Commands V3Beta

La lógica de tu bot, paso a paso

Un flow es una lista de pasos. El flow Pregunta del día tiene cinco: leer el catálogo, elegir la siguiente pregunta, publicarla, abrir un hilo y contarla. Añade un paso, conecta un valor, pruébalo y luego actívalo.

Pregunta del día

ActivoGuardar

Disparador

Cambiar

Horario, cada día a las 09:00

#1

Obtener valor de almacenamiento(get-storage-value)

Lee el catálogo de preguntas de{questions}

#2

Elegir la siguiente entrada(array-at)

La que sigue a la de ayer

#3

Enviar mensaje(send-message)

Parámetros de entrada

Canal:#general

Mensaje:Pregunta del día

#4

Crear hilo(start-thread-from-message)

Abre un hilo en ese mensaje

#5

Aumentar valor de almacenamiento(increment-storage-value)

Cuenta la pregunta como hecha en{asked}

Solo ilustrativo: la interfaz real puede variar

Lo que producen esos cinco pasos a las 09:00

Los cinco pasos producen un mensaje. El hilo que cuelga de él es donde llegan las respuestas, y el contador se asegura de que mañana toque la siguiente pregunta.

general
En línea
Tu botBOT09:00

Pregunta del día

¿Cuál es el único juego al que siempre vuelves, por viejo que se haga?

Pregunta 42 de 120

Mira09:04

Terraria. Lo reinstalo cada invierno.

Enviar mensaje a #general

Solo ilustrativo: la interfaz y el comportamiento reales pueden variar

Pasos, no scripts

Cada paso es una acción del catálogo con sus propias entradas, y el valor que produce un paso se puede conectar a cualquier paso posterior. El editor solo te ofrece los valores que encajan. Detrás de ese selector hay 691 acciones y 181 tipos de parámetro.

Valor fijo, variable conectada o plantilla

Cada entrada acepta una de las tres. Una plantilla mezcla tu propio texto con variables insertadas.

El selector de variables entiende los tipos

Oculta los valores que no encajan, entra en las propiedades de los objetos, te avisa de los valores que pueden estar vacíos y puede añadir un paso de conversión por ti.

Los valores conectados aparecen como chips

Los chips de estas filas son el catálogo de preguntas y el canal, así ves de dónde viene cada valor.

Cada paso tiene un coste

Desde Gratis hasta Muy pesado, y el flow te muestra su peor caso antes de que lo actives.

No tienes que empezar con un flow vacío. El panel incluye plantillas que puedes abrir y modificar: un respondedor de saludos, bienvenida a nuevos miembros, un comando /warn, un comando /remind, un sistema de XP, sugerencias y una inscripción a eventos.

Pregunta del día

ActivoGuardar

Disparador

Cambiar

Horario, cada día a las 09:00

#1

Obtener valor de almacenamiento(get-storage-value)

Lee el catálogo de preguntas de{questions}

#2

Elegir la siguiente entrada(array-at)

La que sigue a la de ayer

#3

Enviar mensaje(send-message)

Parámetros de entrada

Canal:#general

Mensaje:Pregunta del día

#4

Crear hilo(start-thread-from-message)

Abre un hilo en ese mensaje

#5

Aumentar valor de almacenamiento(increment-storage-value)

Cuenta la pregunta como hecha en{asked}

Solo ilustrativo: la interfaz real puede variar

Ramas y bucles

Las automatizaciones necesitan decisiones. Si, Switch, Rama aleatoria y Rama por subcomando dividen el flow; Para cada elemento, Para cada entrada del mapa y Repetir recorren listas y mapas con Break y Continue, y un bloque Try te da un lugar donde poner la recuperación cuando Discord dice que no.

Cada rama lleva sus propias variables

Un valor definido dentro de una rama pertenece a esa rama.

Try, con una rama En caso de error

Puede reaccionar según el código de error: Faltan permisos, No encontrado, Entrada no válida, Error de almacenamiento, Tiempo agotado, Interacción caducada.

Detente cuando sea lo correcto

El Si de este flow publica un recordatorio en el canal del staff y se detiene, en lugar de publicar una pregunta vacía.

Un bucle descontrolado se detiene solo, así que un error se frena en lugar de seguir toda la mañana.

Pregunta del día

ActivoGuardar

Disparador

Cambiar

Horario, cada día a las 09:00

#1

Obtener valor de almacenamiento(get-storage-value)

Lee el catálogo de preguntas de{questions}

#2

Si(if-condition)

El catálogo está vacío: publica un recordatorio en #staff y detente

#3

Para cada elemento(for-each)

Recorre el catálogo hasta encontrar una pregunta sin usar

#4

Enviar mensaje(send-message)

Publica la pregunta como embed en#general

#5

Crear hilo(start-thread-from-message)

Abre un hilo en ese mensaje

Solo ilustrativo: la interfaz real puede variar

Los flows pueden llamar a otros flows, y esperar es un paso

Escribe un comportamiento una vez y llámalo desde donde lo necesites. Y cuando un flow necesita una respuesta antes de continuar, esa espera queda registrada en lugar de guardarse en memoria, así que un reinicio del bot no la pierde.

Llamar a otro flow

Pasa valores y recibe resultados. Los flows que acabarían llamándose entre sí en círculo se rechazan.

Un flow llamado pertenece a la ejecución de quien lo llama

El historial de ejecuciones lo indica y enlaza con quien llama. Los eventos personalizados son la variante más flexible: un flow envía, otro escucha.

Las esperas sobreviven a un reinicio

Pide una confirmación, pide una elección, espera un mensaje, muestra una ventana emergente y espera el envío. Un reinicio en medio no pierde la espera.

Ejecuciones programadas

Programar ejecución de flow reserva una ejecución posterior desde dentro de un flow, y hay acciones para cancelar y listar las pendientes.

Si editas un flow mientras una ejecución suya espera a alguien, esa ejecución en espera se detiene y el registro lo indica. Para algo que deba seguir disponible durante meses, un botón que inicie un flow es la mejor herramienta: no cuesta nada mientras nadie lo pulsa y nunca caduca.

Revisar una sugerencia

ActivoGuardar

Disparador

Cambiar

Formulario enviado: Sugerir una pregunta

#1

Enviar mensaje(send-message)

Publica la sugerencia con un botón Aprobar en#staff

#2

Esperar botón(wait-for-interaction)

Pausa hasta que un moderador pulse

#3

Establecer valor de almacenamiento(set-storage-value)

Añade la pregunta a{questions}

#4

Llamar a otro flow(call-flow)

Pregunta del día, con la nueva pregunta como argumento

Solo ilustrativo: la interfaz real puede variar

Velo antes de publicarlo

Una ejecución de prueba simula el flow con los datos de tu propio servidor. No se envía, cambia ni borra nada. Tú eliges con qué usuario se ejecuta, en qué canal y qué datos le entrega el disparador, y el resultado muestra cada paso con lo que habría hecho. Probar no le cuesta nada a tu servidor.

Además, un flow se revisa antes de poder activarse, así que un problema aparece en el editor y no a las nueve de la mañana. Y un bucle descontrolado no puede tumbar tu bot: se detiene solo.

Borrador o activo

Los borradores se guardan y se revisan, pero nunca se ejecutan.

Guardar un flow activo surte efecto al instante

Tu bot recoge la nueva versión en cuanto guardas. Si no se aplica, la versión que ya estaba en marcha sigue gestionando el flow y puedes intentarlo de nuevo.

Nada se pierde por accidente

Si otra persona guardó el flow mientras lo tenías abierto, recibes un aviso en lugar de sobrescribir su trabajo. Los flows y módulos eliminados se pueden restaurar durante 30 días.

Una aclaración importante: solo las ejecuciones de prueba te muestran cada paso. Una ejecución real registra su estado, su duración y el paso en el que falló, no todo lo que recorrió.

Ejecución de prueba

Ejecución simulada, no se envió nada

Obtener valor de almacenamiento

Lee el catálogo, 120 entradas

Elegir la siguiente entrada

Pregunta 42

Enviar mensaje

Habría publicado en #general

Crear hilo

Habría abierto un hilo en ese mensaje

Aumentar valor de almacenamiento

El contador de preguntas pasaría de 41 a 42

Solo ilustrativo: la interfaz real puede variar

Preguntas sobre flows

Un flow que está esperando a alguien, sí. Las esperas como Pedir confirmación o Esperar un mensaje se registran en lugar de guardarse en memoria, así que sobreviven a un reinicio. Una excepción que conviene conocer: si editas el flow mientras una ejecución suya está esperando, esa ejecución se detiene y el registro lo indica.

¿Quieres tu servidor en la beta?

V3 es un sistema grande y aún avanza rápido, así que los servidores entran de uno en uno y no todos a la vez. Una persona lee cada solicitud, y te respondemos en unos días.

Los servidores que ya están en la beta deciden buena parte de lo que construimos después. Lo que creas es tuyo: los flows y los módulos se quedan cuando termina la beta.