Substituições e fórmulas
Substituições são variáveis no formato {{...}} que são inseridas em textos de mensagens, campos de ações e templates de botões quando uma reação é disparada. Substituições não reconhecidas são mantidas como estão. Além das variáveis, há fórmulas para cálculos. O botão "Substituições" no editor de mensagem facilita a inserção de variáveis.
Dados do remetente
{{first_name}},{{last_name}}— nome e sobrenome.{{username}}—@usernamedo usuário.{{user_id}}— ID numérico do Telegram.
Dados do evento e do chat
{{text}}(também{{received_message}}) — texto da mensagem recebida.{{message_id}}(também{{received_message_id}}) — ID da mensagem recebida.{{chat_id}},{{chat_title}}(também{{chat_name}}) — chat onde o evento ocorreu.{{topic_id}},{{topic_url}}— tópico (para fóruns).
Data e hora
{{date}}— data (AAAA-MM-DD),{{time}}— hora (HH:MM),{{datetime}}— data e hora.- Formatação:
{{date:DD.MM.YYYY HH:mm}}— tokensYYYY,YY,MM,DD,HH,mm,ss.
Parâmetros do usuário
{{param.chave}}(também{{params.chave}}ou{{recipient.chave}}) — valor do parâmetro do assinante. Os parâmetros são preenchidos pelas ações "Alterar parâmetros", "Salvar mensagem" e pelas respostas no diálogo.
Contexto de execução (ctx)
{{ctx.chave}}(também{{context.chave}}) — valores temporários da execução atual: dados do webhook recebido, resultados de ações (requisição web, consulta a fonte, IA), dados restaurados do botão (Carry), elementos do loop.- No loop de lista, o elemento fica acessível pelo seu alias, por exemplo
{{item.name}}.
Fórmulas
A construção {{= expressão}} avalia uma expressão diretamente no texto. O mesmo motor funciona na ação "Cálculo" e nas condições da tabela de decisão. Nas expressões, você pode referenciar parâmetros e valores de ctx pelo nome, usar aritmética, comparações, lógica e dezenas de funções (ROUND, IF, CONCAT etc.).
Exemplo: {{= ROUND(param.total * 0.9) }} — desconto de 10% sobre o total do parâmetro.
Sintaxe completa e lista de funções em Fórmulas.
HTML nas substituições
As mensagens são enviadas com marcação HTML. Para que um valor substituído não quebre o layout (por exemplo, quando um nome de usuário contém <), os valores substituídos são escapados por padrão: os caracteres HTML viram texto seguro. As tags que você escreve diretamente no texto da reação (<b>, <a>, …) ficam intactas.
Se um valor já contém marcação pronta (por exemplo, um anúncio salvo em um parâmetro com <b>...</b>) e você quer inseri-lo como está, prefixe a substituição com &:
{{& key}}— inserção bruta para as substituições{{...}}.{&user:key},{&recipient:key},{&global:key}— inserção bruta para as substituições de namespace.
O prefixo & desativa o escape apenas para aquela substituição — você assume a responsabilidade pela confiança na origem do valor. É melhor deixar escapados os tokens controlados pelo assinante ({{first_name}}, …).
Ao importar bots de outros construtores, as substituições de namespace {user:…}/{recipient:…}/{global:…} são migradas automaticamente para a forma bruta {&…} — geralmente contêm valores com marcação pronta, como funcionava no construtor de origem.
Sobre o formato
As substituições {{...}} funcionam em textos, legendas, corpos de requisições e templates de botões. Dê aos parâmetros e chaves de ctx nomes curtos e em inglês (email, total, order_id) — são mais fáceis de usar como substituições.
Próximos passos
- Fórmulas — sintaxe do DSL e lista completa de funções.
- Mensagens e botões — onde as substituições são aplicadas.
- Ações — ações que preenchem parâmetros e
ctx. - Coleções e dados — armazenamento de dados entre execuções.