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
AtivoSalvarGatilho
AlterarAgendamento, todo dia às 09:00
Obter valor de armazenamento(get-storage-value)
Ler o catálogo de perguntas de{questions}
Escolher a próxima entrada(array-at)
A que vem depois da de ontem
Enviar mensagem(send-message)
Parâmetros de entrada
Canal:#general
Mensagem:Pergunta do dia
Criar tópico(start-thread-from-message)
Abrir um tópico nessa mensagem
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.
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
AtivoSalvarGatilho
AlterarAgendamento, todo dia às 09:00
Obter valor de armazenamento(get-storage-value)
Ler o catálogo de perguntas de{questions}
Escolher a próxima entrada(array-at)
A que vem depois da de ontem
Enviar mensagem(send-message)
Parâmetros de entrada
Canal:#general
Mensagem:Pergunta do dia
Criar tópico(start-thread-from-message)
Abrir um tópico nessa mensagem
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
AtivoSalvarGatilho
AlterarAgendamento, todo dia às 09:00
Obter valor de armazenamento(get-storage-value)
Ler o catálogo de perguntas de{questions}
Se(if-condition)
O catálogo está vazio: postar um lembrete em #staff e parar
Para cada item(for-each)
Percorrer o catálogo até aparecer uma pergunta ainda não usada
Enviar mensagem(send-message)
Postar a pergunta como embed em#general
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
AtivoSalvarGatilho
AlterarFormulário pop-up enviado, Sugerir uma pergunta
Enviar mensagem(send-message)
Postar a sugestão com um botão Aprovar em#staff
Esperar botão(wait-for-interaction)
Pausar até um moderador clicar
Definir valor de armazenamento(set-storage-value)
Adicionar a pergunta a{questions}
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 enviadoObter 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.
Mais sobre o Custom Commands V3
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.