Telegram (Bot API)
Status: pronto para produção para DMs de bot + grupos via grammY. Long polling é o modo padrão; o modo webhook é opcional.Pareamento
pairing.Solução de problemas de canais
Configuração do Gateway
Configuração rápida
Crie o token do bot no BotFather
@BotFather).Execute /newbot, siga os prompts e salve o token.Configure o token e a política de DM
TELEGRAM_BOT_TOKEN=... (somente conta padrão).
O Telegram não usa openclaw channels login telegram; configure o token em config/env e depois inicie o gateway.TELEGRAM_BOT_TOKEN se aplica somente à conta padrão.Configurações do lado do Telegram
Modo de privacidade e visibilidade em grupos
Modo de privacidade e visibilidade em grupos
- desative o modo de privacidade via
/setprivacy, ou - torne o bot um administrador do grupo.
Permissões de grupo
Permissões de grupo
Alternâncias úteis do BotFather
Alternâncias úteis do BotFather
/setjoingroupspara permitir/negar adições a grupos/setprivacypara comportamento de visibilidade em grupos
Controle de acesso e ativação
- Política de DM
- Política de grupo e allowlists
- Comportamento de menção
channels.telegram.dmPolicy controla o acesso a mensagens diretas:pairing(padrão)allowlist(exige pelo menos um ID de remetente emallowFrom)open(exige queallowFrominclua"*")disabled
channels.telegram.allowFrom aceita IDs numéricos de usuário do Telegram. Prefixos telegram: / tg: são aceitos e normalizados.
dmPolicy: "allowlist" com allowFrom vazio bloqueia todas as DMs e é rejeitado pela validação de configuração.
O onboarding aceita entrada @username e a resolve para IDs numéricos.
Se você atualizou e sua configuração contém entradas @username na allowlist, execute openclaw doctor --fix para resolvê-las (best-effort; requer um token de bot do Telegram).
Se você antes dependia de arquivos de allowlist do pairing store, openclaw doctor --fix pode recuperar entradas para channels.telegram.allowFrom em fluxos de allowlist (por exemplo quando dmPolicy: "allowlist" ainda não tem IDs explícitos).Para bots com um único dono, prefira dmPolicy: "allowlist" com IDs numéricos explícitos em allowFrom para manter a política de acesso durável na configuração (em vez de depender de aprovações de pareamento anteriores).Confusão comum: aprovação de pareamento por DM não significa “este remetente está autorizado em todo lugar”.
O pareamento concede acesso por DM apenas. A autorização de remetente em grupos continua vindo de allowlists explícitas na configuração.
Se você quer “estou autorizado uma vez e tanto DMs quanto comandos em grupo funcionam”, coloque seu ID numérico de usuário do Telegram em channels.telegram.allowFrom.Encontrando seu ID de usuário do Telegram
Mais seguro (sem bot de terceiros):- Envie uma DM ao seu bot.
- Execute
openclaw logs --follow. - Leia
from.id.
@userinfobot ou @getidsbot.Comportamento em runtime
- O Telegram é gerenciado pelo processo do gateway.
- O roteamento é determinístico: respostas recebidas do Telegram voltam para o Telegram (o modelo não escolhe canais).
- Mensagens de entrada são normalizadas para o envelope compartilhado de canal com metadados de resposta e placeholders de mídia.
- Sessões de grupo são isoladas por ID do grupo. Tópicos de fórum acrescentam
:topic:<threadId>para manter os tópicos isolados. - Mensagens de DM podem carregar
message_thread_id; o OpenClaw as roteia com chaves de sessão cientes da thread e preserva o ID da thread nas respostas. - O long polling usa grammY runner com sequenciamento por chat/por thread. A concorrência geral do runner sink usa
agents.defaults.maxConcurrent. - A Telegram Bot API não oferece suporte a confirmação de leitura (
sendReadReceiptsnão se aplica).
Referência de recursos
Prévia de stream ao vivo (edições de mensagem)
Prévia de stream ao vivo (edições de mensagem)
- chats diretos: mensagem de prévia +
editMessageText - grupos/tópicos: mensagem de prévia +
editMessageText
channels.telegram.streamingéoff | partial | block | progress(padrão:partial)progressé mapeado parapartialno Telegram (compatibilidade com nomenclatura entre canais)- valores legados booleanos de
channels.telegram.streamModeestreamingsão mapeados automaticamente
- DM: o OpenClaw mantém a mesma mensagem de prévia e faz uma edição final no lugar (sem segunda mensagem)
- grupo/tópico: o OpenClaw mantém a mesma mensagem de prévia e faz uma edição final no lugar (sem segunda mensagem)
sendMessage + editMessageText.Stream de raciocínio somente do Telegram:/reasoning streamenvia o raciocínio para a prévia ao vivo durante a geração- a resposta final é enviada sem o texto de raciocínio
Formatação e fallback para HTML
Formatação e fallback para HTML
parse_mode: "HTML" do Telegram.- Texto em estilo Markdown é renderizado em HTML seguro para Telegram.
- HTML bruto do modelo é escapado para reduzir falhas de parse do Telegram.
- Se o Telegram rejeitar o HTML parseado, o OpenClaw tenta novamente como texto simples.
channels.telegram.linkPreview: false.Comandos nativos e comandos personalizados
Comandos nativos e comandos personalizados
setMyCommands.Padrões de comandos nativos:commands.native: "auto"ativa comandos nativos para o Telegram
- nomes são normalizados (remove
/inicial, minúsculas) - padrão válido:
a-z,0-9,_, comprimento1..32 - comandos personalizados não podem substituir comandos nativos
- conflitos/duplicatas são ignorados e registrados em log
- comandos personalizados são apenas entradas de menu; eles não implementam comportamento automaticamente
- comandos de plugin/Skills ainda podem funcionar quando digitados, mesmo que não apareçam no menu do Telegram
setMyCommands failedcomBOT_COMMANDS_TOO_MUCHsignifica que o menu do Telegram ainda excedeu o limite após o corte; reduza comandos personalizados/de plugin/Skills ou desativechannels.telegram.commands.native.setMyCommands failedcom erros de rede/fetch normalmente significa que o DNS/HTTPS de saída paraapi.telegram.orgestá bloqueado.
Comandos de pareamento de dispositivo (plugin device-pair)
Quando o plugin device-pair estiver instalado:/pairgera um código de configuração- cole o código no app iOS
/pair pendinglista solicitações pendentes (incluindo papel/escopos)- aprove a solicitação:
/pair approve <requestId>para aprovação explícita/pair approvequando houver apenas uma solicitação pendente/pair approve latestpara a mais recente
scopes: []; qualquer token de operador transferido continua limitado a operator.approvals, operator.read, operator.talk.secrets e operator.write. As verificações de escopo do bootstrap têm prefixo de papel, então essa allowlist de operador só satisfaz solicitações de operador; papéis que não sejam de operador ainda precisam de escopos sob o prefixo do próprio papel.Se um dispositivo tentar novamente com detalhes de autenticação alterados (por exemplo papel/escopos/chave pública), a solicitação pendente anterior é substituída, e a nova solicitação usa um requestId diferente. Execute /pair pending novamente antes de aprovar.Mais detalhes: Pareamento.Botões inline
Botões inline
offdmgroupallallowlist(padrão)
capabilities: ["inlineButtons"] é mapeado para inlineButtons: "all".Exemplo de ação de mensagem:callback_data: <value>Ações de mensagem do Telegram para agentes e automação
Ações de mensagem do Telegram para agentes e automação
sendMessage(to,content,mediaUrl,replyToMessageId,messageThreadIdopcionais)react(chatId,messageId,emoji)deleteMessage(chatId,messageId)editMessage(chatId,messageId,content)createForumTopic(chatId,name,iconColor,iconCustomEmojiIdopcionais)
send, react, delete, edit, sticker, sticker-search, topic-create).Controles de bloqueio:channels.telegram.actions.sendMessagechannels.telegram.actions.deleteMessagechannels.telegram.actions.reactionschannels.telegram.actions.sticker(padrão: desativado)
edit e topic-create estão atualmente ativados por padrão e não têm alternâncias channels.telegram.actions.* separadas.
Envios em runtime usam o snapshot ativo de config/secrets (inicialização/reload), então caminhos de ação não fazem uma nova resolução ad hoc de SecretRef por envio.Semântica de remoção de reação: /tools/reactionsTags de encadeamento de resposta
Tags de encadeamento de resposta
Tópicos de fórum e comportamento de thread
Tópicos de fórum e comportamento de thread
- chaves de sessão de tópico acrescentam
:topic:<threadId> - respostas e digitação têm como alvo a thread do tópico
- caminho de configuração do tópico:
channels.telegram.groups.<chatId>.topics.<threadId>
threadId=1):- envios de mensagem omitem
message_thread_id(o Telegram rejeitasendMessage(...thread_id=1)) - ações de digitação ainda incluem
message_thread_id
requireMention, allowFrom, skills, systemPrompt, enabled, groupPolicy).
agentId é somente de tópico e não é herdado dos padrões de grupo.Roteamento de agente por tópico: cada tópico pode rotear para um agente diferente definindo agentId na configuração do tópico. Isso dá a cada tópico seu próprio workspace, memória e sessão isolados. Exemplo:agent:zu:telegram:group:-1001234567890:topic:3Binding persistente de tópico ACP: tópicos de fórum podem fixar sessões do harness ACP por meio de bindings ACP tipados de nível superior:bindings[]comtype: "acp"ematch.channel: "telegram"
/acp spawn <agent> --thread here|autopode vincular o tópico atual do Telegram a uma nova sessão ACP.- Mensagens subsequentes do tópico são roteadas diretamente para a sessão ACP vinculada (sem necessidade de
/acp steer). - O OpenClaw fixa a mensagem de confirmação do spawn dentro do tópico após um vínculo bem-sucedido.
- Requer
channels.telegram.threadBindings.spawnAcpSessions=true.
MessageThreadIdIsForum
- chats privados com
message_thread_idmantêm o roteamento de DM, mas usam chaves de sessão/alvos de resposta cientes da thread.
Áudio, vídeo e stickers
Áudio, vídeo e stickers
Mensagens de áudio
O Telegram distingue notas de voz de arquivos de áudio.- padrão: comportamento de arquivo de áudio
- tag
[[audio_as_voice]]na resposta do agente para forçar envio como nota de voz
Mensagens de vídeo
O Telegram distingue arquivos de vídeo de video notes.Exemplo de ação de mensagem:Stickers
Tratamento de sticker de entrada:- WEBP estático: baixado e processado (placeholder
<media:sticker>) - TGS animado: ignorado
- WEBM de vídeo: ignorado
Sticker.emojiSticker.setNameSticker.fileIdSticker.fileUniqueIdSticker.cachedDescription
~/.openclaw/telegram/sticker-cache.json
Notificações de reação
Notificações de reação
message_reaction (separadas dos payloads de mensagem).Quando ativado, o OpenClaw enfileira eventos de sistema como:Telegram reaction added: 👍 by Alice (@alice) on msg 42
channels.telegram.reactionNotifications:off | own | all(padrão:own)channels.telegram.reactionLevel:off | ack | minimal | extensive(padrão:minimal)
ownsignifica apenas reações de usuário a mensagens enviadas pelo bot (best-effort via cache de mensagens enviadas).- Eventos de reação ainda respeitam os controles de acesso do Telegram (
dmPolicy,allowFrom,groupPolicy,groupAllowFrom); remetentes não autorizados são descartados. - O Telegram não fornece IDs de thread em atualizações de reação.
- grupos sem fórum roteiam para a sessão do chat em grupo
- grupos com fórum roteiam para a sessão do tópico geral do grupo (
:topic:1), não para o tópico exato de origem
allowed_updates para polling/webhook inclui message_reaction automaticamente.Reações de confirmação
Reações de confirmação
ackReaction envia um emoji de confirmação enquanto o OpenClaw processa uma mensagem de entrada.Ordem de resolução:channels.telegram.accounts.<accountId>.ackReactionchannels.telegram.ackReactionmessages.ackReaction- fallback para emoji de identidade do agente (
agents.list[].identity.emoji, senão ”👀”)
- O Telegram espera emoji unicode (por exemplo ”👀”).
- Use
""para desativar a reação para um canal ou conta.
Gravações de config a partir de eventos e comandos do Telegram
Gravações de config a partir de eventos e comandos do Telegram
configWrites !== false).Gravações acionadas pelo Telegram incluem:- eventos de migração de grupo (
migrate_to_chat_id) para atualizarchannels.telegram.groups /config sete/config unset(requer ativação de comando)
Long polling vs webhook
Long polling vs webhook
- defina
channels.telegram.webhookUrl - defina
channels.telegram.webhookSecret(obrigatório quandowebhookUrlestiver definido) channels.telegram.webhookPathopcional (padrão/telegram-webhook)channels.telegram.webhookHostopcional (padrão127.0.0.1)channels.telegram.webhookPortopcional (padrão8787)
127.0.0.1:8787.Se seu endpoint público for diferente, coloque um proxy reverso na frente e aponte webhookUrl para a URL pública.
Defina webhookHost (por exemplo 0.0.0.0) quando você intencionalmente precisar de entrada externa.Limites, nova tentativa e alvos da CLI
Limites, nova tentativa e alvos da CLI
- o padrão de
channels.telegram.textChunkLimité 4000. channels.telegram.chunkMode="newline"prefere limites de parágrafo (linhas em branco) antes da divisão por comprimento.channels.telegram.mediaMaxMb(padrão 100) limita o tamanho de mídia de entrada e saída do Telegram.channels.telegram.timeoutSecondssubstitui o timeout do cliente da API do Telegram (se não definido, o padrão do grammY se aplica).- o histórico de contexto de grupo usa
channels.telegram.historyLimitoumessages.groupChat.historyLimit(padrão 50);0desativa. - o contexto suplementar de resposta/citação/encaminhamento atualmente é repassado como recebido.
- as allowlists do Telegram controlam principalmente quem pode acionar o agente, não um limite completo de redação de contexto suplementar.
- controles de histórico de DM:
channels.telegram.dmHistoryLimitchannels.telegram.dms["<user_id>"].historyLimit
- a configuração
channels.telegram.retryse aplica aos helpers de envio do Telegram (CLI/tools/actions) para erros recuperáveis de API de saída.
openclaw message poll e oferecem suporte a tópicos de fórum:--poll-duration-seconds(5-600)--poll-anonymous--poll-public--thread-idpara tópicos de fórum (ou use um alvo:topic:)
--buttonspara teclados inline quandochannels.telegram.capabilities.inlineButtonspermitir--force-documentpara enviar imagens e GIFs de saída como documentos em vez de upload comprimido de foto ou mídia animada
channels.telegram.actions.sendMessage=falsedesativa mensagens de saída do Telegram, incluindo enqueteschannels.telegram.actions.poll=falsedesativa a criação de enquete no Telegram enquanto mantém envios regulares ativados
Aprovações de exec no Telegram
Aprovações de exec no Telegram
channels.telegram.execApprovals.enabledchannels.telegram.execApprovals.approvers(opcional; recai para IDs numéricos de dono inferidos deallowFromedefaultTodireto quando possível)channels.telegram.execApprovals.target(dm|channel|both, padrão:dm)agentFilter,sessionFilter
enabled não está definido ou é "auto" e pelo menos um aprovador pode ser resolvido, seja a partir de execApprovals.approvers ou da configuração numérica de dono da conta (allowFrom e defaultTo de mensagem direta). Defina enabled: false para desativar explicitamente o Telegram como cliente nativo de aprovação. Caso contrário, solicitações de aprovação recorrem a outras rotas de aprovação configuradas ou à política fallback de aprovação de exec.O Telegram também renderiza os botões compartilhados de aprovação usados por outros canais de chat. O adaptador nativo do Telegram adiciona principalmente roteamento de DM para aprovadores, fanout para canal/tópico e indicações de digitação antes da entrega.
Quando esses botões estiverem presentes, eles serão a UX principal de aprovação; o OpenClaw
só deve incluir um comando manual /approve quando o resultado da ferramenta disser
que aprovações por chat não estão disponíveis ou quando a aprovação manual for o único caminho.Regras de entrega:target: "dm"envia prompts de aprovação somente para DMs de aprovadores resolvidostarget: "channel"envia o prompt de volta para o chat/tópico de origem no Telegramtarget: "both"envia para DMs de aprovadores e para o chat/tópico de origem
/approve e não podem usar botões de aprovação do Telegram.Comportamento de resolução de aprovação:- IDs com prefixo
plugin:sempre são resolvidos por aprovações de plugin. - Outros IDs tentam
exec.approval.resolveprimeiro. - Se o Telegram também estiver autorizado para aprovações de plugin e o gateway disser
que a aprovação de exec é desconhecida/expirada, o Telegram tenta novamente uma vez via
plugin.approval.resolve. - Negativas/erros reais de aprovação de exec não recorrem silenciosamente à resolução de aprovação de plugin.
channel ou both em grupos/tópicos confiáveis. Quando o prompt chega em um tópico de fórum, o OpenClaw preserva o tópico tanto para o prompt de aprovação quanto para o acompanhamento pós-aprovação. Aprovações de exec expiram após 30 minutos por padrão.Botões inline de aprovação também dependem de channels.telegram.capabilities.inlineButtons permitir a superfície alvo (dm, group ou all).Documentação relacionada: Aprovações de execControles de resposta de erro
Quando o agente encontra um erro de entrega ou de provedor, o Telegram pode responder com o texto do erro ou suprimi-lo. Duas chaves de configuração controlam esse comportamento:| Chave | Valores | Padrão | Descrição |
|---|---|---|---|
channels.telegram.errorPolicy | reply, silent | reply | reply envia uma mensagem de erro amigável para o chat. silent suprime totalmente respostas de erro. |
channels.telegram.errorCooldownMs | number (ms) | 60000 | Tempo mínimo entre respostas de erro para o mesmo chat. Evita spam de erros durante indisponibilidades. |
Solução de problemas
O bot não responde a mensagens de grupo sem menção
O bot não responde a mensagens de grupo sem menção
- Se
requireMention=false, o modo de privacidade do Telegram deve permitir visibilidade completa.- BotFather:
/setprivacy-> Disable - depois remova + adicione novamente o bot ao grupo
- BotFather:
openclaw channels statusemite aviso quando a configuração espera mensagens de grupo sem menção.openclaw channels status --probepode verificar IDs numéricos explícitos de grupo; o curinga"*"não pode ter associação verificada.- teste rápido de sessão:
/activation always.
O bot não está vendo mensagens de grupo de forma alguma
O bot não está vendo mensagens de grupo de forma alguma
- quando
channels.telegram.groupsexiste, o grupo precisa estar listado (ou incluir"*") - verifique se o bot é membro do grupo
- revise os logs:
openclaw logs --followpara motivos de ignorar
Os comandos funcionam parcialmente ou não funcionam
Os comandos funcionam parcialmente ou não funcionam
- autorize sua identidade de remetente (pareamento e/ou
allowFromnumérico) - a autorização de comandos ainda se aplica mesmo quando a política de grupo é
open setMyCommands failedcomBOT_COMMANDS_TOO_MUCHsignifica que o menu nativo tem entradas demais; reduza comandos personalizados/de plugin/Skills ou desative menus nativossetMyCommands failedcom erros de rede/fetch normalmente indica problemas de alcance DNS/HTTPS paraapi.telegram.org
Instabilidade de polling ou de rede
Instabilidade de polling ou de rede
- Node 22+ + fetch/proxy personalizado podem disparar comportamento de aborto imediato se os tipos de AbortSignal não forem compatíveis.
- Alguns hosts resolvem
api.telegram.orgpara IPv6 primeiro; saída IPv6 quebrada pode causar falhas intermitentes na API do Telegram. - Se os logs incluírem
TypeError: fetch failedouNetwork request for 'getUpdates' failed!, o OpenClaw agora tenta novamente esses casos como erros de rede recuperáveis. - Em hosts VPS com saída direta/TLS instável, encaminhe chamadas da API do Telegram por
channels.telegram.proxy:
- Node 22+ usa por padrão
autoSelectFamily=true(exceto WSL2) ednsResultOrder=ipv4first. - Se seu host for WSL2 ou funcionar explicitamente melhor com comportamento somente IPv4, force a seleção de família:
- Respostas da faixa de benchmark RFC 2544 (
198.18.0.0/15) já são permitidas por padrão para downloads de mídia do Telegram. Se um fake-IP confiável ou proxy transparente reescreverapi.telegram.orgpara algum outro endereço privado/interno/de uso especial durante downloads de mídia, você pode ativar o bypass somente do Telegram:
- A mesma ativação opcional também está disponível por conta em
channels.telegram.accounts.<accountId>.network.dangerouslyAllowPrivateNetwork. - Se seu proxy resolver hosts de mídia do Telegram em
198.18.x.x, deixe a flag perigosa desativada primeiro. A mídia do Telegram já permite a faixa de benchmark RFC 2544 por padrão.
- Substituições por ambiente (temporárias):
OPENCLAW_TELEGRAM_DISABLE_AUTO_SELECT_FAMILY=1OPENCLAW_TELEGRAM_ENABLE_AUTO_SELECT_FAMILY=1OPENCLAW_TELEGRAM_DNS_RESULT_ORDER=ipv4first
- Valide respostas DNS:
Ponteiros de referência da configuração do Telegram
Referência principal:-
channels.telegram.enabled: ativa/desativa a inicialização do canal. -
channels.telegram.botToken: token do bot (BotFather). -
channels.telegram.tokenFile: lê o token de um caminho de arquivo comum. Symlinks são rejeitados. -
channels.telegram.dmPolicy:pairing | allowlist | open | disabled(padrão: pairing). -
channels.telegram.allowFrom: allowlist de DM (IDs numéricos de usuário do Telegram).allowlistexige pelo menos um ID de remetente.openexige"*".openclaw doctor --fixpode resolver entradas legadas@usernamepara IDs e pode recuperar entradas de allowlist de arquivos do pairing store em fluxos de migração de allowlist. -
channels.telegram.actions.poll: ativa ou desativa a criação de enquetes no Telegram (padrão: ativado; ainda requersendMessage). -
channels.telegram.defaultTo: alvo padrão do Telegram usado por--deliverda CLI quando nenhum--reply-toexplícito é fornecido. -
channels.telegram.groupPolicy:open | allowlist | disabled(padrão: allowlist). -
channels.telegram.groupAllowFrom: allowlist de remetente em grupo (IDs numéricos de usuário do Telegram).openclaw doctor --fixpode resolver entradas legadas@usernamepara IDs. Entradas não numéricas são ignoradas no momento da autorização. A autorização em grupo não usa fallback do pairing store de DM (2026.2.25+). -
Precedência de múltiplas contas:
- Quando dois ou mais IDs de conta estiverem configurados, defina
channels.telegram.defaultAccount(ou incluachannels.telegram.accounts.default) para tornar o roteamento padrão explícito. - Se nenhum dos dois estiver definido, o OpenClaw recai para o primeiro ID de conta normalizado e
openclaw doctoremite aviso. channels.telegram.accounts.default.allowFromechannels.telegram.accounts.default.groupAllowFromse aplicam somente à contadefault.- Contas nomeadas herdam
channels.telegram.allowFromechannels.telegram.groupAllowFromquando os valores no nível da conta não estão definidos. - Contas nomeadas não herdam
channels.telegram.accounts.default.allowFrom/groupAllowFrom.
- Quando dois ou mais IDs de conta estiverem configurados, defina
-
channels.telegram.groups: padrões por grupo + allowlist (use"*"para padrões globais).channels.telegram.groups.<id>.groupPolicy: substituição por grupo paragroupPolicy(open | allowlist | disabled).channels.telegram.groups.<id>.requireMention: padrão de bloqueio por menção.channels.telegram.groups.<id>.skills: filtro de Skills (omitir = todas as Skills, vazio = nenhuma).channels.telegram.groups.<id>.allowFrom: substituição por grupo para allowlist de remetentes.channels.telegram.groups.<id>.systemPrompt: prompt de sistema extra para o grupo.channels.telegram.groups.<id>.enabled: desativa o grupo quandofalse.channels.telegram.groups.<id>.topics.<threadId>.*: substituições por tópico (campos de grupo +agentIdexclusivo de tópico).channels.telegram.groups.<id>.topics.<threadId>.agentId: roteia este tópico para um agente específico (substitui o roteamento de nível de grupo e por binding).
-
channels.telegram.groups.<id>.topics.<threadId>.groupPolicy: substituição por tópico paragroupPolicy(open | allowlist | disabled). -
channels.telegram.groups.<id>.topics.<threadId>.requireMention: substituição por tópico para bloqueio por menção. -
bindings[]de nível superior comtype: "acp"e ID canônico de tópicochatId:topic:topicIdemmatch.peer.id: campos de binding persistente de tópico ACP (veja Agentes ACP). -
channels.telegram.direct.<id>.topics.<threadId>.agentId: roteia tópicos de DM para um agente específico (mesmo comportamento de tópicos de fórum). -
channels.telegram.execApprovals.enabled: ativa o Telegram como cliente de aprovação de exec baseado em chat para esta conta. -
channels.telegram.execApprovals.approvers: IDs de usuário do Telegram autorizados a aprovar ou negar solicitações de exec. Opcional quandochannels.telegram.allowFromou umchannels.telegram.defaultTodireto já identifica o dono. -
channels.telegram.execApprovals.target:dm | channel | both(padrão:dm).channelebothpreservam o tópico de origem do Telegram quando presente. -
channels.telegram.execApprovals.agentFilter: filtro opcional por ID de agente para prompts de aprovação encaminhados. -
channels.telegram.execApprovals.sessionFilter: filtro opcional por chave de sessão (substring ou regex) para prompts de aprovação encaminhados. -
channels.telegram.accounts.<account>.execApprovals: substituição por conta para roteamento de aprovação de exec no Telegram e autorização de aprovadores. -
channels.telegram.capabilities.inlineButtons:off | dm | group | all | allowlist(padrão: allowlist). -
channels.telegram.accounts.<account>.capabilities.inlineButtons: substituição por conta. -
channels.telegram.commands.nativeSkills: ativa/desativa comandos nativos de Skills no Telegram. -
channels.telegram.replyToMode:off | first | all(padrão:off). -
channels.telegram.textChunkLimit: tamanho do chunk de saída (caracteres). -
channels.telegram.chunkMode:length(padrão) ounewlinepara dividir em linhas em branco (limites de parágrafo) antes da divisão por comprimento. -
channels.telegram.linkPreview: alterna prévias de link para mensagens de saída (padrão: true). -
channels.telegram.streaming:off | partial | block | progress(prévia de stream ao vivo; padrão:partial;progressé mapeado parapartial;blocké compatibilidade legada com modo de prévia). O streaming de prévia do Telegram usa uma única mensagem de prévia editada no lugar. -
channels.telegram.mediaMaxMb: limite de mídia de entrada/saída do Telegram (MB, padrão: 100). -
channels.telegram.retry: política de nova tentativa para helpers de envio do Telegram (CLI/tools/actions) em erros recuperáveis de API de saída (tentativas,minDelayMs,maxDelayMs, jitter). -
channels.telegram.network.autoSelectFamily: substitui o autoSelectFamily do Node (true=ativar, false=desativar). O padrão é ativado no Node 22+, com WSL2 usando desativado por padrão. -
channels.telegram.network.dnsResultOrder: substitui a ordem de resultado do DNS (ipv4firstouverbatim). O padrão éipv4firstno Node 22+. -
channels.telegram.network.dangerouslyAllowPrivateNetwork: ativação perigosa para ambientes confiáveis com fake-IP ou proxy transparente em que downloads de mídia do Telegram resolvemapi.telegram.orgpara endereços privados/internos/de uso especial fora da permissão padrão da faixa de benchmark RFC 2544. -
channels.telegram.proxy: URL de proxy para chamadas da Bot API (SOCKS/HTTP). -
channels.telegram.webhookUrl: ativa o modo webhook (requerchannels.telegram.webhookSecret). -
channels.telegram.webhookSecret: segredo do webhook (obrigatório quandowebhookUrlestiver definido). -
channels.telegram.webhookPath: caminho local do webhook (padrão/telegram-webhook). -
channels.telegram.webhookHost: host local de bind do webhook (padrão127.0.0.1). -
channels.telegram.webhookPort: porta local de bind do webhook (padrão8787). -
channels.telegram.actions.reactions: bloqueia reações da ferramenta do Telegram. -
channels.telegram.actions.sendMessage: bloqueia envios de mensagem da ferramenta do Telegram. -
channels.telegram.actions.deleteMessage: bloqueia exclusões de mensagem da ferramenta do Telegram. -
channels.telegram.actions.sticker: bloqueia ações de sticker do Telegram — envio e pesquisa (padrão: false). -
channels.telegram.reactionNotifications:off | own | all— controla quais reações acionam eventos de sistema (padrão:ownquando não definido). -
channels.telegram.reactionLevel:off | ack | minimal | extensive— controla a capacidade de reação do agente (padrão:minimalquando não definido). -
channels.telegram.errorPolicy:reply | silent— controla o comportamento de resposta de erro (padrão:reply). Substituições por conta/grupo/tópico são compatíveis. -
channels.telegram.errorCooldownMs: ms mínimos entre respostas de erro para o mesmo chat (padrão:60000). Evita spam de erros durante indisponibilidades. - Referência de configuração - Telegram
- inicialização/autenticação:
enabled,botToken,tokenFile,accounts.*(tokenFiledeve apontar para um arquivo comum; symlinks são rejeitados) - controle de acesso:
dmPolicy,allowFrom,groupPolicy,groupAllowFrom,groups,groups.*.topics.*,bindings[]de nível superior (type: "acp") - aprovações de exec:
execApprovals,accounts.*.execApprovals - comando/menu:
commands.native,commands.nativeSkills,customCommands - threading/respostas:
replyToMode - streaming:
streaming(prévia),blockStreaming - formatação/entrega:
textChunkLimit,chunkMode,linkPreview,responsePrefix - mídia/rede:
mediaMaxMb,timeoutSeconds,retry,network.autoSelectFamily,network.dangerouslyAllowPrivateNetwork,proxy - webhook:
webhookUrl,webhookSecret,webhookPath,webhookHost - ações/recursos:
capabilities.inlineButtons,actions.sendMessage|editMessage|deleteMessage|reactions|sticker - reações:
reactionNotifications,reactionLevel - erros:
errorPolicy,errorCooldownMs - gravações/histórico:
configWrites,historyLimit,dmHistoryLimit,dms.*.historyLimit