mIRC Script

mIRC Remote Eventler: Olaylara Otomatik Tepki Vermek

· Güncelleme: · 6 dk okuma

mIRC Remote Eventler: Olaylara Otomatik Tepki Vermek
İçindekiler
  1. Event'in Yapısı
  2. Seviye Kavramı
  3. on TEXT: Mesajlara Tepki
  4. on JOIN ve on PART
  5. on QUIT, on NICK, on KICK
  6. on MODE ve on OP
  7. on ACTION ve on NOTICE
  8. on CONNECT ve on DISCONNECT
  9. Eventleri Durdurmak: halt
  10. Pratik Örnek: Basit Kanal Komut Seti
  11. Nezaket ve Kurallar
  12. Eventleri Planlamak
  13. Birden Fazla Ağda Çalışmak
  14. Olay Kodlarını Test Etmek
  15. 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 belirteciAnlamı
#Bütün kanallar
#kanalYalnızca belirtilen kanal
?Özel mesajlar
*Hem kanal hem özel mesaj

Eşleştirme kalıbında joker karakter kullanılabilir:

KalıpNeyle eşleşir?
!saatYalnı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ğlan

Sı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.