Kembali ke blog

Proxy untuk Bot Discord: Cara Mengatur Automatisasi Tanpa Ban dan Batasan Rate

Panduan lengkap untuk mengatur proxy untuk bot Discord: pemilihan jenis proxy, pengaturan rotasi IP, menghindari batasan laju, dan perlindungan dari banned saat otomatisasi.

📅20 Januari 2026
```html

Discord secara aktif melawan otomatisasi dan bot dengan menggunakan sistem deteksi canggih: analisis alamat IP, pola perilaku, dan batasan laju. Jika Anda menjalankan bot untuk moderasi, pengiriman pesan, atau otomatisasi tindakan di server, tanpa proksi yang diatur dengan benar, Anda akan menghadapi pemblokiran dalam beberapa jam pertama. Dalam panduan ini, kita akan membahas proksi mana yang cocok untuk Discord, cara mengatur rotasi IP, dan cara menghindari mekanisme perlindungan platform.

Mengapa Discord Memblokir Bot dan Bagaimana Perlindungannya Bekerja

Discord menggunakan sistem perlindungan multi-lapis terhadap otomatisasi yang menganalisis beberapa parameter secara bersamaan. Platform ini tidak hanya memeriksa jumlah permintaan dari satu IP — ia membangun profil perilaku setiap koneksi dan membandingkannya dengan pola pengguna normal.

Mekanisme utama deteksi bot di Discord:

  • Batasan Laju — Discord menetapkan batasan ketat pada jumlah tindakan dalam satu waktu. Misalnya, tidak lebih dari 5 pesan dalam 5 detik dari satu akun, tidak lebih dari 50 permintaan ke API dalam satu menit. Melampaui batasan ini mengakibatkan pemblokiran sementara (HTTP 429).
  • Analisis Alamat IP — jika beberapa bot beroperasi dari satu IP atau ada aktivitas mencurigakan (pergantian akun yang cepat, tindakan massal), Discord dapat memblokir seluruh alamat IP selama beberapa jam atau hari.
  • Fingerprinting Koneksi — platform menganalisis parameter teknis: User-Agent, header permintaan, versi perpustakaan, waktu respons. Jika parameter tidak sesuai dengan klien Discord biasa, akun ditandai sebagai mencurigakan.
  • Analisis Perilaku — Discord melacak pola tindakan: reaksi yang terlalu cepat, interval ideal antara pesan, tidak adanya kebetulan dalam tindakan. Bot yang beroperasi dengan algoritma kaku terdeteksi lebih cepat.

Skenario pemblokiran umum tanpa proksi:

  • Menjalankan 3-5 bot dari satu IP rumah — pemblokiran IP dalam 2-6 jam setelah mulai bekerja
  • Pengiriman massal undangan ke server — pemblokiran akun dan IP setelah 10-15 undangan terkirim
  • Moderasi otomatis (penghapusan pesan, pemberian peran) — pemblokiran saat melampaui 100 tindakan per jam dari satu IP
  • Pemindaian anggota server — deteksi dan pemblokiran setelah memindai 200-300 profil

Proksi menyelesaikan masalah ini dengan mendistribusikan permintaan di antara alamat IP yang berbeda dan menciptakan ilusi pengguna biasa dari lokasi yang berbeda. Namun, penting untuk memilih jenis proksi yang tepat dan mengatur rotasi — konfigurasi yang salah dapat menyebabkan pemblokiran yang lebih cepat.

Jenis Proksi Apa yang Cocok untuk Bot Discord

Pemilihan jenis proksi tergantung pada tugas Anda: jumlah bot, frekuensi permintaan, anggaran, dan tingkat anonimitas yang dibutuhkan. Mari kita bahas tiga jenis proksi utama dan penerapannya untuk Discord.

Jenis Proksi Keuntungan Kekurangan Cocok untuk
Proksi Data Center Kecepatan tinggi (ping 10-50 ms), harga rendah ($1-3 per IP/bulan), stabilitas Discord mudah mengenali IP data center, risiko tinggi pemblokiran saat melakukan tindakan massal Pengujian, otomatisasi ringan (1-2 bot), tugas tanpa permintaan massal
Proksi Residensial IP nyata dari pengguna rumah, risiko pemblokiran minimal, kumpulan alamat besar (jutaan IP) Kecepatan rata-rata (ping 100-300 ms), harga lebih tinggi ($5-15 per GB trafik), ketidakstabilan beberapa IP Pengiriman massal, pemindaian server, bekerja dengan 5+ bot, proyek jangka panjang
Proksi Seluler IP dari operator seluler (4G/5G), kepercayaan maksimum dari Discord, perubahan IP dinamis Harga tinggi ($50-150 per IP/bulan), kumpulan alamat lebih kecil, kemungkinan terputusnya koneksi Akun yang sangat penting, menghindari pemblokiran ketat, bekerja dengan akun bernilai tinggi

Rekomendasi pemilihan untuk berbagai tugas:

Moderasi dan manajemen server (1-3 bot): Proksi residensial dengan IP tetap. Satu bot — satu IP, tanpa rotasi. Ini menciptakan profil koneksi yang stabil yang dianggap Discord sebagai pengguna biasa-admin.

Pengiriman massal dan undangan (10+ bot): Proksi residensial dengan rotasi setiap 5-10 menit. Sebarkan beban: tidak lebih dari 20 tindakan per jam dari satu IP. Gunakan kumpulan 50+ alamat IP untuk 10 bot.

Pemindaian anggota dan server: Proksi residensial dengan rotasi cepat (setiap 1-3 menit) atau proksi seluler. Pemindaian adalah salah satu aktivitas yang paling berisiko, Discord mudah menghitung pola pemindaian. Gunakan jeda acak antara permintaan (30-120 detik).

Pengujian dan pengembangan: Proksi data center cukup untuk debugging fungsionalitas. Namun, sebelum meluncurkan ke produksi, pastikan untuk beralih ke proksi residensial — perilaku Discord dapat sangat berbeda untuk berbagai jenis IP.

Poin penting: Discord sangat ketat terhadap alamat IP dari negara dan wilayah tertentu. IP dari Rusia, Cina, Vietnam, India menghadapi pemeriksaan yang lebih ketat karena tingginya aktivitas spam. Jika audiens target Anda berada di AS atau Eropa, gunakan proksi dari wilayah tersebut — ini akan mengurangi kemungkinan pemblokiran sebesar 40-60%.

Cara Menghindari Batasan Laju Discord Melalui Proksi

Batasan laju di Discord adalah batasan pada jumlah permintaan ke API dalam satu waktu. Ada dua jenis: global (untuk seluruh aplikasi) dan per-route (untuk endpoint tertentu). Proksi membantu mendistribusikan beban di antara IP yang berbeda, tetapi ini tidak berarti Anda bisa mengabaikan batasan — Discord melacak aktivitas pada tingkat token bot.

Batasan laju utama API Discord:

  • Pengiriman pesan: 5 pesan dalam 5 detik ke satu saluran, 50 pesan dalam 10 detik secara global untuk bot
  • Pembuatan/penghapusan saluran: 50 permintaan dalam 10 menit
  • Perubahan peran anggota: 10 permintaan dalam 10 detik
  • Mendapatkan daftar anggota: 1 permintaan per detik (batasan paling ketat)
  • Pengiriman DM (pesan pribadi): 5 DM dalam 5 detik, pemblokiran untuk pengiriman massal kepada pengguna yang tidak dikenal

Ketika Anda melampaui batas, Discord mengembalikan HTTP 429 (Terlalu Banyak Permintaan) dengan header Retry-After, yang menunjukkan waktu tunggu dalam detik. Penanganan yang tepat terhadap respons ini sangat penting.

Strategi menghindari batasan laju dengan proksi:

# Contoh dalam Python (discord.py) dengan rotasi proksi saat batas laju

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):
        # Melewatkan proksi yang tidak berfungsi
        available = [p for p in self.proxies if p not in self.failed_proxies]
        if not available:
            self.failed_proxies.clear()  # Reset setelah siklus penuh
            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)

# Inisialisasi
proxy_rotator = ProxyRotator([
    'http://user1:pass1@192.168.1.1:8080',
    'http://user2:pass2@192.168.1.2:8080',
    # ... tambahkan 10-20 proksi untuk operasi yang stabil
])

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

async def send_with_retry(channel, message, max_retries=3):
    """Mengirim pesan dengan penanganan otomatis batasan laju"""
    for attempt in range(max_retries):
        try:
            # Mendapatkan proksi baru pada setiap percobaan
            proxy = proxy_rotator.get_next_proxy()
            
            # Discord.py menggunakan aiohttp di dalamnya, mengatur proksi
            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:  # Batas laju
                retry_after = e.retry_after if hasattr(e, 'retry_after') else 5
                print(f"Batas laju! Menunggu {retry_after} detik, mengganti proksi...")
                
                # Menandai proksi sebagai tidak tersedia sementara
                proxy_rotator.mark_failed(proxy)
                
                # Menambahkan kebetulan pada jeda
                await asyncio.sleep(retry_after + random.uniform(1, 3))
            else:
                print(f"Kesalahan pengiriman: {e}")
                await asyncio.sleep(2)
    
    return False

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

# Contoh penggunaan
@bot.command()
async def pengiriman_massal(ctx):
    channels = ctx.guild.text_channels[:5]  # 5 saluran pertama
    
    for channel in channels:
        success = await send_with_retry(channel, "Pesan percobaan")
        if success:
            print(f"Dikirim ke {channel.name}")
        
        # Jeda acak antara saluran
        await asyncio.sleep(random.uniform(3, 7))
    

Prinsip kunci untuk menghindari batasan laju:

  • Selalu tangani HTTP 429: Jangan abaikan header Retry-After. Discord meningkatkan waktu pemblokiran untuk pelanggaran berulang (dari 5 detik menjadi 60 detik atau lebih).
  • Tambahkan kebetulan: Jeda antara permintaan harus acak (misalnya, 2-5 detik daripada tetap 3 detik). Ini meniru perilaku manusia.
  • Distribusikan beban: Jika Anda memiliki 10 bot dan 20 proksi, tetapkan masing-masing bot 2 proksi untuk rotasi. Jangan gunakan satu proksi untuk semua bot.
  • Pantau kualitas proksi: Beberapa IP mungkin sudah diblokir oleh Discord. Secara otomatis kecualikan proksi yang terus-menerus mendapatkan 403 atau 429.

Strategi Rotasi IP untuk Berbagai Tugas

Rotasi proksi bukan hanya sekadar pergantian IP secara acak setiap N menit. Strategi yang tepat tergantung pada jenis aktivitas bot dan persyaratan Discord untuk stabilitas koneksi. Mari kita bahas empat pendekatan utama.

1. IP Tetap (tanpa rotasi)

Kapan digunakan: Bot moderasi, bot manajemen server, bot musik, bot dengan kehadiran tetap di server.

Logika: Satu bot = satu alamat IP selama masa kerja (minggu, bulan). Discord menganggap koneksi seperti ini sebagai pengguna biasa-admin yang selalu masuk dari satu tempat.

Pengaturan:

# Python (discord.py) - proksi tetap
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)

# Proksi akan digunakan untuk semua permintaan bot ini
bot.run('YOUR_BOT_TOKEN')
    

Keuntungan: Stabilitas maksimum, risiko minimal pemblokiran berdasarkan IP, pengaturan yang mudah.

Kekurangan: Jika IP diblokir, Anda harus mengganti proksi secara manual dan membuat ulang sesi bot.

2. Rotasi Berdasarkan Waktu

Kapan digunakan: Bot untuk pengiriman, bot dengan aktivitas sedang (10-50 tindakan per jam), pemindaian data dengan frekuensi rendah.

Logika: IP berubah setiap 5-15 menit berdasarkan timer, terlepas dari jumlah permintaan. Ini meniru pengguna yang terhubung kembali ke internet (misalnya, internet seluler dengan IP dinamis).

Interval yang direkomendasikan:

  • Aktivitas rendah (5-10 tindakan/jam): rotasi setiap 10-15 menit
  • Aktivitas sedang (20-40 tindakan/jam): rotasi setiap 5-7 menit
  • Aktivitas tinggi (50+ tindakan/jam): rotasi setiap 2-3 menit + rotasi tambahan saat batasan laju
# JavaScript (discord.js) - rotasi berdasarkan waktu
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() }
});

// Rotasi setiap 5 menit
setInterval(() => {
    console.log('Mengganti proksi...');
    client.rest.setAgent(getProxyAgent());
}, 5 * 60 * 1000);

client.login('YOUR_BOT_TOKEN');
    

3. Rotasi Berdasarkan Jumlah Permintaan

Kapan digunakan: Pemindaian massal, pengambilan anggota server, undangan otomatis.

Logika: IP berubah setelah N permintaan dilakukan (misalnya, setiap 20-50 permintaan). Ini memungkinkan distribusi beban yang merata dan tidak melampaui batasan yang tidak terlihat dari Discord pada jumlah tindakan dari satu IP.

Nilai N yang direkomendasikan:

  • Pemindaian anggota: 30-50 permintaan per IP (untuk menghindari deteksi pola pemindaian)
  • Pengiriman DM: 10-15 pesan per IP (Discord sangat ketat terhadap DM massal)
  • Pembuatan undangan: 20-30 undangan per IP

4. Rotasi Adaptif (Saat Terjadi Kesalahan)

Kapan digunakan: Bot yang sangat penting, bekerja dengan akun bernilai tinggi, menghindari pemblokiran ketat.

Logika: IP berubah secara otomatis saat menerima kesalahan 429 (batas laju), 403 (dilarang), atau timeout. Sistem mengingat IP "buruk" dan sementara mengecualikannya dari rotasi.

# Python - rotasi adaptif dengan daftar hitam
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()
        
        # Memfilter proksi dalam daftar hitam
        available = [
            p for p in self.proxies 
            if p not in self.blacklist_until or self.blacklist_until[p] < now
        ]
        
        if not available:
            # Jika semua dalam daftar hitam, reset dan tunggu
            print("Semua proksi dalam daftar hitam, menunggu 60 detik...")
            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
        
        # Pemblokiran sementara saat kesalahan berulang
        if self.error_count[proxy] >= 3:
            blacklist_duration = 300  # 5 menit
            self.blacklist_until[proxy] = time.time() + blacklist_duration
            print(f"Proksi {proxy} dalam daftar hitam selama {blacklist_duration} detik")
            self.error_count[proxy] = 0  # Reset penghitung
    
    def report_success(self, proxy):
        # Permintaan yang berhasil - reset penghitung kesalahan
        if proxy in self.error_count:
            self.error_count[proxy] = max(0, self.error_count[proxy] - 1)
    

Pendekatan Gabungan (direkomendasikan): Gunakan rotasi dasar berdasarkan waktu (setiap 5-10 menit) + rotasi adaptif saat terjadi kesalahan. Ini memberikan stabilitas dan respons cepat terhadap masalah.

Pengaturan Proksi di Perpustakaan Populer: discord.py dan discord.js

Mari kita lihat pengaturan proksi langkah demi langkah di dua perpustakaan paling populer untuk membuat bot Discord. Contoh-contoh ini cocok untuk sebagian besar tugas dan mudah disesuaikan dengan kebutuhan Anda.

Discord.py (Python)

Discord.py menggunakan aiohttp untuk permintaan HTTP. Proksi diatur melalui parameter proxy saat membuat klien atau melalui pengaturan sesi HTTP langsung.

Langkah 1: Instalasi Dependensi

pip install discord.py aiohttp aiohttp-socks
# aiohttp-socks diperlukan untuk proksi SOCKS5, untuk HTTP/HTTPS tidak wajib
    

Langkah 2: Pengaturan Dasar dengan Satu Proksi

import discord
from discord.ext import commands

# Format proksi: protocol://username:password@ip:port
PROXY = 'http://user:pass@192.168.1.100:8080'

intents = discord.Intents.default()
intents.message_content = True  # Untuk membaca pesan

bot = commands.Bot(
    command_prefix='!',
    intents=intents,
    proxy=PROXY  # Proksi untuk semua permintaan HTTP
)

@bot.event
async def on_ready():
    print(f'Bot {bot.user} terhubung melalui proksi!')

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

bot.run('YOUR_BOT_TOKEN')
    

Langkah 3: Pengaturan dengan Rotasi Proksi

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)  # Rotasi setiap 5 menit
    async def proxy_rotation(self):
        old_proxy = self.current_proxy
        self.current_proxy = random.choice([p for p in PROXIES if p != old_proxy])
        
        # Membuat ulang sesi HTTP dengan proksi baru
        await self.http.close()
        connector = aiohttp.TCPConnector(limit=0)
        self.http.connector = connector
        self.http.__session = aiohttp.ClientSession(connector=connector)
        
        print(f'Proksi diubah: {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 tidak memiliki dukungan proksi bawaan, jadi digunakan pustaka https-proxy-agent atau socks-proxy-agent.

Langkah 1: Instalasi Dependensi

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

Langkah 2: Pengaturan Dasar

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 }  // Proksi untuk permintaan REST API
});

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

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

client.login('YOUR_BOT_TOKEN');
    

Langkah 3: Rotasi Proksi

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

// Rotasi setiap 10 menit
setInterval(() => {
    const newAgent = getNextProxy();
    client.rest.setAgent(newAgent);
    console.log('Proksi diubah');
}, 10 * 60 * 1000);

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

client.login('YOUR_BOT_TOKEN');
    

Penting: Koneksi WebSocket (untuk menerima peristiwa secara real-time) tidak selalu mendukung proksi. Jika Anda mengalami masalah dengan koneksi melalui WebSocket, gunakan hanya proksi HTTP untuk permintaan REST API, dan biarkan WebSocket tanpa proksi. Untuk kasus kritis, pertimbangkan menggunakan VPN sebagai pengganti proksi untuk koneksi WebSocket.

Kesalahan Umum dan Cara Menghindarinya

Bahkan dengan proksi yang diatur dengan benar, Anda dapat mendapatkan pemblokiran jika melakukan kesalahan umum. Mari kita bahas kesalahan paling kritis dan cara penyelesaiannya.

Kesalahan 1: Menggunakan Satu Proksi untuk Semua Bot

Masalah: Anda menjalankan 5-10 bot melalui satu alamat IP. Discord melihat aktivitas simultan beberapa akun dari satu IP dan memblokir semua akun + IP itu sendiri.

Solusi: Aturan "satu bot — satu IP unik" untuk operasi yang stabil. Jika Anda memiliki 10 bot, gunakan setidaknya 10 proksi yang berbeda. Untuk proyek kritis, tambahkan cadangan 50-100% (15-20 proksi untuk 10 bot) untuk rotasi.

Kesalahan 2: Rotasi IP Terlalu Cepat

Masalah: Anda mengganti IP setiap 30-60 detik, berpikir bahwa ini akan melindungi dari pemblokiran. Sebenarnya, Discord menganggap pergantian IP yang sering sebagai aktivitas mencurigakan — pengguna biasa tidak terhubung kembali ke internet setiap menit.

Solusi: Interval rotasi minimum — 3-5 menit. Optimal — 5-15 menit tergantung pada intensitas permintaan. Pengecualian — rotasi adaptif saat menerima batasan laju (429).

Kesalahan 3: Mengabaikan Geolokasi Proksi

Masalah: Bot Anda "tinggal" di server di AS, tetapi menggunakan proksi dari Rusia, Cina, atau India. Discord melihat ketidaksesuaian antara lokasi server yang dinyatakan dan alamat IP, yang meningkatkan kecurigaan.

Solusi: Gunakan proksi dari negara/wilayah yang sama dengan server Discord Anda atau audiens target. Untuk proyek internasional, pilih proksi dari AS atau Eropa — mereka memiliki reputasi yang lebih baik di Discord.

Kesalahan 4: Tidak Menangani Kesalahan

Masalah: Bot menerima HTTP 429 (batas laju) dan terus mengirim permintaan, memperburuk situasi. Discord meningkatkan waktu pemblokiran dengan setiap percobaan.

Solusi: Selalu tangani kode kesalahan:

  • 429 (Terlalu Banyak Permintaan): Baca header Retry-After dan tunggu waktu yang ditentukan + 1-3 detik. Ganti proksi.
  • 403 (Dilarang): IP atau token diblokir. Ganti proksi, periksa kevalidan token.
  • 401 (Tidak Terautentikasi): Token bot tidak valid. Periksa token di Discord Developer Portal.
  • 502/504 (Kesalahan Gateway): Masalah dengan proksi atau API Discord. Tunggu 10-30 detik, ganti proksi.

Kesalahan 5: Menggunakan Proksi Publik atau Murah

Masalah: Proksi gratis atau murah ($0.5-1 per IP) sering kali sudah diblokir oleh Discord, karena telah digunakan oleh ribuan bot dan spammer lainnya.

Solusi: Investasikan dalam proksi residensial berkualitas dari penyedia yang terpercaya. Periksa reputasi IP sebelum digunakan (layanan seperti AbuseIPDB, IPQualityScore). Satu proksi berkualitas seharga $5-10 lebih baik daripada 10 yang diblokir seharga $1.

Kesalahan 6: User-Agent yang Sama untuk Semua Bot

Masalah: Semua bot Anda menggunakan User-Agent standar dari perpustakaan (misalnya, "DiscordBot (discord.py 2.0)"). Discord dengan mudah mengelompokkan koneksi semacam itu dan menghitung otomatisasi massal.

Solusi: Variasikan User-Agent antara bot. Gunakan nilai yang realistis:

# Python - User-Agent kustom
import discord

class CustomBot(discord.Client):
    async def request(self, *args, **kwargs):
        # Mengganti 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)
    

Pemantauan Kinerja Bot dan Penanganan Kesalahan

Pemantauan yang tepat memungkinkan Anda mendeteksi masalah sebelum menyebabkan pemblokiran massal. Mari kita bahas metrik kunci dan alat untuk melacak kinerja bot Discord melalui proksi.

Metrik untuk Dilacak

Metrik Apa yang Dilacak Nilai Kritis
Frekuensi Kesalahan 429 Jumlah kesalahan batasan laju per jam >10 per jam — tinjau strategi permintaan
Frekuensi Kesalahan 403 Pemblokiran IP atau token >3 per hari — proksi terkompromi
Latensi Waktu respons proksi + API Discord >1000ms — proksi lambat, ganti
Tingkat Keberhasilan Permintaan Persentase permintaan yang berhasil (HTTP 200-299) <85% — masalah dengan proksi atau logika bot
Waktu Kerja Proksi Seberapa lama proksi digunakan tanpa masalah <24 jam — mungkin IP telah diblokir

Contoh Sistem Logging

# Python - logging canggih dengan metrik
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
        })
        
        # Pengaturan 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'Batas laju pada proksi {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'Proksi {proxy} diblokir (403)')
        else:
            self.metrics['errors_other'] += 1
            self.logger.error(f'Kesalahan {status_code} pada proksi {proxy}')
    
    def log_proxy_switch(self, old_proxy, new_proxy):
        self.metrics['proxy_switches'] += 1
        self.logger.info(f'Mengganti proksi: {old_proxy} -> {new_proxy}')
    
    def get_report(self):
        total = self.metrics['requests_total']
        if total == 0:
            return "Tidak ada data"
        
        success_rate = (self.metrics['requests_success'] / total) * 100
        avg_latency = sum(self.metrics['avg_latency']) / len(self.metrics['avg_latency'])
        
        report = f"""
=== LAPORAN PEMANTAUAN BOT ===
Total permintaan: {total}
Berhasil: {self.metrics['requests_success']} ({success_rate:.1f}%)
Kesalahan 429 (batas laju): {self.metrics['errors_429']}
Kesalahan 403 (pemblokiran): {self.metrics['errors_403']}
Kesalahan lainnya: {self.metrics['errors_other']}
Rata-rata latensi: {avg_latency:.0f}ms
Penggantian proksi: {self.metrics['proxy_switches']}

=== STATISTIK PROKSI ===
"""
        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']} permintaan, {stats['errors']} kesalahan ({error_rate:.1f}%)\n"
        return report
    

Dengan mengikuti panduan ini dan menghindari kesalahan umum, Anda dapat menjalankan bot Discord dengan lebih efektif dan mengurangi risiko pemblokiran. Selamat mencoba!

```