mIRC Raw Eventleri: Ham Sunucu Mesajlarını İşlemek
İçindekiler
mIRC'in JOIN, PART, TEXT gibi hazır olayları günlük ihtiyaçların büyük kısmını karşılar. Ancak IRC protokolü bundan çok daha fazlasını içerir: Sunucunun WHOIS cevapları, kanal listesi yanıtları, hata mesajları, yetenek müzakereleri, sunucu bilgileri. Bu mesajlara erişmek için mIRC raw event yapısı kullanılır. Raw eventler, sunucudan gelen ham IRC mesajlarını doğrudan işlemenizi sağlar.
Raw Event'in Yapısı
on *:RAW <kod veya komut>:<eşleştirme>: {
komutlar
}
Örnek:
on *:RAW 311:*: {
echo -a WHOIS: $2 adli kullanici, $3 $+ @ $+ $4
haltdef
}
- Kod: Sayısal cevap kodu (311, 322, 433 gibi) veya komut adı.
- Eşleştirme: Mesaj içeriğiyle karşılaştırılacak kalıp;
*her şeyi kapsar. - $1, $2, $3: Mesajın parçaları. Parçaların ne anlama geldiği her kod için farklıdır.
haltdef komutu, mIRC'in o mesaj için varsayılan çıktısını engeller; böylece kendi biçimlendirdiğiniz çıktı tek başına görünür.
Sayısal Cevap Kodları
IRC sunucuları, isteklere üç haneli sayısal kodlarla cevap verir. En sık kullanılanlardan bazıları:
| Kod | Anlamı |
|---|---|
| 001 | Hoş geldin mesajı (bağlantı tamamlandı) |
| 311 | WHOIS: kullanıcı bilgisi |
| 319 | WHOIS: kanal listesi |
| 318 | WHOIS: sonu |
| 322 | LIST: kanal bilgisi |
| 323 | LIST: sonu |
| 332 | Kanal konusu |
| 353 | Kanal kullanıcı listesi |
| 366 | Kullanıcı listesi sonu |
| 401 | Böyle bir nick veya kanal yok |
| 433 | Nick kullanımda |
| 471-475 | Kanala girilemedi (çeşitli sebepler) |
Kodların tam listesi ve her kodun parametrelerinin anlamı IRC protokol belgelerinde ve sunucu yazılımlarının belgelerinde bulunur. Hata kodları için IRC hata numerikleri yazımıza bakabilirsiniz.
Çıktıyı Yeniden Biçimlendirmek
Raw eventlerin en yaygın kullanımı, mIRC'in varsayılan çıktısını kendi istediğiniz biçimle değiştirmektir. Örneğin WHOIS çıktısını daha derli toplu göstermek, kanal listesini bir özel pencerede tablo hâlinde sunmak veya hata mesajlarını Türkçeleştirmek mümkündür.
Bunun için ilgili kodu yakalar, kendi çıktınızı üretir ve haltdef ile varsayılan çıktıyı engellersiniz. Özel pencereler için mIRC özel pencereler yazımıza bakın.
Dikkat edilmesi gereken nokta, bir isteğin cevabının birden fazla mesajdan oluşabileceğidir. WHOIS cevabı birkaç farklı kod içerir ve hepsini yakalamanız gerekir. Benzer şekilde kanal listesi, her kanal için ayrı bir mesaj gönderir ve sonunda bir bitiş kodu gelir.
Veri Toplama Kalıbı
Çok parçalı cevapları işlemenin standart yolu şudur: Cevap parçaları geldikçe verileri bir yerde biriktirin, bitiş kodu geldiğinde biriktirdiklerinizi işleyip gösterin.
on *:RAW 322:*: {
hadd -m kanallar $2 $3 $4-
haltdef
}
on *:RAW 323:*: {
echo -a Toplam $hget(kanallar,0).item kanal bulundu.
haltdef
}
Bu kalıp, kanal listesini bellekte toplar ve liste bittiğinde işler. Hash tabloları için mIRC hash tabloları yazımıza bakın.
Önemli bir ayrıntı: Bir sonraki sorgudan önce biriktirdiğiniz verileri temizlemeyi unutmayın; aksi hâlde eski ve yeni sonuçlar karışır.
Nick Çakışmasını Yönetmek
Bağlanırken nickiniz kullanımdaysa sunucu 433 kodunu gönderir. Bunu yakalayarak otomatik olarak alternatif bir nick deneyebilirsiniz:
on *:RAW 433:*: {
if (!$me) {
nick $+ ( $me , _ )
}
}
mIRC'in kendi alternatif nick ayarı da bu işi yapar, ancak kendi mantığınızı yazmak isterseniz raw event bunu mümkün kılar. Bu tür otomatik işlemlerde sonsuz döngüye dikkat etmek gerekir: Alternatif nick de kullanımdaysa ne olacağını düşünmelisiniz.
Kanala Girememe Durumları
Kanala girmeye çalıştığınızda çeşitli hatalar alabilirsiniz: Kanal davetle giriş modunda, parolalı, banlanmışsınız veya yalnızca kayıtlı kullanıcılara açık. Her durum farklı bir kodla bildirilir. Bu kodları yakalayıp kullanıcıya anlaşılır mesajlar göstermek veya otomatik bir çözüm denemek mümkündür.
Örneğin kanal yalnızca kayıtlı kullanıcılara açıksa ve siz giriş yapmamışsanız, scriptiniz services'e identify olmayı deneyip kanala tekrar girmeyi deneyebilir. Otomatik identify için mIRC otomatik identify ve autojoin yazımıza bakın.
IRCv3 ve Yetenek Mesajları
Modern IRC sunucuları, IRCv3 kapsamında ek özellikler sunar ve bunlar protokol seviyesinde müzakere edilir. Bu mesajlar da raw eventlerle yakalanabilir. Güncel mIRC sürümleri yaygın IRCv3 özelliklerini kendiliğinden destekler, ancak özel bir yetenekle çalışmak istiyorsanız raw eventler tek yolunuzdur. IRCv3 hakkında bilgi için IRCv3 özellikleri yazımıza bakın.
halt ve haltdef Farkı
Bu iki komut sık karıştırılır:
- haltdef: mIRC'in varsayılan işlemini ve çıktısını engeller, ama diğer scriptlerin aynı olaya tepki vermesini engellemez.
- halt: Hem varsayılan işlemi hem de kalan bütün script işlemesini durdurur.
Raw eventlerde genellikle haltdef kullanılır: Kendi çıktınızı gösterirsiniz, mIRC'in çıktısını engellersiniz, ama başka scriptlerin de aynı mesajı işlemesine izin verirsiniz. halt kullanmak, diğer scriptlerinizin veya yüklediğiniz addon'ların bozulmasına yol açabilir.
Dikkat Edilmesi Gerekenler
- Varsayılan çıktıyı gereksiz engellemeyin: Önemli sunucu mesajlarını gizlemek, sorunları fark etmenizi engeller.
- Parametre anlamlarını doğrulayın: Her kodun parametreleri farklıdır; kodu yazmadan önce gelen mesajı ham hâliyle yazdırıp incelemek en güvenilir yoldur.
- Sunucu farklarını hesaplayın: Farklı IRC sunucu yazılımları bazı kodları farklı biçimlerde gönderebilir.
- Ağ kontrolü yapın: Birden fazla ağa bağlıysanız, raw eventiniz bütün ağlarda çalışır.
- Sonsuz döngüden kaçının: Bir hataya tepki olarak aynı komutu tekrar göndermek döngüye yol açabilir.
Ham Mesajları İncelemek
Raw event yazmadan önce gelen mesajın yapısını anlamak gerekir. Bunun en pratik yolu, geçici bir genel raw yakalayıcı yazıp bütün mesajları yazdırmaktır. Böylece hangi kodun hangi parametrelerle geldiğini kendi gözünüzle görürsünüz. İnceleme bittiğinde bu geçici kodu kaldırmayı unutmayın; her mesajı yazdırmak pencereyi doldurur.
Gerçek Bir Senaryo
Bir kullanıcı, kanal listesini kendi istediği biçimde görmek istiyor: Yalnızca belirli bir kişi sayısının üzerindeki kanalları, kişi sayısına göre sıralı olarak. mIRC'in varsayılan kanal listesi penceresi bu filtrelemeyi sunmuyor. Kullanıcı bir raw event yazıyor: Kanal bilgisi mesajlarını yakalayıp hash tablosunda biriktiriyor, varsayılan çıktıyı engelliyor, liste bitiş kodu geldiğinde kayıtları filtreleyip sıralıyor ve bir özel pencerede tablo hâlinde gösteriyor. Artık yüzlerce kanal arasından ilgilendiklerini saniyeler içinde buluyor.
Sonuç
Raw eventler, mIRC scripting'in kapısını IRC protokolünün tamamına açar. Sayısal cevap kodlarını tanıyın, çok parçalı cevapları biriktirip bitiş kodunda işleyin, haltdef ile varsayılan çıktıyı yönetin, kodu yazmadan önce ham mesajları inceleyin ve halt kullanırken diğer scriptleri düşünün. İstemciler arası mesajlaşmayı öğrenmek için sıradaki rehberimiz mIRC CTCP cevapları.
IRC sorunun mu var? Kanalda birlikte çözelim.
💬 Kanala BağlanSıkça Sorulan Sorular
Raw event nedir?
Sunucudan gelen ham IRC mesajlarını yakalamanızı sağlayan olay türüdür. Sayısal cevap kodlarına veya komut adlarına göre eşleştirilir.
Sayısal cevap kodu nedir?
Sunucunun bir isteğe verdiği cevabı belirten üç haneli sayıdır. Örneğin 311 WHOIS cevabının başlangıcıdır.
Raw event'te halt kullanmak güvenli mi?
Dikkatli kullanılmalıdır. mIRC'in varsayılan çıktısını gizler; yanlış kullanıldığında önemli mesajları kaçırmanıza yol açar.


