mIRC Remote Eventler: Olaylara Otomatik Tepki Vermek
İçindekiler
- Event'in Yapısı
- Seviye Kavramı
- on TEXT: Mesajlara Tepki
- on JOIN ve on PART
- on QUIT, on NICK, on KICK
- on MODE ve on OP
- on ACTION ve on NOTICE
- on CONNECT ve on DISCONNECT
- Eventleri Durdurmak: halt
- Pratik Örnek: Basit Kanal Komut Seti
- Nezaket ve Kurallar
- Eventleri Planlamak
- Birden Fazla Ağda Çalışmak
- Olay Kodlarını Test Etmek
- Sonuç
mIRC scripting'in gerçek gücü remote eventlerde ortaya çıkar. Alias'lar siz bir komut yazdığınızda çalışır; eventler ise IRC'de bir şey olduğunda kendiliğinden çalışır. Biri kanala girdiğinde, bir mesaj geldiğinde, biri atıldığında veya kanal modu değiştiğinde scriptiniz devreye girer. Bu rehberde mIRC remote event yapısını ve en sık kullanılan olay türlerini örneklerle anlatıyoruz.
Event'in Yapısı
Bütün eventler şu kalıba uyar:
on <seviye>:<OLAY>:<parametreler>: {
komutlar
}
Örnek:
on *:JOIN:#kanal: {
.notice $nick Kanala hos geldin!
}
- Seviye: Olayın kimler için geçerli olduğunu belirtir.
*herkes anlamına gelir. - OLAY: Olay türü: TEXT, JOIN, PART, KICK, NICK, MODE ve diğerleri.
- Parametreler: Olay türüne göre kanal, kalıp veya her ikisi.
Event kodları Remote bölümüne yazılır; editör hakkında bilgi için mIRC scripts editörü yazımıza bakın.
Seviye Kavramı
Seviye alanı, olayın kimler tarafından tetiklenebileceğini sınırlar. * bütün kullanıcıları kapsar. mIRC ayrıca kullanıcıları seviyelere atamanıza ve olayları bu seviyelere göre kısıtlamanıza izin verir. Bunun için adres defterine kullanıcı ekleyip seviye verirsiniz ve event tanımında o seviyeyi belirtirsiniz. Böylece bir komutu yalnızca güvendiğiniz kişilerin kullanmasını sağlayabilirsiniz.
Pratikte birçok scripter, seviye yerine kod içinde kontrol yapmayı tercih eder:
on *:TEXT:!temizle:#: {
if ($nick isop $chan) { topic $chan Kanal konusu sifirlandi }
}
isop operatörü, kişinin o kanalda op olup olmadığını kontrol eder. Benzer şekilde isvoice, ishop ve isreg operatörleri de bulunur.
on TEXT: Mesajlara Tepki
En çok kullanılan olay türüdür:
on *:TEXT:!saat:#: {
msg $chan Saat: $time(HH:nn)
}
Parametre alanının yapısı: önce eşleştirme kalıbı, sonra nerede dinlendiği.
| Konum belirteci | Anlamı |
|---|---|
# | Bütün kanallar |
#kanal | Yalnızca belirtilen kanal |
? | Özel mesajlar |
* | Hem kanal hem özel mesaj |
Eşleştirme kalıbında joker karakter kullanılabilir:
| Kalıp | Neyle eşleşir? |
|---|---|
!saat | Yalnızca tam olarak "!saat" mesajı |
!saat* | "!saat" ile başlayan mesajlar |
*merhaba* | İçinde "merhaba" geçen mesajlar |
* | Bütün mesajlar |
Her mesajda tetiklenen kalıplar (* gibi) dikkatli kullanılmalıdır; kalabalık kanallarda performans sorununa yol açabilir. Performans için mIRC script performansı yazımıza bakın.
on JOIN ve on PART
on *:JOIN:#: {
if ($nick == $me) { return }
echo $chan $nick kanala girdi.
}
on *:PART:#: {
echo $chan $nick kanaldan ayrildi.
}
$nick == $me kontrolü, kendi girişinizde kodun çalışmasını önler. $me kendi nickinizi verir. Karşılama scriptleri için mIRC karşılama scripti yazımıza bakın.
on QUIT, on NICK, on KICK
on *:QUIT: {
echo -a $nick IRC den cikti: $1-
}
on *:NICK: {
echo -a $nick nickini $newnick olarak degistirdi.
}
on *:KICK:#: {
echo $chan $knick $+ , $nick tarafindan atildi: $1-
}
QUIT ve NICK olayları kanal bazlı değildir; kullanıcı ağdan çıktığında veya nick değiştirdiğinde bir kez tetiklenir. KICK olayında atılan kişi $knick, atan kişi ise $nick ile alınır.
on MODE ve on OP
on *:MODE:#: {
echo $chan $nick mod degistirdi: $1-
}
on *:OP:#: {
if ($opnick == $me) { echo $chan Op aldim! }
}
mIRC, mod değişikliklerini genel MODE olayıyla bildirdiği gibi, op ve voice gibi yaygın durumlar için ayrı olaylar da sunar: OP, DEOP, VOICE, DEVOICE, BAN, UNBAN. Bu özel olaylar, ilgilendiğiniz durumu yakalamayı kolaylaştırır.
on ACTION ve on NOTICE
on *:ACTION:*:#: {
echo $chan $nick eylemi: $1-
}
on *:NOTICE:*:*: {
echo -a Notice $nick $+ : $1-
}
ACTION, /me ile gönderilen eylem mesajlarını yakalar. NOTICE ise notice mesajlarını. Services'ten gelen mesajları işlemek için NOTICE olayı kullanışlıdır; otomatik identify scriptleri bu olaydan yararlanır. Bkz. mIRC otomatik identify ve autojoin.
on CONNECT ve on DISCONNECT
on *:CONNECT: {
if ($network == OrnekAg) {
join #kanal
}
}
CONNECT olayı, bir sunucuya bağlandığınızda tetiklenir. Otomatik kanal girişi ve identify işlemleri için kullanılır. $network identifier'ı, hangi ağa bağlandığınızı verir; birden fazla ağ kullanıyorsanız bu kontrol önemlidir.
Eventleri Durdurmak: halt
halt komutu, mIRC'in o olay için varsayılan davranışını ve diğer scriptlerin aynı olaya tepkisini durdurur:
on *:TEXT:*reklam*:#: {
if ($nick isop $chan) { return }
echo $chan [Filtrelendi] $nick
halt
}
Bu örnekte reklam içeren mesaj mIRC'in penceresinde normal şekilde gösterilmez. halt güçlü bir komuttur; dikkatli kullanılmalıdır çünkü diğer scriptlerinizin de çalışmasını engelleyebilir.
return ise yalnızca o anki script bloğundan çıkar, diğer scriptleri etkilemez. Çoğu durumda return daha uygun seçimdir.
Pratik Örnek: Basit Kanal Komut Seti
on *:TEXT:!kurallar:#: {
if (%kurallar_bekle) { return }
msg $chan Kurallar: Saygili olun, reklam yapmayin.
set -u10 %kurallar_bekle 1
}
Burada set -u10 ile on saniye süren bir değişken oluşturulur; bu süre içinde komut tekrar çalışmaz. Bu, basit bir flood korumasıdır. Değişkenler için mIRC değişkenler yazımıza bakın.
Nezaket ve Kurallar
Remote eventlerle yazdığınız otomatik tepkiler kanalları etkiler. Dikkat edilmesi gerekenler:
- Otomatik cevapları sınırlayın: Her mesaja cevap veren scriptler rahatsız edicidir.
- Flood koruması ekleyin: Komutlarınıza bekleme süresi koyun.
- Kanal kurallarına uyun: Birçok kanal, kullanıcıların bot gibi davranmasını yasaklar.
- Sessiz komutlar kullanın: Komutun başına nokta koyarak (
.notice) kendi pencerenizde çıktı gösterilmesini engelleyebilirsiniz. - Ağ kurallarını okuyun: Bazı ağlar otomatik tepkiler konusunda net kurallara sahiptir.
Eventleri Planlamak
Bir script yazmaya başlamadan önce hangi olaylara tepki vermesi gerektiğini düşünmek, kodun yapısını baştan doğru kurmanızı sağlar. Örneğin bir kanal koruma scripti yazıyorsanız yalnızca mesajlara değil, girişlere, nick değişikliklerine ve mod değişikliklerine de tepki vermesi gerekebilir. Bu olayları listeleyip her biri için ne yapılacağını not etmek, sonradan eklenen yamalardan oluşan karmaşık bir koddan çok daha düzenli bir yapı doğurur.
Her olay için ayrı ayrı küçük bloklar yazmak, hepsini tek bir büyük blokta toplamaktan iyidir. Bir sorun çıktığında hangi olayın sorunlu olduğunu hemen bulursunuz ve bir olayı geçici olarak kapatmak istediğinizde yalnızca o bloğu devre dışı bırakırsınız.
Birden Fazla Ağda Çalışmak
mIRC aynı anda birden fazla ağa bağlanabilir ve remote eventleriniz bütün ağlarda çalışır. Bu bazen istenmeyen sonuçlar doğurur: Bir ağ için yazdığınız karşılama mesajı, başka bir ağdaki kanalda da gönderilir. Bunu önlemek için olay kodlarınızın başında ağ kontrolü yapmak iyi bir alışkanlıktır. Benzer şekilde kanal adı kontrolü de önemlidir; aynı adda kanallar farklı ağlarda bulunabilir ve tamamen farklı topluluklara ait olabilir.
Olay Kodlarını Test Etmek
Remote eventleri test etmek, alias'ları test etmekten biraz daha zordur çünkü olayın gerçekleşmesini beklemeniz gerekir. Pratik bir yöntem, olay kodunun içindeki işi bir alias'a taşımak ve o alias'ı elle çalıştırarak test etmektir. Kod doğru çalıştığında olaydan çağırmanız yeterlidir. Bir diğer yöntem, test için ayrı bir kanal kullanmak ve orada kendi kendinize girip çıkarak olayları tetiklemektir.
Sonuç
Remote eventler, mIRC'in IRC'de olup bitenlere kendiliğinden tepki vermesini sağlar. Olay yapısını öğrenin, en sık kullanılan türleri (TEXT, JOIN, PART, KICK, MODE) tanıyın, eşleştirme kalıplarını doğru seçin, halt ve return farkını bilin ve otomatik tepkilerinizi nazik tutun. Sağ tık menülerinizi özelleştirmek için sıradaki rehberimiz mIRC popup menüleri.
IRC sorunun mu var? Kanalda birlikte çözelim.
💬 Kanala BağlanSıkça Sorulan Sorular
on TEXT olayı ne zaman tetiklenir?
Belirttiğiniz kalıpla eşleşen bir mesaj geldiğinde tetiklenir. Kanal, özel mesaj veya her ikisi için ayrı ayrı tanımlanabilir.
Event'teki yıldız ne anlama gelir?
Seviye alanındaki yıldız, olayın herkes için geçerli olduğunu belirtir. Kalıp alanındaki yıldız ise joker karakterdir.
Kendi mesajlarıma neden tepki vermiyor?
mIRC, kendi gönderdiğiniz mesajlar için on TEXT olayını tetiklemez. Bu, sonsuz döngüleri önler.


