Kod: Kodu kopyalamak için üzerine çift tıklayın!
# kickradyo_protect.tcl
# Kullanım: bu dosyayı eggdrop'un script dizinine koyup yükleyin (source ile).
# Varsayılan izinli liste: ops, sop, hop veya 'allowed_kicks' listesinde olan nickler
# ---- Ayarlar ----
# Bu listeye ayrıca izin vermek istediğiniz özel nickleri ekleyin
set allowed_kicks {Nick1 Nick2 BotAdmin}
# Eğer true yaparsanız yetkisiz kullananları uyarır (mesaj),
# eğer "kick_on_violation" true ise o kullanıcıyı kanaldan atar.
set kick_on_violation false
set ban_on_violation false ;# true yaparsanız +b ekleme de yapılır (örnek gösterim)
# ---- Yetki kontrol proc'u ----
proc _kr_check_privs {nick uhost chan} {
# Bu proc, nick'in yetkili olup olmadığını döndürür (1/0).
# Birkaç yöntem dener: 1) eggdrop'un dahili fonksiyonları 2) allowed_kicks listesi
# NOT: eggdrop kurulumunuza göre `chanop` ya da `isop` fonksiyonları farklı olabilir.
# Eğer hata verirse, catch ile güvenle fallback'a düşer.
# 1) Eğer botun kendi takibiyle kanal operatörü ise
if {[catch {chanop $chan $nick} res] == 0} {
if {$res} { return 1 }
}
# 2) Bazı eggdroplarda isop/is_chanop benzeri fonksiyon olabilir
if {[catch {isop $nick $chan} res2] == 0} {
if {$res2} { return 1 }
}
# 3) Fallback: allowed_kicks listesinde mi?
global allowed_kicks
if {[lsearch -nocase $allowed_kicks $nick] >= 0} {
return 1
}
# Yetkili değilse 0 döner
return 0
}
# ---- Public mesaj bağlama ----
# Bu bind, kanalda birisi ".kickradyo" yazdığında çalışır.
# Bind pattern: ^\.kickradyo( |$) -> komutun başta olması ve parametre opsiyonel
bind pub - {^\.kickradyo( |$)} _kr_handle_pub
proc _kr_handle_pub {nick uhost hand chan text} {
# nick = gönderen, uhost = user@host, chan = #kanal, text = tüm mesaj
if {[_kr_check_privs $nick $uhost $chan]} {
# Yetkili: hiçbir şey yapma, diğer botlar/komutlar devam etsin.
return
}
# Yetkisiz kullanıcı: uyar, ve opsiyonel olarak kick/ban uygula
putquick "PRIVMSG $chan :$nick: Bu komutu kullanma yetkiniz yok."
putquick "NOTICE $nick :Bu komut yalnızca kanal yetkililerine açıktır."
global kick_on_violation ban_on_violation
if {$kick_on_violation} {
# Kick (neden yazısı isteğe bağlı)
putquick "KICK $chan $nick :Yetkisiz .kickradyo kullanımı"
}
if {$ban_on_violation} {
# Basit bir +b ekleme örneği (hostmask daha uygun olur)
# Burada uhost değişkenini doğrudan kullanıyoruz (örnek), kendi network'unuz için düzenleyin.
set mask "*!*@$uhost"
putquick "MODE $chan +b $mask"
}
# İsteğe bağlı: komutun başka botlara ulaşmasını engellemek isterseniz
# dönüş ile diğer bindlerin çalışmasını önlemeye çalışabilirsiniz. (eggdrop sürümüne göre farklılık gösterir)
# Bazı kurulumlarda "return -code 1" vs. "return" davranışı değişir. Genelde return ile yeterli olur.
return
}
Kod daha önceden elimde vardı istediğine göre eklemeleri yaptım. Kod bana ait değil ve denemesini yapmadım olmazsa yaz düzeltme yaparız