@Quadri_Abdulsalam1 quando duplica, verifique a lista de Executions. O workflow está rodando múltiplas vezes por mensagem recebida, ou apenas uma vez? múltiplas = Telegram reenviando a atualização (uma tentativa), uma = um loop ou nó multi-item disparando seu send repetidamente. me diga qual é, ou compartilhe o workflow.
Bom ponto do @kall sobre os Retries. Um complemento sobre a causa: o Telegram repete uma chamada de webhook automaticamente se seu workflow do n8n não responder com um status 200 dentro de poucos segundos. Se seu workflow tem muitos nodes (chamada de IA, múltiplas requisições HTTP) antes da resposta voltar ao Telegram, isso já é suficiente para disparar um retry.
Um fix prático além da verificação de ID de atualização: divida o workflow em duas partes. Uma primeira parte enxuta que responde imediatamente com 200 OK (logo após o trigger do Telegram), e uma segunda parte que cuida do processamento real (gerar resposta de IA, enviar mensagem) de forma assíncrona, por exemplo através de um sub-workflow chamado via “Execute Workflow” sem aguardar. Isso previne o problema de retry na raiz, não apenas os sintomas.
Ei @Quadri_Abdulsalam1, ótimos pontos acima. Para deixar a deduplicação de update_id concreta, aqui está um rápido nó Code que você pode colocar logo após o Telegram Trigger:
const updateId = $input.first().json.update_id.toString();
const seen = $getWorkflowStaticData(‘global’);
if (seen[updateId]) {
return []; // already processed, stop here
}
seen[updateId] = true;
return $input.all();
Isso usa os dados estáticos de workflow integrados do n8n para lembrar quais valores de update_id já foram processados, sem necessidade de banco de dados externo. Combine isso com a sugestão de Rene de dividir em um sub-workflow de resposta rápida, e os envios duplicados devem parar completamente.