Custom Commands V3Flows e o editor
Custom Commands V3Beta

A lógica do seu bot, passo a passo

Um flow é uma lista de passos. O flow Pergunta do dia tem cinco: ler o catálogo, escolher a próxima pergunta, postar, abrir um tópico e contar. Adicione um passo, ligue um valor a ele, teste e depois ative.

Pergunta do dia

AtivoSalvar

Gatilho

Alterar

Agendamento, todo dia às 09:00

#1

Obter valor de armazenamento(get-storage-value)

Ler o catálogo de perguntas de{questions}

#2

Escolher a próxima entrada(array-at)

A que vem depois da de ontem

#3

Enviar mensagem(send-message)

Parâmetros de entrada

Canal:#general

Mensagem:Pergunta do dia

#4

Criar tópico(start-thread-from-message)

Abrir um tópico nessa mensagem

#5

Aumentar valor de armazenamento(increment-storage-value)

Contar a pergunta como feita em{asked}

Apenas ilustrativo - a interface real pode ser diferente

O que esses cinco passos produzem às 09:00

Os cinco passos produzem uma mensagem. O tópico embaixo dela é onde as respostas chegam, e o contador garante que amanhã saia a próxima pergunta.

general
Online
Seu botBOT09:00

Pergunta do dia

Qual é o único jogo que você sempre volta a jogar, por mais velho que fique?

Pergunta 42 de 120

Mira09:04

Terraria. Reinstalo todo inverno.

Mensagem em #general

Apenas ilustrativo - a interface e o comportamento reais podem ser diferentes

Passos, não scripts

Cada passo é uma ação do catálogo, com as próprias entradas, e o valor que um passo produz pode ser ligado a qualquer passo seguinte. O editor só oferece os valores que combinam. Por trás desse seletor, são 691 ações e 181 tipos de parâmetro.

Valor fixo, variável ligada ou modelo

Toda entrada aceita um dos três. Um modelo mistura o seu texto com variáveis inseridas.

O seletor de variáveis entende tipos

Ele esconde os valores que não combinam, entra nas propriedades de objetos, avisa sobre valores que podem estar vazios e pode adicionar um passo de conversão para você.

Valores ligados aparecem como chips

Os chips nessas linhas são o catálogo de perguntas e o canal, assim você vê de onde cada valor veio.

Todo passo tem um custo

De Grátis a Muito pesado, e o flow mostra o pior caso antes de você ativá-lo.

Você não precisa começar de um flow vazio. O painel traz modelos que você pode abrir e alterar: um respondedor de saudações, boas-vindas para novos membros, um comando /warn, um comando /remind, um sistema de XP, sugestões e inscrição em eventos.

Pergunta do dia

AtivoSalvar

Gatilho

Alterar

Agendamento, todo dia às 09:00

#1

Obter valor de armazenamento(get-storage-value)

Ler o catálogo de perguntas de{questions}

#2

Escolher a próxima entrada(array-at)

A que vem depois da de ontem

#3

Enviar mensagem(send-message)

Parâmetros de entrada

Canal:#general

Mensagem:Pergunta do dia

#4

Criar tópico(start-thread-from-message)

Abrir um tópico nessa mensagem

#5

Aumentar valor de armazenamento(increment-storage-value)

Contar a pergunta como feita em{asked}

Apenas ilustrativo - a interface real pode ser diferente

Ramificações e loops

Automações precisam de decisões. Se, Switch, Ramificação aleatória e Ramificação por subcomando dividem o flow; Para cada item, Para cada entrada do mapa e Repetir percorrem listas e mapas com Interromper e Continuar; e um bloco Try dá um lugar para a recuperação quando o Discord diz não.

Cada ramificação tem as próprias variáveis

Um valor definido dentro de uma ramificação pertence a ela.

Try, com uma ramificação Em caso de erro

Ela pode se basear no código do erro: Permissões ausentes, Não encontrado, Entrada inválida, Erro de armazenamento, Tempo esgotado, Interação expirada.

Pare onde parar é a resposta certa

O Se deste flow posta um lembrete no canal da equipe e para, em vez de postar uma pergunta vazia.

Um loop descontrolado para sozinho, então um erro só interrompe o flow em vez de rodar a manhã inteira.

Pergunta do dia

AtivoSalvar

Gatilho

Alterar

Agendamento, todo dia às 09:00

#1

Obter valor de armazenamento(get-storage-value)

Ler o catálogo de perguntas de{questions}

#2

Se(if-condition)

O catálogo está vazio: postar um lembrete em #staff e parar

#3

Para cada item(for-each)

Percorrer o catálogo até aparecer uma pergunta ainda não usada

#4

Enviar mensagem(send-message)

Postar a pergunta como embed em#general

#5

Criar tópico(start-thread-from-message)

Abrir um tópico nessa mensagem

Apenas ilustrativo - a interface real pode ser diferente

Flows podem chamar outros flows, e esperar também é um passo

Escreva um comportamento uma vez e chame de onde precisar. E quando um flow precisa de uma resposta antes de continuar, essa espera fica registrada em vez de guardada na memória, então reiniciar o bot não a perde.

Chamar outro flow

Envie valores e receba os resultados de volta. Flows que acabariam chamando uns aos outros em círculo são recusados.

Um flow chamado faz parte da execução de quem chamou

O histórico de execuções mostra isso e leva de volta a quem chamou. Eventos personalizados são a versão mais solta: um flow envia, outro escuta.

Esperas sobrevivem a reinícios

Peça uma confirmação, peça uma escolha, espere uma mensagem, mostre um formulário pop-up e espere o envio. Um reinício no meio do caminho não perde a espera.

Execuções agendadas

Agendar execução de flow marca uma execução futura de dentro de um flow, e há ações para cancelar e listar o que está pendente.

Se você editar um flow enquanto uma execução dele espera por alguém, essa execução em espera é interrompida, e o registro avisa. Para algo que precisa continuar funcionando por meses, um botão que inicia um flow é a melhor ferramenta: não custa nada enquanto ninguém clica e nunca expira.

Revisar uma sugestão

AtivoSalvar

Gatilho

Alterar

Formulário pop-up enviado, Sugerir uma pergunta

#1

Enviar mensagem(send-message)

Postar a sugestão com um botão Aprovar em#staff

#2

Esperar botão(wait-for-interaction)

Pausar até um moderador clicar

#3

Definir valor de armazenamento(set-storage-value)

Adicionar a pergunta a{questions}

#4

Chamar outro flow(call-flow)

Pergunta do dia, com a nova pergunta como argumento

Apenas ilustrativo - a interface real pode ser diferente

Veja antes de publicar

Uma execução de teste simula o flow com os dados do seu próprio servidor. Nada é enviado, alterado ou apagado. Você escolhe como quem ele roda, em qual canal e o que o gatilho entrega, e o resultado mostra cada passo com o que ele teria feito. Testar não custa nada ao seu servidor.

Um flow também é verificado antes de poder ficar ativo, então o problema aparece no editor e não às nove da manhã. E um loop descontrolado não derruba o seu bot: ele para sozinho.

Rascunho ou ativo

Rascunhos são salvos e verificados, e nunca rodam.

Salvar um flow ativo vale na hora

Seu bot pega a nova versão assim que você salva. Se isso não funcionar, a versão que já estava rodando continua cuidando do flow e você pode tentar de novo.

Nada se perde por acidente

Se outra pessoa salvou o flow enquanto você o tinha aberto, você recebe um aviso em vez de sobrescrever o trabalho dela. Flows e módulos apagados podem ser restaurados por 30 dias.

Uma coisa precisa ficar clara: só as execuções de teste mostram todos os passos. Uma execução real registra o status, o tempo e o passo em que falhou, não tudo por onde passou.

Execução de teste

Execução simulada, nada foi enviado

Obter valor de armazenamento

Ler o catálogo, 120 entradas

Escolher a próxima entrada

Pergunta 42

Enviar mensagem

Teria postado em #general

Criar tópico

Teria aberto um tópico nessa mensagem

Aumentar valor de armazenamento

O contador de perguntas iria de 41 para 42

Apenas ilustrativo - a interface real pode ser diferente

Perguntas sobre flows

Um flow que está esperando por alguém continua. Esperas como Pedir confirmação ou Esperar uma mensagem ficam registradas em vez de guardadas na memória, então sobrevivem a um reinício. Uma exceção que vale conhecer: se você editar o flow enquanto uma execução dele está esperando, essa execução é interrompida, e o registro avisa.

Quer seu servidor no beta?

A V3 é um sistema grande e ainda muda rápido, então os servidores entram um de cada vez, não todos de uma vez. Cada inscrição é lida por uma pessoa, e você recebe a resposta em poucos dias.

Os servidores que já estão no beta decidem boa parte do que construímos a seguir. O que você criar é seu: flows e módulos ficam quando o beta acabar.