Bloga geri dön

Discord Botları için Proxy: Ban ve Rate Limit Olmadan Otomasyonu Nasıl Ayarlarsınız

Discord botları için proxy ayarlarıyla ilgili kapsamlı rehber: proxy türünün seçimi, IP rotasyonu ayarları, rate limit'lerin aşılması ve otomasyonda yasaklardan korunma.

📅20 Ocak 2026
```html

Discord, IP adresleri, davranış kalıpları ve oran limitleri gibi gelişmiş tespit sistemleri kullanarak otomasyona ve botlara karşı aktif bir mücadele yürütmektedir. Eğer moderasyon, davet gönderimi veya sunucularda otomatik işlemler için botlar çalıştırıyorsanız, doğru ayarlanmış proxy olmadan ilk saatlerde yasaklarla karşılaşabilirsiniz. Bu kılavuzda, Discord için hangi proxylerin uygun olduğunu, IP döngüsünü nasıl ayarlayacağınızı ve platformun koruma mekanizmalarını nasıl aşacağınızı inceleyeceğiz.

Neden Discord botları yasaklıyor ve koruma nasıl çalışıyor

Discord, otomasyonu engellemek için birden fazla parametreyi aynı anda analiz eden çok katmanlı bir koruma sistemi kullanmaktadır. Platform, yalnızca bir IP'den gelen istek sayısını kontrol etmekle kalmaz, her bağlantının davranış profilini oluşturur ve bunu normal kullanıcıların kalıplarıyla karşılaştırır.

Discord'daki botları tespit etmenin temel mekanizmaları:

  • Oran Limitleri — Discord, belirli bir zaman diliminde yapılacak eylemler için katı sınırlamalar koyar. Örneğin, bir hesaptan 5 saniyede 5 mesajdan fazla gönderilemez, dakikada 50 API isteğinden fazla yapılamaz. Limitlerin aşılması geçici bir yasakla sonuçlanır (HTTP 429).
  • IP Adreslerinin Analizi — Eğer bir IP'den birden fazla bot çalışıyorsa veya şüpheli bir aktivite gözlemleniyorsa (hızlı hesap değişiklikleri, toplu eylemler), Discord tüm IP adresini birkaç saat veya gün boyunca yasaklayabilir.
  • Bağlantıların Parmak İzi — Platform, teknik parametreleri analiz eder: User-Agent, istek başlıkları, kütüphane sürümü, yanıt süresi. Eğer parametreler normal bir Discord istemcisine uymuyorsa, hesap şüpheli olarak işaretlenir.
  • Davranış Analizi — Discord, eylem kalıplarını izler: çok hızlı tepkiler, mesajlar arasındaki ideal aralıklar, eylemlerde rastgelelik eksikliği. Katı bir algoritma ile çalışan botlar daha hızlı tespit edilir.

Proxy olmadan yasaklanma için tipik senaryolar:

  • Bir ev IP'sinden 3-5 bot çalıştırmak — çalışma başlangıcından sonra IP'nin 2-6 saat içinde yasaklanması
  • Sunucuya toplu davet gönderimi — 10-15 gönderilen davet sonrası hesap ve IP'nin yasaklanması
  • Otomatik moderasyon (mesaj silme, rol verme) — bir IP'den saatte 100 eylem aşılması durumunda yasaklanma
  • Sunucu üyelerinin taranması — 200-300 profil tarandıktan sonra tespit ve yasaklama

Proxy'ler bu sorunları çözer, istekleri farklı IP adresleri arasında dağıtarak ve farklı konumlardan gelen normal kullanıcı izlenimi yaratır. Ancak, doğru proxy türünü seçmek ve döngüyü ayarlamak önemlidir — yanlış yapılandırma daha hızlı yasaklamalara yol açabilir.

Discord botları için hangi proxy türleri uygundur

Proxy türü seçimi, bot sayısı, istek sıklığı, bütçe ve gereken anonimlik seviyesine bağlıdır. Discord için üç ana proxy türünü ve bunların kullanımını inceleyelim.

Proxy Türü Avantajları Dezavantajları Uygun Olduğu Alanlar
Veri Merkezi Proxy'leri Yüksek hız (ping 10-50 ms), düşük fiyat ($1-3 IP/ay), istikrar Discord, veri merkezi IP'lerini kolayca tanır, toplu eylemlerde yüksek yasaklama riski Test etme, hafif otomasyon (1-2 bot), toplu istek gerektirmeyen görevler
Konut Proxy'leri Gerçek ev kullanıcılarının IP'leri, düşük yasaklama riski, büyük adres havuzu (milyonlarca IP) Ortalama hız (ping 100-300 ms), daha yüksek fiyat ($5-15 GB trafik), bazı IP'lerde istikrarsızlık Toplu davetler, sunucu tarama, 5+ botla çalışma, uzun vadeli projeler
Mobil Proxy'ler Mobil operatörlerin IP'leri (4G/5G), Discord'da maksimum güven, dinamik IP değişimi Yüksek fiyat ($50-150 IP/ay), daha küçük adres havuzu, bağlantı kopmaları olabilir Kritik hesaplar, katı yasakların aşılması, yüksek değerli hesaplarla çalışma

Farklı görevler için seçim önerileri:

Moderasyon ve sunucu yönetimi (1-3 bot): Sabit IP'li konut proxy'leri. Bir bot — bir IP, döngü olmadan. Bu, Discord'un normal bir kullanıcı-yönetici olarak algıladığı istikrarlı bir bağlantı profili oluşturur.

Toplu davetler ve çağrılar (10+ bot): Her 5-10 dakikada bir döngü ile konut proxy'leri. Yükü dağıtın: bir IP'den saatte 20 eylemden fazla değil. 10 bot için 50+ IP adresi havuzu kullanın.

Üyelerin ve sunucuların taranması: Hızlı döngü ile konut proxy'leri (her 1-3 dakikada bir) veya mobil proxy'ler. Tarama, en riskli aktivitelerden biridir, Discord tarama kalıplarını kolayca tespit eder. İstekler arasında rastgele gecikmeler kullanın (30-120 saniye).

Test etme ve geliştirme: Veri merkezi proxy'leri işlevselliği debug etmek için yeterlidir. Ancak, üretime geçmeden önce mutlaka konut proxy'lerine geçin — Discord'un davranışı farklı IP türleri için çok farklı olabilir.

Önemli bir nokta: Discord, belirli ülkelerden ve bölgelerden gelen IP adreslerine özellikle katı yaklaşmaktadır. Rusya, Çin, Vietnam, Hindistan'dan gelen IP'ler, spamcıların yüksek aktivitesi nedeniyle daha sıkı kontrol altındadır. Hedef kitleniz ABD veya Avrupa'daysa, bu bölgelerden proxy kullanın — bu, yasaklama olasılığını %40-60 azaltır.

Discord'da oran limitlerini proxy ile nasıl aşarsınız

Discord'daki oran limitleri, belirli bir zaman diliminde API'ye yapılacak istek sayısına yönelik sınırlamalardır. İki türü vardır: küresel (tüm uygulama için) ve per-route (belirli uç noktalar için). Proxy'ler, yükü farklı IP'ler arasında dağıtmaya yardımcı olur, ancak limitleri göz ardı edemeyeceğiniz anlamına gelmez — Discord, bot token'ı düzeyinde aktiviteyi izler.

Discord API'sindeki temel oran limitleri:

  • Mesaj gönderimi: Bir kanala 5 mesaj 5 saniyede, bot için 10 saniyede 50 mesaj
  • Kanal oluşturma/silme: 10 dakikada 50 istek
  • Üyelerin rollerini değiştirme: 10 isteği 10 saniyede
  • Üye listesini alma: Saniyede 1 istek (en katı limit)
  • DM (özel mesaj) gönderimi: 5 DM 5 saniyede, tanımadığınız kullanıcılara toplu gönderim için yasaklama

Limitleri aştığınızda, Discord HTTP 429 (Too Many Requests) döndürür ve Retry-After başlığı ile bekleme süresini belirtir. Bu yanıtın doğru bir şekilde işlenmesi kritik öneme sahiptir.

Proxy ile oran limitlerini aşma stratejisi:

# Python (discord.py) örneği, oran limiti durumunda proxy döngüsü

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):
        # Çalışmayan proxy'leri atla
        available = [p for p in self.proxies if p not in self.failed_proxies]
        if not available:
            self.failed_proxies.clear()  # Tam döngüden sonra sıfırla
            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)

# Başlatma
proxy_rotator = ProxyRotator([
    'http://user1:pass1@192.168.1.1:8080',
    'http://user2:pass2@192.168.1.2:8080',
    # ... stabil çalışma için 10-20 proxy ekleyin
])

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

async def send_with_retry(channel, message, max_retries=3):
    """Oran limitleri ile otomatik hata işleme ile mesaj gönderimi"""
    for attempt in range(max_retries):
        try:
            # Her denemede yeni bir proxy al
            proxy = proxy_rotator.get_next_proxy()
            
            # Discord.py içinde aiohttp kullanır, proxy'yi ayarlıyoruz
            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:  # Oran limiti
                retry_after = e.retry_after if hasattr(e, 'retry_after') else 5
                print(f"Oran limiti! {retry_after} sn bekliyoruz, proxy değiştiriyoruz...")
                
                # Proxy'yi geçici olarak kullanılamaz olarak işaretle
                proxy_rotator.mark_failed(proxy)
                
                # Gecikmeye rastgelelik ekle
                await asyncio.sleep(retry_after + random.uniform(1, 3))
            else:
                print(f"Gönderim hatası: {e}")
                await asyncio.sleep(2)
    
    return False

@bot.event
async def on_ready():
    print(f'Bot çalışıyor: {bot.user}')

# Kullanım örneği
@bot.command()
async def toplu_davet(ctx):
    channels = ctx.guild.text_channels[:5]  # İlk 5 kanal
    
    for channel in channels:
        success = await send_with_retry(channel, "Test mesajı")
        if success:
            print(f"{channel.name} kanalına gönderildi")
        
        # Kanallar arasında rastgele gecikme
        await asyncio.sleep(random.uniform(3, 7))
    

Oran limitlerini aşmanın temel ilkeleri:

  • HTTP 429'u her zaman işleyin: Retry-After başlığını göz ardı etmeyin. Discord, tekrar eden ihlallerde bekleme süresini artırır (5 saniyeden 60 ve daha fazlasına).
  • Rastgelelik ekleyin: İstekler arasındaki gecikmeler rastgele olmalıdır (örneğin, sabit 3 saniye yerine 2-5 saniye). Bu, insan davranışını taklit eder.
  • Yükü dağıtın: Eğer 10 botunuz ve 20 proxy'niz varsa, her bir bot için 2 proxy atayın. Tüm botlar için tek bir proxy kullanmayın.
  • Proxy kalitesini izleyin: Bazı IP'ler zaten Discord tarafından yasaklanmış olabilir. Sürekli 403 veya 429 alan proxy'leri otomatik olarak hariç tutun.

Farklı görevler için IP döngüsü stratejileri

Proxy döngüsü, yalnızca her N dakikada bir rastgele IP değiştirmek değildir. Doğru strateji, botun aktivite türüne ve Discord'un bağlantı istikrarı gereksinimlerine bağlıdır. Dört ana yaklaşımı inceleyelim.

1. Sabit IP (döngü olmadan)

Ne zaman kullanılmalı: Moderasyon botları, sunucu yönetim botları, müzik botları, sunucuda sürekli varlık gösteren botlar.

Mantık: Bir bot = tüm çalışma süresi için bir IP adresi (haftalar, aylar). Discord, böyle bir bağlantıyı sürekli olarak aynı yerden bağlanan normal bir kullanıcı-yönetici olarak algılar.

Ayar:

# Python (discord.py) - sabit proxy
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)

# Proxy, bu botun tüm istekleri için kullanılacaktır
bot.run('YOUR_BOT_TOKEN')
    

Avantajları: Maksimum istikrar, IP yasaklama riski minimum, kolay ayar.

Dezavantajları: Eğer IP yasaklanırsa, proxy'yi manuel olarak değiştirmek ve bot oturumunu yeniden oluşturmak zorunda kalırsınız.

2. Zamanla döngü

Ne zaman kullanılmalı: Davet botları, orta düzeyde aktiviteye sahip botlar (saate 10-50 eylem), düşük sıklıkta veri tarama.

Mantık: IP, istek sayısından bağımsız olarak her 5-15 dakikada bir değişir. Bu, internet bağlantısını yeniden kuran bir kullanıcıyı taklit eder (örneğin, dinamik IP ile mobil internet).

Önerilen aralıklar:

  • Düşük aktivite (5-10 eylem/saat): her 10-15 dakikada bir döngü
  • Orta aktivite (20-40 eylem/saat): her 5-7 dakikada bir döngü
  • Yüksek aktivite (50+ eylem/saat): her 2-3 dakikada bir döngü + oran limiti durumunda ek döngü
# JavaScript (discord.js) - zamanla döngü
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() }
});

// Her 5 dakikada bir döngü
setInterval(() => {
    console.log('Proxy değiştiriliyor...');
    client.rest.setAgent(getProxyAgent());
}, 5 * 60 * 1000);

client.login('YOUR_BOT_TOKEN');
    

3. İstek sayısına göre döngü

Ne zaman kullanılmalı: Toplu tarama, sunucu üyelerinin kazınması, otomatik davetler.

Mantık: IP, N isteği gerçekleştirildikten sonra değişir (örneğin, her 20-50 istekte bir). Bu, yükü eşit şekilde dağıtmaya ve bir IP'den yapılan eylemler için görünmeyen limitleri aşmamaya yardımcı olur.

Önerilen N değerleri:

  • Üyelerin taranması: 30-50 istek IP başına (tarama kalıbını tespit etmemek için)
  • DM gönderimi: IP başına 10-15 mesaj (Discord, toplu DM'lere özellikle katıdır)
  • Davet oluşturma: IP başına 20-30 davet

4. Hata durumunda uyarlanabilir döngü

Ne zaman kullanılmalı: Kritik botlar, yüksek değerli hesaplarla çalışma, katı yasakların aşılması.

Mantık: IP, 429 (oran limiti), 403 (yasaklı) veya zaman aşımı hatası alındığında otomatik olarak değişir. Sistem, "kötü" IP'leri hatırlar ve geçici olarak döngüden çıkarır.

# Python - blacklist ile uyarlanabilir döngü
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()
        
        # Blacklist'teki proxy'leri filtrele
        available = [
            p for p in self.proxies 
            if p not in self.blacklist_until or self.blacklist_until[p] < now
        ]
        
        if not available:
            # Eğer hepsi blacklist'te ise sıfırla ve bekle
            print("Tüm proxy'ler blacklist'te, 60 sn bekliyoruz...")
            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
        
        # Çoklu hatalarda geçici yasak
        if self.error_count[proxy] >= 3:
            blacklist_duration = 300  # 5 dakika
            self.blacklist_until[proxy] = time.time() + blacklist_duration
            print(f"Proxy {proxy} {blacklist_duration} sn yasaklandı")
            self.error_count[proxy] = 0  # Sayacı sıfırla
    
    def report_success(self, proxy):
        # Başarılı istek - hata sayacını sıfırla
        if proxy in self.error_count:
            self.error_count[proxy] = max(0, self.error_count[proxy] - 1)
    

Önerilen birleşik yaklaşım: Temel zamanla döngü (her 5-10 dakikada bir) + hata durumunda uyarlanabilir döngü kullanın. Bu, istikrarı ve sorunlara hızlı yanıtı sağlar.

Popüler kütüphanelerde proxy ayarı: discord.py ve discord.js

Discord botları oluşturmak için en popüler iki kütüphanede proxy ayarının adım adım nasıl yapılacağını inceleyelim. Bu örnekler, çoğu görev için uygundur ve ihtiyaçlarınıza kolayca uyarlanabilir.

Discord.py (Python)

Discord.py, HTTP istekleri için aiohttp kullanır. Proxy, istemci oluşturulurken proxy parametresi ile veya doğrudan HTTP oturumunun ayarlanması ile yapılandırılır.

Adım 1: Bağımlılıkların kurulumu

pip install discord.py aiohttp aiohttp-socks
# aiohttp-socks, SOCKS5 proxy için gereklidir, HTTP/HTTPS için zorunlu değildir
    

Adım 2: Tek proxy ile temel ayar

import discord
from discord.ext import commands

# Proxy formatı: protocol://username:password@ip:port
PROXY = 'http://user:pass@192.168.1.100:8080'

intents = discord.Intents.default()
intents.message_content = True  # Mesajları okumak için

bot = commands.Bot(
    command_prefix='!',
    intents=intents,
    proxy=PROXY  # Tüm HTTP istekleri için proxy
)

@bot.event
async def on_ready():
    print(f'Bot {bot.user} proxy üzerinden bağlı!')

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

bot.run('YOUR_BOT_TOKEN')
    

Adım 3: Proxy döngüsü ile ayar

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)  # Her 5 dakikada bir döngü
    async def proxy_rotation(self):
        old_proxy = self.current_proxy
        self.current_proxy = random.choice([p for p in PROXIES if p != old_proxy])
        
        # Yeni proxy ile HTTP oturumunu yeniden oluştur
        await self.http.close()
        connector = aiohttp.TCPConnector(limit=0)
        self.http.connector = connector
        self.http.__session = aiohttp.ClientSession(connector=connector)
        
        print(f'Proxy değiştirildi: {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)

Discord.js, proxy desteği sunmadığı için https-proxy-agent veya socks-proxy-agent kütüphanesi kullanılır.

Adım 1: Bağımlılıkların kurulumu

npm install discord.js https-proxy-agent
# SOCKS5 için: npm install socks-proxy-agent
    

Adım 2: Temel ayar

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 }  // REST API istekleri için proxy
});

client.on('ready', () => {
    console.log(`Bot ${client.user.tag} proxy üzerinden bağlı!`);
});

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

client.login('YOUR_BOT_TOKEN');
    

Adım 3: Proxy döngüsü

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() }
});

// Her 10 dakikada bir döngü
setInterval(() => {
    const newAgent = getNextProxy();
    client.rest.setAgent(newAgent);
    console.log('Proxy değiştirildi');
}, 10 * 60 * 1000);

client.on('ready', () => {
    console.log(`Bot ${client.user.tag} çalışıyor`);
});

client.login('YOUR_BOT_TOKEN');
    

Önemli: WebSocket bağlantısı (gerçek zamanlı olayları almak için) her zaman proxy desteği sunmayabilir. Eğer WebSocket üzerinden bağlantı sorunları yaşıyorsanız, REST API istekleri için yalnızca HTTP proxy kullanın ve WebSocket'i proxy olmadan bırakın. Kritik durumlar için WebSocket bağlantısı için proxy yerine VPN kullanmayı düşünün.

Yaygın hatalar ve bunlardan nasıl kaçınılır

Doğru ayarlanmış proxy'lerle bile, yaygın hatalar yapıldığında yasaklanma riski vardır. En kritik hataları ve çözüm yollarını inceleyelim.

Hata 1: Tüm botlar için tek proxy kullanmak

Problem: 5-10 botu tek bir IP adresi üzerinden çalıştırıyorsunuz. Discord, bir IP'den birden fazla hesabın eş zamanlı aktivitesini görür ve tüm hesapları + IP'yi yasaklar.

Çözüm: İstikrarlı çalışma için "bir bot — bir benzersiz IP" kuralı. Eğer 10 botunuz varsa, en az 10 farklı proxy kullanın. Kritik projeler için %50-100 ek (10 bot için 15-20 proxy) döngü için ekleyin.

Hata 2: IP'nin çok hızlı döngüsü

Problem: IP'yi her 30-60 saniyede bir değiştiriyorsunuz, bunun yasaklamadan koruyacağını düşünerek. Aslında, Discord sık sık IP değişimini şüpheli bir aktivite olarak algılar — normal bir kullanıcı her dakika internet bağlantısını yeniden kurmaz.

Çözüm: Minimum döngü aralığı — 3-5 dakika. Optimal — istek yoğunluğuna bağlı olarak 5-15 dakika. Tek istisna, oran limiti (429) alındığında uyarlanabilir döngüdür.

Hata 3: Proxy'nin coğrafi konumunu göz ardı etmek

Problem: Botunuz "ABD'deki" bir sunucuda yaşıyor, ancak Rusya, Çin veya Hindistan'dan proxy kullanıyor. Discord, sunucunun beyan edilen konumu ile IP adresi arasında bir tutarsızlık görür, bu da şüphe uyandırır.

Çözüm: Discord sunucunuzun veya hedef kitlenizin bulunduğu ülke/bölgeden proxy kullanın. Uluslararası projeler için ABD veya Avrupa'dan proxy seçin — bunlar Discord'da daha iyi bir üne sahiptir.

Hata 4: Hata işleme eksikliği

Problem: Bot, HTTP 429 (oran limiti) alıyor ve durumu daha da kötüleştirerek istek göndermeye devam ediyor. Discord, her denemede yasaklama süresini artırır.

Çözüm: Her zaman hata kodlarını işleyin:

  • 429 (Too Many Requests): Retry-After başlığını okuyun ve belirtilen süreyi + 1-3 saniye bekleyin. Proxy'yi değiştirin.
  • 403 (Forbidden): IP veya token yasaklandı. Proxy'yi değiştirin, token'in geçerliliğini kontrol edin.
  • 401 (Unauthorized): Geçersiz bot token'i. Discord Geliştirici Portalı'ndaki token'i kontrol edin.
  • 502/504 (Gateway hataları): Proxy veya Discord API ile ilgili sorunlar. 10-30 saniye bekleyin, proxy'yi değiştirin.

Hata 5: Kamuya açık veya ucuz proxy kullanmak

Problem: Ücretsiz veya ucuz proxy'ler ($0.5-1 IP başına) genellikle Discord tarafından yasaklanmıştır, çünkü bunları binlerce diğer bot ve spamcı kullanmıştır.

Çözüm: Güvenilir sağlayıcılardan kaliteli konut proxy'lerine yatırım yapın. Kullanımdan önce IP'nin itibarını kontrol edin (AbuseIPDB, IPQualityScore gibi hizmetler). $5-10'lık bir kaliteli proxy, $1'lık 10 yasaklı proxy'den daha iyidir.

Hata 6: Tüm botlar için aynı User-Agent kullanmak

Problem: Tüm botlarınız standart kütüphane User-Agent'ını kullanıyor (örneğin, "DiscordBot (discord.py 2.0)"). Discord, bu tür bağlantıları kolayca gruplandırır ve toplu otomasyonu tespit eder.

Çözüm: Botlar arasında User-Agent'ı değiştirin. Gerçekçi değerler kullanın:

# Python - özel User-Agent
import discord

class CustomBot(discord.Client):
    async def request(self, *args, **kwargs):
        # User-Agent'ı yeniden tanımlayın
        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)
    

Botların çalışma izleme ve hata işleme

Doğru izleme, sorunları kitlesel yasaklamalara yol açmadan önce tespit etmeyi sağlar. Discord botlarının proxy üzerinden çalışma izlemeleri için ana metrikleri ve araçları inceleyelim.

İzleme için metrikler

Metrik Neyi izlemeli Kritik değerler
429 hata sıklığı Saate oran limiti hatası sayısı >10 saat — istek stratejinizi gözden geçirin
403 hata sıklığı IP veya token yasakları >3 günde — proxy tehlikeye girmiş
Gecikme (latency) Proxy + Discord API yanıt süresi >1000ms — yavaş proxy, değiştirin
İstek başarısı Başarılı isteklerin yüzdesi (HTTP 200-299) <85% — proxy veya bot mantığında sorunlar
Proxy çalışma süresi Proxy'nin sorunsuz ne kadar süre kullanıldığı <24 saat — IP yasaklanmış olabilir

Örnek bir izleme sistemi

# Python - gelişmiş izleme ile metrikler
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
        })
        
        # Logger ayarı
        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'Proxy {proxy} üzerinde oran limiti')
        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} yasaklandı (403)')
        else:
            self.metrics['errors_other'] += 1
            self.logger.error(f'Proxy {proxy} üzerinde hata {status_code}')
    
    def log_proxy_switch(self, old_proxy, new_proxy):
        self.metrics['proxy_switches'] += 1
        self.logger.info(f'Proxy değiştirildi: {old_proxy} -> {new_proxy}')
    
    def get_report(self):
        total = self.metrics['requests_total']
        if total == 0:
            return "Veri yok"
        
        success_rate = (self.metrics['requests_success'] / total) * 100
        avg_latency = sum(self.metrics['avg_latency']) / len(self.metrics['avg_latency'])
        
        report = f"""
=== BOT İZLEME RAPORU ===
Toplam istek: {total}
Başarılı: {self.metrics['requests_success']} ({success_rate:.1f}%)
429 hata sayısı (oran limiti): {self.metrics['errors_429']}
403 hata sayısı (yasaklama): {self.metrics['errors_403']}
Diğer hatalar: {self.metrics['errors_other']}
Ortalama gecikme: {avg_latency:.0f}ms
Proxy değişiklikleri: {self.metrics['proxy_switches']}

=== PROXY İSTATİSTİKLERİ ===
"""
        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']} istek, {stats['errors']} hata ({error_rate:.1f}%)\n"
        return report
    

İzleme ve hata işleme, botların sağlıklı çalışmasını sağlamak için kritik öneme sahiptir. Doğru stratejiler ve araçlar kullanarak, yasaklama riskini en aza indirebilir ve botlarınızın performansını artırabilirsiniz.

```