Voltar ao blog

Proxies para Bots do Discord: Como Configurar Automação sem Banimentos e Limites de Taxa

Guia completo para configurar proxies para bots do Discord: escolha do tipo de proxy, configuração de rotação de IP, contorno de limites de taxa e proteção contra bans na automação.

📅20 de janeiro de 2026
```html

O Discord está ativamente combatendo a automação e bots, utilizando sistemas avançados de detecção: análise de endereços IP, padrões de comportamento e limites de taxa. Se você está executando bots para moderação, envio de mensagens ou automação de ações em servidores, sem proxies configurados corretamente, você enfrentará bloqueios já nas primeiras horas de operação. Neste guia, vamos discutir quais proxies são adequados para o Discord, como configurar a rotação de IP e contornar os mecanismos de proteção da plataforma.

Por que o Discord bloqueia bots e como funciona a proteção

O Discord utiliza um sistema de proteção em múltiplas camadas contra automação, que analisa vários parâmetros simultaneamente. A plataforma não apenas verifica a quantidade de solicitações de um único IP — ela constrói um perfil de comportamento de cada conexão e o compara com padrões de usuários normais.

Os principais mecanismos de detecção de bots no Discord:

  • Limites de Taxa — O Discord estabelece restrições rigorosas sobre a quantidade de ações em um determinado período de tempo. Por exemplo, não mais do que 5 mensagens a cada 5 segundos de uma única conta, não mais do que 50 solicitações à API por minuto. O excesso dos limites resulta em bloqueio temporário (HTTP 429).
  • Análise de Endereços IP — se vários bots estão operando de um único IP ou se há atividade suspeita (mudança rápida de contas, ações em massa), o Discord pode bloquear todo o endereço IP por várias horas ou dias.
  • Fingerprinting de Conexões — a plataforma analisa parâmetros técnicos: User-Agent, cabeçalhos de solicitações, versão da biblioteca, tempo de resposta. Se os parâmetros não correspondem ao cliente normal do Discord, a conta é marcada como suspeita.
  • Análise Comportamental — o Discord monitora padrões de ações: reações muito rápidas, intervalos ideais entre mensagens, ausência de aleatoriedade nas ações. Bots que operam com um algoritmo rígido são identificados mais rapidamente.

Cenários típicos de bloqueio sem proxies:

  • Executar 3-5 bots de um único IP doméstico — bloqueio do IP em 2-6 horas após o início da operação
  • Envio em massa de convites para o servidor — banimento da conta e do IP após 10-15 convites enviados
  • Moderação automática (remoção de mensagens, atribuição de funções) — bloqueio ao exceder 100 ações por hora de um único IP
  • Parsing de membros de servidores — detecção e banimento após escanear 200-300 perfis

Proxies resolvem esses problemas, distribuindo solicitações entre diferentes endereços IP e criando a aparência de usuários normais de diferentes locais. Mas é importante escolher o tipo de proxy corretamente e configurar a rotação — uma configuração inadequada pode levar a bans ainda mais rápidos.

Quais tipos de proxies são adequados para bots do Discord

A escolha do tipo de proxy depende das suas tarefas: número de bots, frequência de solicitações, orçamento e nível de anonimato necessário. Vamos considerar três tipos principais de proxies e suas aplicações para o Discord.

Tipo de Proxy Vantagens Desvantagens Adequado para
Proxies de Data Center Alta velocidade (ping 10-50 ms), baixo custo ($1-3 por IP/mês), estabilidade O Discord reconhece facilmente IPs de data centers, alto risco de bloqueio em ações em massa Testes, automação leve (1-2 bots), tarefas sem solicitações em massa
Proxies Residenciais IPs reais de usuários domésticos, risco mínimo de bloqueio, grande pool de endereços (milhões de IPs) Velocidade média (ping 100-300 ms), custo mais alto ($5-15 por GB de tráfego), instabilidade de alguns IPs Envios em massa, parsing de servidores, trabalho com 5+ bots, projetos de longo prazo
Proxies Móveis IPs de operadoras móveis (4G/5G), máxima confiança do Discord, troca dinâmica de IP Custo elevado ($50-150 por IP/mês), pool de endereços menor, possíveis quedas de conexão Contas críticas, contorno de bloqueios severos, trabalho com contas de alto valor

Recomendações para escolha para diferentes tarefas:

Moderação e gerenciamento de servidor (1-3 bots): Proxies residenciais com IPs fixos. Um bot — um IP, sem rotação. Isso cria um perfil de conexão estável que o Discord percebe como um usuário administrador normal.

Envios em massa e convites (10+ bots): Proxies residenciais com rotação a cada 5-10 minutos. Distribua a carga: não mais do que 20 ações por hora de um único IP. Use um pool de 50+ endereços IP para 10 bots.

Parsing de membros e servidores: Proxies residenciais com rotação rápida (a cada 1-3 minutos) ou proxies móveis. O parsing é uma das atividades mais arriscadas, o Discord facilmente detecta padrões de escaneamento. Use atrasos aleatórios entre solicitações (30-120 segundos).

Testes e desenvolvimento: Proxies de data center são suficientes para depurar funcionalidades. Mas antes de lançar em produção, certifique-se de mudar para proxies residenciais — o comportamento do Discord pode variar significativamente para diferentes tipos de IP.

Um ponto importante: o Discord é especialmente rigoroso com endereços IP de certos países e regiões. IPs da Rússia, China, Vietnã e Índia estão sujeitos a verificações mais rigorosas devido à alta atividade de spammers. Se seu público-alvo está nos EUA ou na Europa, use proxies dessas regiões — isso reduzirá a probabilidade de bloqueios em 40-60%.

Como contornar os limites de taxa do Discord através de proxies

Limites de taxa no Discord são restrições sobre a quantidade de solicitações à API em um determinado período de tempo. Eles vêm em dois tipos: globais (para todo o aplicativo) e por rota (para endpoints específicos). Proxies ajudam a distribuir a carga entre diferentes IPs, mas isso não significa que você pode ignorar os limites — o Discord monitora a atividade no nível do token do bot.

Principais limites de taxa da API do Discord:

  • Envio de mensagens: 5 mensagens a cada 5 segundos em um canal, 50 mensagens a cada 10 segundos globalmente para o bot
  • Criação/remoção de canais: 50 solicitações a cada 10 minutos
  • Alteração de funções de membros: 10 solicitações a cada 10 segundos
  • Obtenção da lista de membros: 1 solicitação por segundo (o limite mais rigoroso)
  • Envio de DM (mensagens diretas): 5 DMs a cada 5 segundos, bloqueio por envios em massa para usuários desconhecidos

Quando você excede o limite, o Discord retorna HTTP 429 (Too Many Requests) com o cabeçalho Retry-After, indicando o tempo de espera em segundos. O tratamento correto dessa resposta é crítico.

Estratégia para contornar limites de taxa com proxies:

# Exemplo em Python (discord.py) com rotação de proxies ao atingir limite de taxa

import discord
from discord.ext import commands
import aiohttp
import asyncio
import random

class ProxyRotator:
    def __init__(self, proxy_list):
        self.proxies = proxy_list  # ['http://user:pass@ip:port', ...]
        self.current_index = 0
        self.failed_proxies = set()
    
    def get_next_proxy(self):
        # Ignorar proxies não funcionais
        available = [p for p in self.proxies if p not in self.failed_proxies]
        if not available:
            self.failed_proxies.clear()  # Reset após um ciclo completo
            available = self.proxies
        
        proxy = available[self.current_index % len(available)]
        self.current_index += 1
        return proxy
    
    def mark_failed(self, proxy):
        self.failed_proxies.add(proxy)

# Inicialização
proxy_rotator = ProxyRotator([
    'http://user1:pass1@192.168.1.1:8080',
    'http://user2:pass2@192.168.1.2:8080',
    # ... adicione 10-20 proxies para operação estável
])

intents = discord.Intents.default()
bot = commands.Bot(command_prefix='!', intents=intents)

async def send_with_retry(channel, message, max_retries=3):
    """Envio de mensagem com tratamento automático de limites de taxa"""
    for attempt in range(max_retries):
        try:
            # Obtenha um novo proxy a cada tentativa
            proxy = proxy_rotator.get_next_proxy()
            
            # Discord.py usa aiohttp internamente, configuramos o proxy
            connector = aiohttp.TCPConnector()
            async with aiohttp.ClientSession(connector=connector) as session:
                bot.http.connector = connector
                bot.http.proxy = proxy
                
                await channel.send(message)
                return True
                
        except discord.HTTPException as e:
            if e.status == 429:  # Limite de taxa
                retry_after = e.retry_after if hasattr(e, 'retry_after') else 5
                print(f"Limite de taxa! Aguardando {retry_after} seg, mudando proxy...")
                
                # Marque o proxy como temporariamente indisponível
                proxy_rotator.mark_failed(proxy)
                
                # Adicione aleatoriedade ao atraso
                await asyncio.sleep(retry_after + random.uniform(1, 3))
            else:
                print(f"Erro ao enviar: {e}")
                await asyncio.sleep(2)
    
    return False

@bot.event
async def on_ready():
    print(f'Bot iniciado: {bot.user}')

# Exemplo de uso
@bot.command()
async def envio_em_massa(ctx):
    channels = ctx.guild.text_channels[:5]  # Primeiros 5 canais
    
    for channel in channels:
        success = await send_with_retry(channel, "Mensagem de teste")
        if success:
            print(f"Enviado para {channel.name}")
        
        # Atraso aleatório entre canais
        await asyncio.sleep(random.uniform(3, 7))
    

Princípios-chave para contornar limites de taxa:

  • Sempre trate HTTP 429: Não ignore o cabeçalho Retry-After. O Discord aumenta o tempo de bloqueio em caso de violações repetidas (de 5 segundos para 60 ou mais).
  • Adicione aleatoriedade: Atrasos entre solicitações devem ser aleatórios (por exemplo, 2-5 segundos em vez de 3 segundos fixos). Isso imita o comportamento humano.
  • Distribua a carga: Se você tem 10 bots e 20 proxies, atribua a cada bot 2 proxies para rotação. Não use um único proxy para todos os bots.
  • Monitore a qualidade dos proxies: Alguns IPs podem já estar bloqueados pelo Discord. Exclua automaticamente proxies que constantemente recebem 403 ou 429.

Estratégias de rotação de IP para diferentes tarefas

A rotação de proxies não é apenas uma troca aleatória de IP a cada N minutos. A estratégia correta depende do tipo de atividade do bot e dos requisitos do Discord para a estabilidade da conexão. Vamos considerar quatro abordagens principais.

1. IP Fixo (sem rotação)

Quando usar: Bots de moderação, bots de gerenciamento de servidor, bots de música, bots com presença constante no servidor.

Lógica: Um bot = um endereço IP durante todo o período de operação (semanas, meses). O Discord percebe essa conexão como um usuário administrador normal, que sempre se conecta de um único local.

Configuração:

# Python (discord.py) - proxy fixo
import discord
from discord.ext import commands

PROXY = 'http://username:password@192.168.1.100:8080'

intents = discord.Intents.default()
bot = commands.Bot(command_prefix='!', intents=intents, proxy=PROXY)

# O proxy será usado para todas as solicitações deste bot
bot.run('YOUR_BOT_TOKEN')
    

Vantagens: Máxima estabilidade, risco mínimo de bloqueio por IP, configuração simples.

Desvantagens: Se o IP for bloqueado, será necessário trocar o proxy manualmente e recriar a sessão do bot.

2. Rotação por Tempo

Quando usar: Bots para envios, bots com atividade moderada (10-50 ações por hora), parsing de dados com baixa frequência.

Lógica: O IP muda a cada 5-15 minutos por um timer, independentemente da quantidade de solicitações. Isso imita um usuário que se reconecta à internet (por exemplo, internet móvel com IP dinâmico).

Intervalos recomendados:

  • Baixa atividade (5-10 ações/hora): rotação a cada 10-15 minutos
  • Atividade média (20-40 ações/hora): rotação a cada 5-7 minutos
  • Alta atividade (50+ ações/hora): rotação a cada 2-3 minutos + rotação adicional ao atingir limite de taxa
# JavaScript (discord.js) - rotação por tempo
const { Client, GatewayIntentBits } = require('discord.js');
const HttpsProxyAgent = require('https-proxy-agent');

const proxies = [
    'http://user1:pass1@ip1:port',
    'http://user2:pass2@ip2:port',
    'http://user3:pass3@ip3:port',
];

let currentProxyIndex = 0;

function getProxyAgent() {
    const proxy = proxies[currentProxyIndex];
    currentProxyIndex = (currentProxyIndex + 1) % proxies.length;
    return new HttpsProxyAgent(proxy);
}

const client = new Client({
    intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages],
    rest: { agent: getProxyAgent() }
});

// Rotação a cada 5 minutos
setInterval(() => {
    console.log('Mudança de proxy...');
    client.rest.setAgent(getProxyAgent());
}, 5 * 60 * 1000);

client.login('YOUR_BOT_TOKEN');
    

3. Rotação por Número de Solicitações

Quando usar: Parsing em massa, scraping de membros de servidores, convites automáticos.

Lógica: O IP muda após N solicitações realizadas (por exemplo, a cada 20-50 solicitações). Isso permite distribuir a carga uniformemente e não exceder os limites invisíveis do Discord sobre a quantidade de ações de um único IP.

Valores recomendados para N:

  • Parsing de membros: 30-50 solicitações por IP (para evitar a detecção do padrão de escaneamento)
  • Envio de DM: 10-15 mensagens por IP (o Discord é especialmente rigoroso com DMs em massa)
  • Criação de convites: 20-30 convites por IP

4. Rotação Adaptativa (em caso de erros)

Quando usar: Bots críticos, trabalho com contas de alto valor, contorno de bloqueios severos.

Lógica: O IP muda automaticamente ao receber erros 429 (limite de taxa), 403 (proibido) ou timeouts. O sistema memoriza IPs "ruins" e os exclui temporariamente da rotação.

# Python - rotação adaptativa com blacklist
import time
from collections import defaultdict

class AdaptiveProxyRotator:
    def __init__(self, proxies):
        self.proxies = proxies
        self.current = 0
        self.error_count = defaultdict(int)
        self.blacklist_until = {}  # {proxy: timestamp}
    
    def get_proxy(self):
        now = time.time()
        
        # Filtrar proxies na blacklist
        available = [
            p for p in self.proxies 
            if p not in self.blacklist_until or self.blacklist_until[p] < now
        ]
        
        if not available:
            # Se todos estão na blacklist, reset e espera
            print("Todos os proxies estão na blacklist, aguardando 60 seg...")
            time.sleep(60)
            self.blacklist_until.clear()
            available = self.proxies
        
        proxy = available[self.current % len(available)]
        self.current += 1
        return proxy
    
    def report_error(self, proxy, error_type):
        self.error_count[proxy] += 1
        
        # Bloqueio temporário em caso de múltiplos erros
        if self.error_count[proxy] >= 3:
            blacklist_duration = 300  # 5 minutos
            self.blacklist_until[proxy] = time.time() + blacklist_duration
            print(f"Proxy {proxy} na blacklist por {blacklist_duration} seg")
            self.error_count[proxy] = 0  # Reset do contador
    
    def report_success(self, proxy):
        # Solicitação bem-sucedida - reset do contador de erros
        if proxy in self.error_count:
            self.error_count[proxy] = max(0, self.error_count[proxy] - 1)
    

Abordagem combinada (recomendada): Use a rotação básica por tempo (a cada 5-10 minutos) + rotação adaptativa em caso de erros. Isso garante estabilidade e rápida resposta a problemas.

Configuração de proxies em bibliotecas populares: discord.py e discord.js

Vamos considerar a configuração passo a passo de proxies em duas das bibliotecas mais populares para criar bots do Discord. Esses exemplos são adequados para a maioria das tarefas e podem ser facilmente adaptados às suas necessidades.

Discord.py (Python)

O Discord.py utiliza aiohttp para solicitações HTTP. Proxies são configurados através do parâmetro proxy ao criar o cliente ou através da configuração direta da sessão HTTP.

Passo 1: Instalação de dependências

pip install discord.py aiohttp aiohttp-socks
# aiohttp-socks é necessário para proxies SOCKS5, para HTTP/HTTPS não é obrigatório
    

Passo 2: Configuração básica com um proxy

import discord
from discord.ext import commands

# Formato do proxy: protocol://username:password@ip:port
PROXY = 'http://user:pass@192.168.1.100:8080'

intents = discord.Intents.default()
intents.message_content = True  # Para leitura de mensagens

bot = commands.Bot(
    command_prefix='!',
    intents=intents,
    proxy=PROXY  # Proxy para todas as solicitações HTTP
)

@bot.event
async def on_ready():
    print(f'Bot {bot.user} conectado através do proxy!')

@bot.command()
async def ping(ctx):
    await ctx.send(f'Pong! Latência: {round(bot.latency * 1000)}ms')

bot.run('YOUR_BOT_TOKEN')
    

Passo 3: Configuração com rotação de proxies

import discord
from discord.ext import commands, tasks
import aiohttp
import random

PROXIES = [
    'http://user1:pass1@ip1:port',
    'http://user2:pass2@ip2:port',
    'http://user3:pass3@ip3:port',
]

class ProxyBot(commands.Bot):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.current_proxy = random.choice(PROXIES)
        self.proxy_rotation.start()
    
    @tasks.loop(minutes=5)  # Rotação a cada 5 minutos
    async def proxy_rotation(self):
        old_proxy = self.current_proxy
        self.current_proxy = random.choice([p for p in PROXIES if p != old_proxy])
        
        # Recria a sessão HTTP com o novo proxy
        await self.http.close()
        connector = aiohttp.TCPConnector(limit=0)
        self.http.connector = connector
        self.http.__session = aiohttp.ClientSession(connector=connector)
        
        print(f'Proxy alterado: {old_proxy} -> {self.current_proxy}')
    
    async def close(self):
        self.proxy_rotation.cancel()
        await super().close()

intents = discord.Intents.default()
bot = ProxyBot(command_prefix='!', intents=intents)

bot.run('YOUR_BOT_TOKEN')
    

Discord.js (Node.js)

O Discord.js não tem suporte embutido para proxies, então usamos a biblioteca https-proxy-agent ou socks-proxy-agent.

Passo 1: Instalação de dependências

npm install discord.js https-proxy-agent
# Para SOCKS5: npm install socks-proxy-agent
    

Passo 2: Configuração básica

const { Client, GatewayIntentBits } = require('discord.js');
const { HttpsProxyAgent } = require('https-proxy-agent');

const PROXY = 'http://user:pass@192.168.1.100:8080';
const agent = new HttpsProxyAgent(PROXY);

const client = new Client({
    intents: [
        GatewayIntentBits.Guilds,
        GatewayIntentBits.GuildMessages,
        GatewayIntentBits.MessageContent
    ],
    rest: { agent: agent }  // Proxy para solicitações da API REST
});

client.on('ready', () => {
    console.log(`Bot ${client.user.tag} conectado através do proxy!`);
});

client.on('messageCreate', async (message) => {
    if (message.content === '!ping') {
        await message.reply(`Pong! Latência do WebSocket: ${client.ws.ping}ms`);
    }
});

client.login('YOUR_BOT_TOKEN');
    

Passo 3: Rotação de proxies

const { Client, GatewayIntentBits } = require('discord.js');
const { HttpsProxyAgent } = require('https-proxy-agent');

const PROXIES = [
    'http://user1:pass1@ip1:port',
    'http://user2:pass2@ip2:port',
    'http://user3:pass3@ip3:port',
];

let currentProxyIndex = 0;

function getNextProxy() {
    const proxy = PROXIES[currentProxyIndex];
    currentProxyIndex = (currentProxyIndex + 1) % PROXIES.length;
    return new HttpsProxyAgent(proxy);
}

const client = new Client({
    intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages],
    rest: { agent: getNextProxy() }
});

// Rotação a cada 10 minutos
setInterval(() => {
    const newAgent = getNextProxy();
    client.rest.setAgent(newAgent);
    console.log('Proxy alterado');
}, 10 * 60 * 1000);

client.on('ready', () => {
    console.log(`Bot ${client.user.tag} iniciado`);
});

client.login('YOUR_BOT_TOKEN');
    

Importante: A conexão WebSocket (para receber eventos em tempo real) nem sempre suporta proxies. Se você tiver problemas de conexão através do WebSocket, use apenas proxies HTTP para solicitações da API REST, e mantenha o WebSocket sem proxy. Para casos críticos, considere usar VPN em vez de proxies para a conexão WebSocket.

Erros comuns e como evitá-los

Mesmo com proxies configurados corretamente, você pode ser banido se cometer erros comuns. Vamos discutir os mais críticos e como resolvê-los.

Erro 1: Uso de um único proxy para todos os bots

Problema: Você está executando 5-10 bots através de um único endereço IP. O Discord vê a atividade simultânea de várias contas de um único IP e bloqueia todas as contas + o próprio IP.

Solução: A regra "um bot — um IP único" para operação estável. Se você tem 10 bots, use pelo menos 10 proxies diferentes. Para projetos críticos, adicione 50-100% de reserva (15-20 proxies para 10 bots) para rotação.

Erro 2: Rotação de IP muito rápida

Problema: Você muda o IP a cada 30-60 segundos, pensando que isso protegerá contra bloqueios. Na verdade, o Discord percebe a troca frequente de IP como atividade suspeita — um usuário normal não se reconecta à internet a cada minuto.

Solução: O intervalo mínimo de rotação deve ser de 3-5 minutos. O ideal é de 5-15 minutos, dependendo da intensidade das solicitações. A exceção é a rotação adaptativa ao receber limite de taxa (429).

Erro 3: Ignorar a geolocalização dos proxies

Problema: Seu bot "vive" em um servidor nos EUA, mas usa proxies da Rússia, China ou Índia. O Discord vê a discrepância entre a localização declarada do servidor e o endereço IP, aumentando a suspeita.

Solução: Use proxies do mesmo país/região onde está seu servidor Discord ou seu público-alvo. Para projetos internacionais, escolha proxies dos EUA ou Europa — eles têm melhor reputação no Discord.

Erro 4: Falta de tratamento de erros

Problema: O bot recebe HTTP 429 (limite de taxa) e continua enviando solicitações, agravando a situação. O Discord aumenta o tempo de bloqueio a cada tentativa.

Solução: Sempre trate os códigos de erro:

  • 429 (Too Many Requests): Leia o cabeçalho Retry-After e aguarde o tempo indicado + 1-3 segundos. Mude o proxy.
  • 403 (Forbidden): IP ou token bloqueado. Mude o proxy, verifique a validade do token.
  • 401 (Unauthorized): Token do bot inválido. Verifique o token no Discord Developer Portal.
  • 502/504 (Gateway errors): Problemas com o proxy ou API do Discord. Aguarde 10-30 segundos, mude o proxy.

Erro 5: Uso de proxies públicos ou baratos

Problema: Proxies gratuitos ou baratos ($0.5-1 por IP) frequentemente já estão bloqueados pelo Discord, pois foram usados por milhares de outros bots e spammers.

Solução: Invista em proxies residenciais de qualidade de provedores confiáveis. Verifique a reputação do IP antes de usar (serviços como AbuseIPDB, IPQualityScore). Um proxy de qualidade a $5-10 é melhor do que 10 bloqueados a $1.

Erro 6: User-Agent idêntico para todos os bots

Problema: Todos os seus bots usam o User-Agent padrão da biblioteca (por exemplo, "DiscordBot (discord.py 2.0)"). O Discord agrupa facilmente essas conexões e detecta automação em massa.

Solução: Varie o User-Agent entre os bots. Use valores realistas:

# Python - User-Agent personalizado
import discord

class CustomBot(discord.Client):
    async def request(self, *args, **kwargs):
        # Sobrescreve o User-Agent
        if 'headers' not in kwargs:
            kwargs['headers'] = {}
        kwargs['headers']['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) Discord/1.0.9015'
        return await super().request(*args, **kwargs)
    

Monitoramento do funcionamento dos bots e tratamento de erros

O monitoramento adequado permite detectar problemas antes que eles levem a bans em massa. Vamos considerar as principais métricas e ferramentas para rastrear o funcionamento dos bots do Discord através de proxies.

Métricas para rastreamento

Métrica O que rastrear Valores críticos
Frequência de erros 429 Número de erros de limite de taxa por hora >10 por hora — revise a estratégia de solicitações
Frequência de erros 403 Bloqueios de IP ou tokens >3 por dia — proxy comprometido
Latência Tempo de resposta do proxy + API do Discord >1000ms — proxy lento, substitua
Taxa de sucesso das solicitações Porcentagem de solicitações bem-sucedidas (HTTP 200-299) <85% — problemas com proxy ou lógica do bot
Tempo de atividade do proxy Quanto tempo o proxy é usado sem problemas <24 horas — possível bloqueio do IP

Exemplo de sistema de logging

# Python - logging avançado com métricas
import logging
import time
from collections import defaultdict
import json

class BotMonitor:
    def __init__(self):
        self.metrics = {
            'requests_total': 0,
            'requests_success': 0,
            'errors_429': 0,
            'errors_403': 0,
            'errors_other': 0,
            'proxy_switches': 0,
            'avg_latency': []
        }
        self.proxy_stats = defaultdict(lambda: {
            'requests': 0,
            'errors': 0,
            'last_error': None
        })
        
        # Configuração do logger
        logging.basicConfig(
            level=logging.INFO,
            format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
            handlers=[
                logging.FileHandler('bot_monitor.log'),
                logging.StreamHandler()
            ]
        )
        self.logger = logging.getLogger('BotMonitor')
    
    def log_request(self, proxy, status_code, latency):
        self.metrics['requests_total'] += 1
        self.metrics['avg_latency'].append(latency)
        self.proxy_stats[proxy]['requests'] += 1
        
        if 200 <= status_code < 300:
            self.metrics['requests_success'] += 1
        elif status_code == 429:
            self.metrics['errors_429'] += 1
            self.proxy_stats[proxy]['errors'] += 1
            self.logger.warning(f'Limite de taxa no proxy {proxy}')
        elif status_code == 403:
            self.metrics['errors_403'] += 1
            self.proxy_stats[proxy]['errors'] += 1
            self.proxy_stats[proxy]['last_error'] = time.time()
            self.logger.error(f'Proxy {proxy} bloqueado (403)')
        else:
            self.metrics['errors_other'] += 1
            self.logger.error(f'Erro {status_code} no proxy {proxy}')
    
    def log_proxy_switch(self, old_proxy, new_proxy):
        self.metrics['proxy_switches'] += 1
        self.logger.info(f'Mudança de proxy: {old_proxy} -> {new_proxy}')
    
    def get_report(self):
        total = self.metrics['requests_total']
        if total == 0:
            return "Sem dados"
        
        success_rate = (self.metrics['requests_success'] / total) * 100
        avg_latency = sum(self.metrics['avg_latency']) / len(self.metrics['avg_latency'])
        
        report = f"""
=== RELATÓRIO DE MONITORAMENTO DO BOT ===
Total de solicitações: {total}
Bem-sucedidas: {self.metrics['requests_success']} ({success_rate:.1f}%)
Erros 429 (limite de taxa): {self.metrics['errors_429']}
Erros 403 (bloqueio): {self.metrics['errors_403']}
Outros erros: {self.metrics['errors_other']}
Latência média: {avg_latency:.0f}ms
Mudanças de proxy: {self.metrics['proxy_switches']}

=== ESTATÍSTICAS POR PROXY ===
"""
        for proxy, stats in self.proxy_stats.items():
            error_rate = (stats['errors'] / stats['requests'] * 100) if stats['requests'] > 0 else 0
            report += f"{proxy}: {stats['requests']} solicitações, {stats['errors']} erros ({error_rate:.1f}%)\n"
        return report
    

Conclusão: O uso de proxies para bots do Discord é uma prática essencial para evitar bloqueios e garantir a operação contínua. Ao seguir as diretrizes e estratégias apresentadas neste guia, você pode aumentar significativamente a eficácia de seus bots e minimizar o risco de detecções indesejadas.

```