Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Oyun Sunucusu Chat Botu Yazarken Regex Cehennemine Düşmek ve Flood Kontrolü İle Savaşım

websterx

Üye
Katılım
14 Mart 2026
Mesajlar
34
🔥 Regex Kabusu Başlıyor

Dostlar, selam. Geçenlerde bir oyun sunucusu için gerçek zamanlı chat moderasyon botu yazma işine kalkıştım. "Hadi canım, flood kontrolü basit bir sayaç, küfür filtresi de birkaç regex pattern'inden ibaret" diye düşünüyordum. Ne kadar da safmışım! Meğerse kendimi, insan zekasının spam ve küfür konusundaki yaratıcılığıyla savaşan, sürekli regex yazan bir makineye dönüştürecektim.

Python:
# İlk saf pattern'im. Komik...
kufur_pattern = r"(siktir|amk|aq)"

🤖 Flood Kontrolünde Mantık Kırılması

Flood kontrolü için basit bir zaman damgası ve mesaj sayacı mantığı kurdum. Kullanıcı ID'si, son mesaj zamanı, 5 saniye içinde 3'ten fazla mesaj -> mute. Mantık güzel çalışıyordu, ta ki insanların flood'u harf harf, karakter karakter yapmaya başlayana kadar. "A... S... L... A... N... I... M" şeklinde yazınca benim basit zaman kontrolüm çakılıyordu. Kafayı yiyecektim. StackOverflow'da bile böyle bir saçmalığın çözümünü bulamadım. Sonunda, harfler arasına sıkıştırılmış özel karakterleri ve boşlukları temizleyen bir ön işlemci yazmak zorunda kaldım.

🧠 Küfür Filtresinde Evrim

İlk regex listem bir saat bile dayanmadı. İnsanlar kelimeleri bozuyor, harfleri değiştiriyor (a yerine @, i yerine 1), aralara nokta koyuyordu. Her güncellemede pattern iki katına çıkıyordu. Şaka gibi ama, "re" kütüphanesiyle uğraşırken kendi kendime küfür etmeye başlamıştım! Nihayetinde, kelimeyi temel sesli/sessiz harflere indirgeyen ve benzer sesleri yakalayan basit bir fonksiyon yazdım. Tam bir "regex'i yeniden keşfetmek" deneyimiydi.

💡 Çıkarılan Ders (ve Kod Parçası)

En büyük ders: Gerçek zamanlı moderasyonda saf regex yetmez. Kullanıcı davranışını modellemek, mesajları ön işlemden geçirmek ve biraz da makine öğrenmesi (ya da en azından basit istatistik) şart. Flood kontrolü için de sadece mesaj sayısına değil, mesajların içeriğindeki benzerliğe de bakmak gerekiyor.

Python:
# Basitleştirilmiş ön işlem fonksiyonu
def temizle(mesaj):
    return re.sub(r'[^a-zA-Z0-9ğüşıöçĞÜŞİÖÇ]', '', mesaj).lower()
# Artık "A.s.l.a.n.ı.m" da "aslanım" oluyor.

Sonuç olarak, bot şimdilik çalışıyor ama eminim yarın yeni bir "yaratıcı" spam yöntemi bulacaklar. Siz de böyle bir regex veya flood kontrolü cehennemi yaşadınız mı? Bu işin daha temiz, daha az sinir bozucu bir yolu var mı sizce? Fikirlerinizi bekliyorum!
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri