Guia do Pacote NPM
O pacote @botgate/botgate-stats-reporter é a forma oficial e mais simples de integrar seu bot com o ecossistema do BotGate. Ele gerencia automaticamente o envio de estatísticas, sincroniza seu Tier em tempo real e oferece métodos para consultar dados da plataforma diretamente do seu código.
📦 Instalação
Abra o terminal no diretório do seu projeto e execute:
npm install @botgate/botgate-stats-reporter
🚀 Como utilizar
A integração é feita de forma simples e reativa. Basta instanciar a classe BotGateReporter e iniciar o monitoramento.
Exemplo com Discord.js
import { Client, GatewayIntentBits } from "discord.js";
import { BotGateReporter } from "@botgate/stats-reporter";
const client = new Client({
intents: [GatewayIntentBits.Guilds],
});
// Instanciando o reporter
const reporter = new BotGateReporter({
botId: "SEU_BOT_ID",
apiKey: "SUA_API_KEY",
debug: true,
});
client.once("ready", () => {
console.log(`Bot logado como ${client.user.tag}`);
// Inicia o loop automático e o monitoramento de Heartbeats (para Business)
reporter.start(client);
});
client.login(process.env.DISCORD_TOKEN);
⚙️ Configuração
Ao instanciar o BotGateReporter, você pode passar as seguintes opções:
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
botId | string | Sim | ID do seu bot no Discord. |
apiKey | string | Sim | Sua chave de API obtida no painel do BotGate. |
enableWebhooks | boolean | Não | Ativa o servidor interno para receber eventos (votos, etc). Padrão: false. |
autoConfig | boolean | Não | Se true, o bot detecta seu IP e configura o webhook no site automaticamente. Padrão: false. |
debug | boolean | Não | Se true, exibe logs detalhados no console. Padrão: false. |
🛠️ Métodos do Reporter
Além do monitoramento automático, a biblioteca expõe métodos poderosos para você usar no seu bot:
Monitoramento de Ciclo
reporter.start(client): Inicia o envio automático de estatísticas e heartbeats.reporter.stop(): Para todos os timers e processos em segundo plano.
Consultas de Dados (API v1)
Todos os métodos abaixo retornam uma Promise<BotGateResponse>.
| Método | Descrição |
|---|---|
getBotInfo() | Retorna todos os dados do bot, incluindo plano (Tier) e stats. |
getBotVotes(botId, limit) | Busca os últimos votos e totais (dia/semana/mês). |
getApiUsage() | Retorna o consumo atual da sua cota de API e pontos de reset. |
getStatsHistory(botId, period) | Retorna dados históricos de crescimento (daily, weekly, monthly). |
getBotAnalytics() | Retorna KPIs e tendências avançadas de uso. |
sendHeartbeat() | Força o envio de um sinal de vida (disponível apenas no plano Business). |
handleShardMessage(msg) | Processa mensagens IPC em bots com Sharding para emitir eventos de voto. |
⚡ Eventos em Tempo Real (Webhooks)
O @botgate/botgate-stats-reporter agora suporta eventos reativos. Isso permite que você execute código assim que um voto for detectado no BotGate, sem precisar fazer "polling" na API.
1. Configuração Automática (Recomendado)
Ao ativar o autoConfig: true, o bot descobre seu próprio IP público e registra o endereço técnico de integração no BotGate automaticamente. Isso mantém seus alertas de erro no Discord intactos e ativa a integração de código em paralelo.
const reporter = new BotGateReporter({
botId: "ID",
apiKey: "KEY",
enableWebhooks: true, // Abre a porta 8080
autoConfig: true, // Faz a mágica acontecer sozinha
});
reporter.on("vote", (vote) => {
console.log(`🎁 Recompensando ${vote.username} (${vote.user_id})`);
// Lógica de cargos, moedas, etc aqui
});
2. Suporte a Sharding
Se o seu bot usa ShardingManager, você deve centralizar o servidor de Webhook no arquivo principal (manager) e repassar para os shards.
No Shard (index.js):
const reporter = new BotGateReporter({
botId: "ID",
apiKey: "KEY",
autoConfig: true, // Registra o IP no dashboard
enableWebhooks: false, // O Manager cuidará da porta 8080
});
// Escuta mensagens do Manager e repassa para a lib
process.on("message", (msg) => reporter.handleShardMessage(msg));
reporter.on("vote", (vote) => {
// Executado em todos os shards simultaneamente
client.users.send(vote.user_id, "Obrigado por votar! 💎");
});
🧠 Sincronização em Tempo Real
Diferente de outros SDKs, o @botgate/stats-reporter é reativo e auto-ajustável. Ele monitora as respostas do servidor em cada requisição para garantir que o bot esteja sempre operando no limite máximo de performance do seu plano atual.
- Upgrade Detectado (Hot Swap): Se você assinar um plano superior (ex: Premium ➔ Business), o servidor enviará os novos limites na resposta de sucesso (200 OK). O SDK detecta isso instantaneamente e acelera o intervalo de postagem (ex: de 5 min para 1 min) sem que você precise reiniciar o bot.
- Downgrade e Slowdown: Caso o plano expire ou seja alterado para um inferior, o servidor retornará um erro
429 (Too Many Requests)informando o novo tempo de espera. O SDK captura esse erro, lê o novo intervalo e se reconfigura automaticamente para o ritmo mais lento, evitando "flood" de erros no seu console. - Grace Period (Tolerância): Implementamos uma margem de segurança de 5 segundos no servidor e no SDK. Isso evita que pequenas variações de milissegundos no cronômetro do Node.js ou latência de rede causem bloqueios por Rate Limit.
- Gestão de Heartbeat: O monitoramento de uptime (sinal de vida) é ativado ou desativado em tempo real conforme as permissões do seu Tier, garantindo que o seu status no painel seja sempre preciso.