bu "muaf tutma" işini yapmanın birden fazla yolu vardır... (ancak kendi fikrimce) en sağlıklı/sağlam yöntemi:
botun kullanıcıyı tanıdığı/bildiği yolla muaf tutmak/kayırmak olabilir.
eggdrop unreal'deki gibi kendi içinde bir access/kullanıcı flag sistemine sahiptir. Şöyleki eggdrop ilk olarak EFnet'te geliştirilmiş/düşünülmüş bir bot,bunun en başlıca nedenide EFnet'in ta kuruluşundan bu yana herhangi bir services kullanmıyor oluşu,kanal içi yönetimin tamamen o kanalın kullanıcılarının bilgi ve becerilerine bırakılmış olması,eggdrop gibi kanal içindeki işlerin yönetimini en iyi şekilde yapabilecek bir botun/yazılımın geliştirilmesine önayak/sebep olmuştur.
bu nedenledir ki eggdrop botu geliştirilirken services'lerin sağladığı/yapabildiği pek çok iş/özellik bota entegre edilmiştir.
kullanıcı seviyeleri/flagları sistemide bunlardan biridir.
burda görebileceğiniz üzere ->
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] hemen her türde bota erişim/kullanıcı tanımları flaglar yardımıyla bot'un kaynak kodları içinde tanımlanmıştır.
uzun sözün kısası,botunuza bağlanıp (dcc chat yada telnet üzerinden)
.+user kullanıcı (kullanıcı bota tanımlanmış kullanıcı hesap adı gibi düşünülebilir illa nick/rumuz demek değildir.(ancak olsada/eşleşsede daha iyi olabilir.) bu handle" diyede tabir edilir.) şeklinde kullanıcı botun .botunuz.user dosyasına eklenmiş olur.
(kullanıcı eklenirken bu kişiye şifrede verilebilir bota kendini auth etmekte kullanabilir ki bu sayede bot üzerinde bir kanala yada kanallara access'li olarak eklenmiş/tanımlanmışsa bota kendini o kullanıcı tanıttığı anda aynı services'e kendini identify/auth ettiğinizde kayıtlı olduğunuz access'i almanız gibi bot o kişiye ekli access'i verir. ancak zaruri değildir ayrıca sonradanda eklenebilir değiştirilebilinir.) bu komut hakkında botun help/yardım dosyasından bilgi almak için bota bağlıyken .help +user komutu size detaylı yardım içeriğini gösterecektir.
daha sonra bu kullanıcıyı tanıyabilmesi için bota kullanıcının *!ident@*.hostu şeklinde eklenir.. -> .+host kullanıcı *!identim@*.hostumun-bi.kısmı
bu güvenlik için,botun kişiyi diğerlerinden ayırd edebilmesi ,karıştırmaması için gereklidir.(host olurda ilerde değişir bota ekli olandan farklı bir hale gelirse yeni hostuda bu şekilde tanıtabilir,eski hostu .-host kullanıcı *!ident@*.hostu ..şeklinde silebilirsiniz.) yardım içeriği için bota : .help +host
bu şekilde kullanıcı botun user/kullanıcı dosyasına(farklı bir yer tanımlanmamışsa botun ana dizininde olur) kayıt edilir.
bu bota eklenmiş/tanımlanmış kullanıcıya access/flag vermek içinse :
.chattr kullanıcı +flag-flag #kanal yada .chattr kullanıcı global-flag|kanal-flag #kanal .. şeklinde kullanıcıya erişim/seviye eklemiş olursunuz...tüm bunlar botun user/kullanıcı dosyasına kayıt edilir.bot kişi/leri bu şekilde görür tanır.
buna göre kod içinde kullanıcıyı bota ekli flaglarına göre muaf tutabiliriz artık.
Kod: Kodu kopyalamak için üzerine çift tıklayın!
set globflags "mnf"
set kanalflags "aof"
bind part -|- "#Sohbet *" part:knl
proc part:knl {nick uhost hand chan {msg ""}} {
if {![isbotnick $nick] || ![matchattr [nick2hand $nick] $::globflags|$::kanalflags $chan]} {
putquick "SAJOIN $nick $chan"
puthelp "privmsg $nick :$chan Kanalından Çıkış Yapmak Yasaklanmiştır."
return 0
}
}
global-flaglar botun olduğu tüm kanallar üzerindeki kullanıcı'nın haklarını/erişimini temsil eder.kanal flaglarıysa kodun işlediği kanal üzerindeki kullanıcıların haklarını/erişimini gösterir.