PT
Painéis de VPN

Bot de VPN no Telegram com pagamentos em cripto

Um bot do Telegram auto-hospedado que vende assinaturas de VPN por cripto. O cliente escolhe um plano no chat e paga na página da SnapEX Pay (USDT nas redes TRC20, ERC20 ou BEP20, além de outras moedas quando a SnapEX as oferece para esse valor). Depois que o pagamento é confirmado, o bot cria ou renova o usuário no seu painel Marzban, 3x-ui ou Remnawave e envia o link da assinatura no mesmo chat.

Baixar o módulo

Grátis. Versão 1.1.0.

O que faz

  • Sem carteira nem node de blockchain para manter: o dinheiro entra no seu saldo de comerciante na SnapEX Pay.
  • /start mostra seus planos como botões; cada toque cria uma fatura da SnapEX Pay e responde com um botão de pagamento.
  • Compatível com Marzban, 3x-ui (tanto a API de clientes do 3.1+ quanto a API mais antiga de inbounds) e Remnawave 2.x e 3.x. Com PANEL_TYPE=none, o bot só confirma o pagamento e você mesmo libera o acesso.
  • Webhook assinado (HMAC-SHA256, janela de 5 minutos); a fatura é relida na API da SnapEX Pay e só é provisionada quando está paga e corresponde a um pedido criado pelo bot. Entregas repetidas provisionam uma fatura uma única vez.
  • Renovações: um cliente que volta (mesma conta do Telegram) é renovado a partir do vencimento atual, ou a partir de agora, se ele já passou; um plano com limite de tráfego começa com uma cota nova.
  • Um só contêiner com long polling, então só a porta do webhook precisa estar acessível. Os pedidos ficam em SQLite com uma cópia do plano.

Instalação

  1. No painel do comerciante da SnapEX Pay, crie uma chave de API com os escopos invoices.read e invoices.write.
  2. Baixe e descompacte o arquivo, execute cp .env.example .env e defina o token do bot, a chave da SnapEX Pay, PANEL_TYPE (marzban, 3xui, remnawave ou none), as credenciais do painel e PLANS.
  3. Inicie o bot: docker compose up -d --build e depois acompanhe docker compose logs -f bot.
  4. O bot escuta na porta 8080 (/webhook e /health). Coloque-o atrás de um proxy reverso com TLS, como Caddy ou nginx.
  5. No painel → Desenvolvedores, defina a URL do webhook como https://<your bot host>/webhook, coloque a chave secreta whsec_… (exibida uma única vez, ao salvar a URL pela primeira vez) em SNAPEX_WEBHOOK_SECRET e reinicie. Envie /start ao bot e teste um plano com SNAPEX_ENVIRONMENT=test.

Configurações

TELEGRAM_BOT_TOKEN, SHOP_NAMEToken do bot obtido no @BotFather; o nome da loja exibido no /start e na descrição da fatura.
SNAPEX_API_KEY, SNAPEX_WEBHOOK_SECRETChave de API do comerciante (invoices.read, invoices.write) e a chave secreta do webhook (whsec_…).
SNAPEX_ENVIRONMENT, SNAPEX_FEE_ONFaturas live ou test; quem paga a taxa da SnapEX — merchant ou customer.
PANEL_TYPEmarzban, 3xui, remnawave ou none, além das credenciais desse painel.
PLANSid:days:price_usd:traffic_bytes separados por vírgula; 0 bytes = ilimitado.
SNAPEX_PARTNER_IDOpcional: o Partner ID do integrador que configurou o módulo (programa de indicações da SnapEX Pay). Deixe em branco se você mesmo fez a configuração.

Guia de configuração passo a passo →

Perguntas

Com quais painéis o bot funciona?

Marzban, 3x-ui (MHSanaei, as duas versões da API) e Remnawave 2.x e 3.x. Com PANEL_TYPE=none, ele só recebe os pagamentos.

Como um cliente é associado a um usuário da VPN?

O nome de usuário no painel é tg<telegram_id>, então cada conta do Telegram corresponde a exatamente um usuário da VPN, e um novo pagamento renova esse usuário.

E se eu mudar os preços depois?

Os pedidos guardam uma cópia do plano, então editar PLANS não altera pedidos que já foram pagos.

Um pagamento pode ser provisionado duas vezes?

Não. Entregas repetidas ou simultâneas do webhook provisionam uma fatura uma única vez, e cada toque no botão gera a sua própria fatura.

O servidor precisa de uma porta aberta para o Telegram?

Não. O bot usa long polling; só a porta do webhook, atrás de HTTPS, precisa estar acessível para a SnapEX Pay.

Pronto para receber em cripto?

Crie uma conta de comerciante, gere uma chave de API e conecte o módulo. 1% por pagamento, sem mensalidade.