Cevap: Eggdrop normal ve msg komut kullanimi
Kanala Yazılan Herşey İçin:
bind pubm Bindi Beş Argümanlı
Prosedürü Tetikler.
Bunlar:
nick: Yazan Kişi,
uhost: Yazanın ~ident@host
hand; Varsa Yazan Kişinin Bot Kullanıcı Adı/Rumuzu
chan; Mesajın Yazıldığı #Kanal
text Yada arg; Son Argümana Verilen İsim Tanımlı Değildir.
İstenen Ad Verilebilir
(args,argv, argc .. Haricinde! Bunların Özel Anlamı Vardır!)
Son Argüman #Kanalda Yazılan Yazı/Mesajdır.
Özelde Yazılanlar Herşey İçin:
bind msgm
Dört Argüman'lı Prosedürü Tetikler:
nick: Yazan Kişi.
uhost: Yazanın ~ident@host
hand; Varsa Yazan Kişinin Bot Kullanıcı Adı/Rumuzu
text Yada arg; Yazılan Text/Mesaj
Bind Yapısı ;
bind <Türü> <Flag> <Komut> <Prosedür Adı>
bind pubm - * Bot_Komut
# Kanalda Yazılan Herşey İçin Event (bind pubm)
# - Yada -|- Yada * Herkesi Kapsar!
# * Her Yazılanda!
# Tetiklenen Prosedür
# Bu Kanallarda Çalışsın!
set KomutKanal [list #KanalA #KanalB]
# proc <Prosedür Adı> <Argümanları>
proc Bot_Komut {nick uhost hand chan arg} {
# $chan Küçük Harfe Çevrilerek,
# Yine Küçük Harfe Çevrilmiş KomutKanal Listesinde Yoksa
# Hiçbirşey Yapma/İşleme
if {[string tolower $chan] ni [string tolower $::KomutKanal]} { return }
# Kanala Yazılan İlk Kelimeyi Küçülterek Seç;
set ilk [lindex [split [string tolower $arg]] 0]
# ilk'in Bot Adı Olup Olmadığını Kontrol Et:
if {![isbotnick $ilk]} { return }
# Değilse, İşlem Yapma
# Komut Kelimesini Küçülterek Seç;
# (Bot Nickinden Sonra Gelecek İkinci Kelime Olmalı!)
set komut [lindex [split [string tolower $arg]] 1]
# Komut'un Hedefi Olacak Kişi!
# Komuttan Sonra Gelen Kelime Küçülterek Seç!
set hedef [lindex [split [string tolower $arg]] 2]
# Komut Kullanma Yetkisi Sadece
# Şu Kullanıcı Flaglarına Sahip Kişilerde Olsun
# Diğerlerine Nanik Yap!
if {![matchattr [nick2hand $nick] mn|oa $chan]} {
puthelp "notice $nick :Nanik!"
return 0
}
# Global Kullanııcı Yetkileri|Kanalda Atanmış Kullanıcı Yetkileri
# m = Bot Master , n = Bot Sahibi/Owner
# o = Kanal Op , a = Kanal'da Girişte Oto Op Verilecek Kimse
##########################################
# Buraya Kadar Gerekli Kontroller Yapıldı!
# Buradan Sonrası İşlemler!
# switch Bir Liste Komutu,
# Bunun Gibi Birden Çok İşlem
# Tek Prosedür Üzerinde Yapılacaksa,
# elseif elseif Yerine Kullanılabilecek
# Bir Tcl Komutu.
# Görünüş Açısından Da Daha Güzel!
switch -exact -- $komut {
# switch Komutunun Pek Çok -Opsiyonundan Biri;
# -exact Tam Olarak Diye Çevirebiliriz Sanırım Exactly Kesinlikle Gibisinden,
# Bunun Dışında -glob -regexp -nocase ..vs Seçenekleri Vardır!
#
# Komut "Şuysa" { Bunlar Yapılacak } Şeklinde Bundan Sonrası!
"op" { if {![isop $hedef $chan] && [onchan $hedef $chan]} {
# Hedef Kişinin Op'u Zaten Yoksa Ve
# Hedef Kişi Kanaldaysa;
pushmode $chan +o $hedef
# pushmode Mode Değişimleri İçin Kullanılır
# Ardından flushmode Komutu Kullanılırsa
# Daha Hızlı Mode Değişimi Gerçekleşir!
flushmode $chan
} else {
# Eğer Hedef'in Zaten Op'u Varsa
# Yada Hedef Diye Girilen Kişi Kanalda Değilse;
puthelp "notice $nick :Peh!"
return
}
}
# Sonraki!...
"voice" { if {![isvoice $hedef $chan] && [onchan $hedef $chan]} {
# Hedef Kişinin Voice'u Zaten Yoksa Ve
# Hedef Kişi Kanaldaysa;
pushmode $chan +v $hedef
# pushmode Mode Değişimleri İçin Kullanılır
# Ardından flushmode Komutu Kullanılırsa
# Daha Hızlı Mode Değişimi Gerçekleşir!
flushmode $chan
} else {
# Eğer Hedef'in Zaten Voice'u Varsa
# Yada Hedef Diye Girilen Kişi Kanalda Değilse;
puthelp "notice $nick :Peh!"
return
}
}
# Switch Komutunun Sonu default İle Bitmeli!
# Öntanımlı Olarak Verilen İşlemler Dışında Kalan Durum
# Gerçekleştiğinde, Ne Yapılacağı Buradan Bilenecek:
default { return 0 }
} ;#switch Listesinin Sonu!
# Pubm Bind'i return 0 İle Bitirmezseniz,
# Bot Log Almayı Bırakır,
# Kanaldaki Mesajların Hiçbiri Log'a İşlemez
# O nedenle Her Zaman Pubm Bindini;
return 0
};# Bitirin
Kanala Giriş Eventi İçin Join Bindi
bind join - * Bot_Join
proc Bot_Join {nick uhost hand chan} {
# Join Eventinde Doğal Olarak Text Yoktur
# Dört Argümanı Vardır!
# Giren Kişi Bot Değilse Bizi İlgilendirmez!
if {![[isbotnick $nick]} { return }
# +h +a +q Gibi Modlar Eggdrop Kaynağında
# Tanımlı Kullanıcı Modlarından Değildir!
# Yerli Sunucuların Aksine,
# Efnet,Quakenet,Ircnet,Undernet,Freenode,Dalnet Gibi
# Köklü Dev Sunucular Bu Kullanıcı Modları/Yetkilerini Kullanmazlar!
# O Nedenlede Eggdrop Geliştirenler Bu Modları Eklemeye
# Ayak Sürümüşlerdir Hep!
# Değişeceğinide Sanmıyorum Yakın Gelecekte....
# Bu Modu Chan Servis İle Değil Kendi Kendine,
# Oper Yetki Kullanarak Yapacaksa ;
putserv "privmsg operserv :mode $chan +a $::botnick"
return 1
} ;# Bu Kadar!
__________________ Beş Tas Has Hoş Hoşaf. |