Otimo, o app esta no Vercel. Vou verificar os debug logs e depois corrigir o problema da URL do webhook:
Agora vejo claramente o problema. Os debug logs do cliente nao mostram NENHUM log [v0] do servidor - so avisos de imagem. Isso confirma que o webhook nao esta sendo chamado pelo Telegram, ou seja, a URL registrada esta errada.
O registro usa VERCEL_PROJECT_PRODUCTION_URL que e setado automaticamente pelo Vercel no deploy. Mas quando o usuario registra o webhook pela preview do v0, nenhuma dessas env vars esta setada, entao cai no fallback que pega o host do request - que e a URL de preview do v0.
Preciso que o usuario configure NEXT_PUBLIC_APP_URL com a URL de producao do Vercel. Vou solicitar isso:
Perfeito, a URL de producao esta configurada. Agora preciso garantir que a rota de registro use essa URL corretamente, e depois o usuario precisa re-registrar o webhook. Vou verificar a rota de registro:
A rota de registro ja usa NEXT_PUBLIC_APP_URL como fallback. Mas o problema e a ordem de prioridade: VERCEL_PROJECT_PRODUCTION_URL vem primeiro, e essa variavel pode nao estar setada no ambiente do v0. A variavel NEXT_PUBLIC_APP_URL que acabamos de configurar ja vai funcionar. Agora preciso garantir que a logica funcione perfeitamente e que o fallback de origin/host nunca seja usado quando temos a URL de producao:
Agora a rota de registro vai sempre usar a NEXT_PUBLIC_APP_URL e nunca mais vai cair num fallback de preview. Agora o usuario precisa re-registrar o webhook no bot. Mas para facilitar, vou tambem verificar e limpar os debug logs do webhook que adicionamos antes, pois vamos precisar testar de novo. Vou tambem verificar se o webhook processa o token da query string corretamente:
O codigo do webhook esta correto. O problema e 100% a URL do webhook registrada no Telegram - ela esta apontando para a URL de preview do v0 em vez da URL de producao.
Agora que NEXT_PUBLIC_APP_URL esta configurada, o usuario precisa re-registrar o webhook. Para facilitar isso, vou melhorar a pagina de bots para mostrar claramente a URL do webhook e o status:
Vejo que o registro do webhook acontece em 2 lugares: (1) ao criar bot na linha 215, (2) ao salvar configuracao se o token mudou na linha 148. O fetch("/api/telegram/register", ...) vai para o server side que agora usa NEXT_PUBLIC_APP_URL corretamente.
O problema e que o webhook ja foi registrado ANTES com a URL errada. O usuario precisa re-registrar. Vou adicionar um botao de "Re-registrar Webhook" no painel de configuracao do bot, e tambem mostrar o status atual do webhook:
Vou adicionar um card de "Status do Webhook" com botao de re-registrar, logo depois do botao "Salvar Configuracoes":
Agora vou adicionar o icone RefreshCw nos imports e criar o card de webhook status. Primeiro o import:
Agora vou adicionar estados para o webhook status e o card de webhook entre o botao "Salvar" e a secao "Planos":
Agora vou adicionar a funcao para buscar e re-registrar o webhook, e tambem buscar o status automaticamente quando o configBot muda:
Agora vou adicionar a funcao de buscar webhook info e re-registrar, logo depois do fetchPlans:
Agora vou adicionar o card de status do webhook entre o botao "Salvar Configuracoes" e a secao "Planos":
Agora faca o seguinte:
NEXT_PUBLIC_APP_URL/start no bot e as mensagens devem ser enviadasA correcao foi: (1) a rota /api/telegram/register agora obriga o uso de NEXT_PUBLIC_APP_URL e nunca mais cai no fallback de URL de preview; (2) adicionei um card de status do webhook no painel de configuracao do bot que mostra a URL registrada, erros do Telegram, e um botao para re-registrar facilmente.
You can send messages while the preview loads