Sıfırdan Discord Moderasyon Botu: Node.js ile Veritabanı Kaydı ve Rate Limit Yönetimi

0 Replies 3 Views
·
Participants
Thread Starter #0
Discord platformunda moderasyon botları, topluluk yönetiminin temel taşlarından biridir ve bunları sıfırdan geliştirmek, hem teknik hem de düşünsel açıdan oldukça öğreticidir. Bu rehberde, Node.js kullanarak, MySQL veya MariaDB tabanlı bir veritabanı entegrasyonu ve HTTP rate limit engelleme sisteminin nasıl kurulacağını detaylandıracağız.

İlk olarak, botun temel fonksiyonlarını belirlemek önemlidir: kullanıcı raporlama, yasa dışı içerik tespiti ve engelleme, üyelerin otomatik karşılama veya uyarı sistemi gibi. Bu fonksiyonları gerçekleştirirken, veritabanını etkin kullanmak, kullanıcı ve olay kayıtlarını saklamak ve geçmişe dönük analiz yapmak açısından kritik.

Veritabanı kaydı açısından, ilk adım, kullanıcı ve olayların kaydını sağlayacak tabloları tasarlamaktır. Örneğin,
CODE
12345678910111213141516  
CREATE TABLE users (  
    id INT PRIMARY KEY AUTO_INCREMENT,  
    discord_id VARCHAR(64) UNIQUE NOT NULL,  
    username VARCHAR(100),  
    join_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP  
);  

CREATE TABLE infractions (  
    id INT PRIMARY KEY AUTO_INCREMENT,  
    user_id INT,  
    infraction_type VARCHAR(50),  
    reason TEXT,  
    date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,  
    FOREIGN KEY (user_id) REFERENCES users(id)  
);  

gibi yapılar, kullanıcı ve ihlal detaylarını saklamada kullanışlı olur.

Rate limit engelleme ise, özellikle API veya mesaj gönderimlerde, belli aralıklarla ve belirli sayıda isteğin aşılmasını önlemek adına devreye alınmalıdır. Bu noktada, kullanıcının IP veya Discord ID bazında istek sayısını tutan bir sistem geliştirmek gerekebilir. Örneğin,
CODE
1234567891011121314151617181920  
const rateLimits = {};  

function checkRateLimit(userId) {  
    const now = Date.now();  
    if (!rateLimits[userId]) {  
        rateLimits[userId] = { count: 1, timestamp: now };  
        return true;  
    }  
    const userData = rateLimits[userId];  
    if (now - userData.timestamp < 60000) { // 1 dakika  
        if (userData.count >= 20) { // 20 istek limit  
            return false;  
        }  
        userData.count++;  
    } else {  
        rateLimits[userId] = { count: 1, timestamp: now };  
    }  
    return true;  
}  

bu fonksiyon, kullanıcıların belirlenen limitleri aşmasını engeller ve aşanları otomatik olarak kısıtlar veya geçici ban uygular.

Son olarak, bu sistemlerin güvenilirliği ve sürdürülebilirliği için, düzenli bakım, yedekleme ve performans optimizasyonları gereklidir. Ayrıca, botun API'leri ve veritabanı etkileşimini asenkron ve hataya dayanıklı hale getirmek, operasyonel başarıyı artırır.

Bu altyapı ile, Discord moderasyon botunuz hem verimli çalışır hem de bot kullanımını aşırı yüklenmeden veya saldırıya açık hale getirmeden yönetebilirsiniz.

Bu konudaki detaylar veya spesifik kod uygulamaları ile ilgili sorular, kaynaklar veya örnek projeler paylaşılabilir.

You must be logged in to reply.

0 quotes selected