IFGT Makale mIRC Scripting ve Olay Güdümlü Programlamanın Temelleri

IFGT Konu Bilgileri

Konu Hakkında Merhaba, tarihinde IRC Genel bilgi makaleleri kategorisinde Mightzen tarafından oluşturulan mIRC Scripting ve Olay Güdümlü Programlamanın Temelleri başlıklı konuyu okuyorsunuz. Bu konu şimdiye dek 15 kez görüntülenmiş, 1 yorum ve 0 tepki puanı almıştır...
Kategori Adı IRC Genel bilgi makaleleri
Konu Başlığı mIRC Scripting ve Olay Güdümlü Programlamanın Temelleri
Konbuyu başlatan Mightzen
Başlangıç tarihi
Cevaplar
Görüntüleme
İlk mesaj tepki puanı
Son Mesaj Yazan IF Dijital Asistan

Mightzen

IFGT Developer
l 💙 IFGENTR
0
IFGT RANK
Katılım
6 Ağu 2025
Mesajlar
54
Çözümler
1
Tepkime puanı
26
IFGT Puan
8
İnternetin erken dönemlerinde anlık iletişimin bel kemiğini oluşturan IRC (Internet Relay Chat), yalnızca metin tabanlı bir sohbet protokolü olmanın çok ötesindeydi. Bu ekosistemi bu kadar güçlü kılan en önemli faktörlerden biri, istemci tarafında (özellikle popüler mIRC istemcisinde) sunulan otomasyon ve programlanabilirlik yetenekleriydi. Bu yeteneklerin kalbinde ise komut dosyalarının yazıldığı ve çalıştırıldığı "Remote" (Uzak) sekmesi yer alır.

Remote, mIRC Scripting Language (mSL) kullanılarak olay güdümlü (event-driven) kodların yazıldığı, botların oluşturulduğu ve karmaşık istemci otomasyonlarının sağlandığı ana merkezdir.

Olay Güdümlü Mimari (Event-Driven Architecture)​

IRC Remote sisteminin en belirgin özelliği, tamamen olay güdümlü bir mimariye sahip olmasıdır. Kodlar yukarıdan aşağıya sırayla çalışmak yerine, belirli bir tetikleyici (trigger) gerçekleştiğinde devreye girer. Sunucudan gelen bir veri paketi, bir kullanıcının kanala girmesi veya belirli bir kelimenin yazılması gibi durumlar anında yakalanır ve işlenir.

Bu mimari, günümüz modern yazılım geliştirmede kullanılan "event listener" mantığının en saf ve erken dönem örneklerinden biridir.

Temel Yapı Taşları​

Remote scriptlerinin çalışma prensibi üç ana bileşene dayanır:

  • Events (Olaylar): Kodun ne zaman çalışacağını belirleyen dinleyicilerdir. Bir kanala mesaj geldiğinde ON TEXT, biri kanala katıldığında ON JOIN, sunucuya bağlanıldığında ise ON CONNECT olayları tetiklenir.
  • Identifiers (Tanımlayıcılar): Anlık olarak sistemden veya olaydan veri çekmeye yarayan, $ işareti ile başlayan fonksiyonlardır. Örneğin, işlemi yapan kişinin rumuzunu almak için $nick, olayın gerçekleştiği kanalı öğrenmek için $chan kullanılır.
  • Variables (Değişkenler): Verileri depolamak için kullanılan, % işareti ile tanımlanan bellek alanlarıdır. Local (sadece o kod bloğunda geçerli) veya Global olarak tanımlanabilirler.

Örnek Bir Remote Senaryosu​

Bir kanalda birisi "!selam" yazdığında, botun veya istemcinin otomatik olarak cevap vermesini sağlayan temel bir Remote kodu şu şekilde yazılır:

Kod:
on *:TEXT:!selam:#: {
  msg $chan Merhaba $nick, kanala hoş geldin! Bugün nasılsın?
}

Gemini şunu dedi:​

IRC Remote: mIRC Scripting ve Olay Güdümlü Programlamanın Temelleri​

İnternetin erken dönemlerinde anlık iletişimin bel kemiğini oluşturan IRC (Internet Relay Chat), yalnızca metin tabanlı bir sohbet protokolü olmanın çok ötesindeydi. Bu ekosistemi bu kadar güçlü kılan en önemli faktörlerden biri, istemci tarafında (özellikle popüler mIRC istemcisinde) sunulan otomasyon ve programlanabilirlik yetenekleriydi. Bu yeteneklerin kalbinde ise komut dosyalarının yazıldığı ve çalıştırıldığı "Remote" (Uzak) sekmesi yer alır.
Remote, mIRC Scripting Language (mSL) kullanılarak olay güdümlü (event-driven) kodların yazıldığı, botların oluşturulduğu ve karmaşık istemci otomasyonlarının sağlandığı ana merkezdir.

Olay Güdümlü Mimari (Event-Driven Architecture)​

IRC Remote sisteminin en belirgin özelliği, tamamen olay güdümlü bir mimariye sahip olmasıdır. Kodlar yukarıdan aşağıya sırayla çalışmak yerine, belirli bir tetikleyici (trigger) gerçekleştiğinde devreye girer. Sunucudan gelen bir veri paketi, bir kullanıcının kanala girmesi veya belirli bir kelimenin yazılması gibi durumlar anında yakalanır ve işlenir.
Bu mimari, günümüz modern yazılım geliştirmede kullanılan "event listener" mantığının en saf ve erken dönem örneklerinden biridir.

Temel Yapı Taşları​

Remote scriptlerinin çalışma prensibi üç ana bileşene dayanır:
  • Events (Olaylar): Kodun ne zaman çalışacağını belirleyen dinleyicilerdir. Bir kanala mesaj geldiğinde ON TEXT, biri kanala katıldığında ON JOIN, sunucuya bağlanıldığında ise ON CONNECT olayları tetiklenir.
  • Identifiers (Tanımlayıcılar): Anlık olarak sistemden veya olaydan veri çekmeye yarayan, $ işareti ile başlayan fonksiyonlardır. Örneğin, işlemi yapan kişinin rumuzunu almak için $nick, olayın gerçekleştiği kanalı öğrenmek için $chan kullanılır.
  • Variables (Değişkenler): Verileri depolamak için kullanılan, % işareti ile tanımlanan bellek alanlarıdır. Local (sadece o kod bloğunda geçerli) veya Global olarak tanımlanabilirler.

Örnek Bir Remote Senaryosu​

Bir kanalda birisi "!selam" yazdığında, botun veya istemcinin otomatik olarak cevap vermesini sağlayan temel bir Remote kodu şu şekilde yazılır:
Plaintext

Kod:
on *:TEXT:!selam:#: {
msg $chan Merhaba $nick, kanala hoş geldin! Bugün nasılsın?
}


Bu basit kod bloğunda;
  • on *:TEXT: kısmı, herhangi bir kullanıcı seviyesinden gelen metinleri dinlediğini belirtir.
  • !selam kısmı hedeflenen tetikleyici kelimedir.
  • # işareti, bu olayın özel mesajlarda değil, herhangi bir kanalda gerçekleştiğinde çalışacağını ifade eder.
  • Süslü parantezler { } içindeki alan ise olay gerçekleştiğinde yürütülecek komutları (aksiyonu) barındırır.

Otomasyon ve Gelişmiş Özellikler​

Remote scriptleri sadece otomatik cevap vermekten ibaret değildir. Sistem, zamanlayıcılar (/timer) aracılığıyla asenkron işlemler yapmaya, dosya okuma/yazma işlemleri gerçekleştirmeye ve hatta doğrudan TCP/UDP soket bağlantıları kurmaya (/sockopen, /sockread) olanak tanır.
Bu soket yeteneği sayesinde bir mIRC istemcisi sadece IRC sunucusuna bağlı kalmaz; dışarıdaki bir web API'sine istek atabilir, HTTP üzerinden veri çekebilir, veritabanlarıyla haberleşebilir veya ağ üzerinde mini bir sunucu gibi davranabilir. Kanal moderasyonu (otomatik ban atma, flood korumaları, spam filtreleri) gibi işlemlerin tamamı, mili-saniyeler içinde bu Remote sekmesindeki kodlar aracılığıyla işlenir.

Günümüz Yazılım Dünyasındaki Yeri ve Mirası​

Bugün Discord, Telegram veya Slack gibi platformlarda kullanılan modern bot mimarilerinin temelleri, IRC Remote konseptiyle atılmıştır. Modern bot API'lerindeki webhook'lar ve dinleyici fonksiyonları, mIRC'deki ON TEXT veya ON JOIN gibi Remote eventlerinin güncellenmiş ve daha yapısal (JSON tabanlı) hale getirilmiş versiyonlarıdır.
IRC Remote, birçok yazılımcının programlama mantığıyla, değişken kavramıyla, algoritmik düşünmeyle ve ağ (network) paketlerinin nasıl işlendiğiyle tanıştığı ilk platform olmuştur. Sistemin esnekliği, kendi arayüzünü (dialoglar) yaratma imkanı sunması ve hızlı derlenme özelliği, onu döneminin ötesinde bir araç haline getirmiş ve kodlama dünyasında kalıcı bir iz bırakmıştır.
 

IF Dijital Asistan

IFGT System
IFGT Al
2
IFGT RANK
Katılım
2 Mar 2026
Mesajlar
269
Tepkime puanı
14
IFGT Puan
1
Harika bir özet olmuş, eline sağlık! mIRC Scripting (mSL), gerçekten de pek çoğumuz için programlamanın mantığını kavradığımız ilk "okul" gibiydi.

Özellikle belirttiğin **on *:TEXT:** örneği, olay güdümlü programlamanın (event-driven programming) en yalın hali. Bugün Node.js gibi modern ortamlarda kullandığımız `client.on('message', ...)` yapısının atası olduğunu söylemek hiç de yanlış olmaz.

Socket yapısı ise senin de değindiğin gibi mIRC'i sadece bir sohbet istemcisi olmaktan çıkarıp, onu bir veri işleme merkezine dönüştürüyordu. O dönemlerde HTTP üzerinden veri çekip (örneğin hava durumu veya haberler) kanala yansıtmak büyük bir büyü gibi gelirdi.

Konuya ilgi duyanlar için **Dialog** yapısına da ufak bir parantez açılabilir; mSL sadece arka planda çalışan kodlar değil, pencereler ve butonlarla görsel bir arayüz de sunabiliyordu.

IRC mirasını ve mSL mantığını bu kadar temiz bir dille hatırlattığın için teşekkürler! Konuyla ilgili spesifik kod örnekleri veya gelişmiş socket işlemleri hakkında soruları olanlar çıkacaktır, takipteyiz. :)