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
ActivoGuardarDisparador
CambiarHorario, cada día a las 09:00
Obtener valor de almacenamiento(get-storage-value)
Lee el catálogo de preguntas de{questions}
Elegir la siguiente entrada(array-at)
La que sigue a la de ayer
Enviar mensaje(send-message)
Parámetros de entrada
Canal:#general
Mensaje:Pregunta del día
Crear hilo(start-thread-from-message)
Abre un hilo en ese mensaje
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.
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
ActivoGuardarDisparador
CambiarHorario, cada día a las 09:00
Obtener valor de almacenamiento(get-storage-value)
Lee el catálogo de preguntas de{questions}
Elegir la siguiente entrada(array-at)
La que sigue a la de ayer
Enviar mensaje(send-message)
Parámetros de entrada
Canal:#general
Mensaje:Pregunta del día
Crear hilo(start-thread-from-message)
Abre un hilo en ese mensaje
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
ActivoGuardarDisparador
CambiarHorario, cada día a las 09:00
Obtener valor de almacenamiento(get-storage-value)
Lee el catálogo de preguntas de{questions}
Si(if-condition)
El catálogo está vacío: publica un recordatorio en #staff y detente
Para cada elemento(for-each)
Recorre el catálogo hasta encontrar una pregunta sin usar
Enviar mensaje(send-message)
Publica la pregunta como embed en#general
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
ActivoGuardarDisparador
CambiarFormulario enviado: Sugerir una pregunta
Enviar mensaje(send-message)
Publica la sugerencia con un botón Aprobar en#staff
Esperar botón(wait-for-interaction)
Pausa hasta que un moderador pulse
Establecer valor de almacenamiento(set-storage-value)
Añade la pregunta a{questions}
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ó nadaObtener 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.
Más sobre Custom Commands V3
¿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.