Her zaman sorulan socket botun nasıl yapıldığı konusunu biraz anlattım. Aşağıdaki kodun içinde neyin ne olduğunu gösteriyor. Sizde bu kodu yükledikten sonra @sdebug penceresine gelen bilgiye göre swalias’ı içinde istediğinizi ekleyebilirsiniz. İşte kod ve açıklaması:

Önce mIRC’de yazı yazdığımız yerde yani command line’dan /sockopen bot <server-ip> <port> komutunu yazarak botumuzu istediğimiz servera bağlıyoruz.

;”bot” adlı socketımız açıldığında

on *:sockopen:bot:{

;eğer socketta bir sorun varsa işlemi durduruyoruz

if ($sockerr) { echo $color(info) -st Socket botun bağlantısı kesildi. | return }

;servera bağlanırken botun nicki gönderiliyor

swbot NICK BOTUN-NICKI

;servera bağlanırken botun identdi ve usernamei gönderiliyor

swbot USER IDENTD * * :USERNAME BURAYA

;socket botun nickiyle işaretleniyor. yani $sock(bot).mark değeri botun nicki oluyor

sockmark $sockname BOTUN-NICKI
}

;serverdan socketa bilgi geldiğinde

on *:sockread:bot:{

;eğer socketta bir sorun varsa işlemi durduruyoruz
if ($sockerr) { echo $color(info) -st Socket botun bağlantısı kesildi. | return }

;%; diye bir değişken oluşturup sockettan gelen bilgiyi bu değişkene yüklüyoruz ve $1- değerini doldurması için tokenize kullanıyoruz

var %; | sockread %; | tokenize 32 %;

;eğer @sdebug penceresi yoksa pencere oluşturuluyor ve sockettan gelen bilgi o pencereye gösteriliyor

if !$window(@sdebug) { window -k0 @sdebug } | aline -p @sdebug $timestamp < $1-

;sockettan gelen bilgi ile swalias aliasını çağırıyoruz

swalias $1-
}

;socketta bilgi gönderme aliasımız, eğer bot socketı açıksa o socketa istediğimiz bilgiyi gönderiyoruz

alias swbot { if $sock(bot) { sockwrite -n bot $1- } }
;sockettan gelen bilgiyi okumak için oluşturduğumuz swalias aliası

alias swalias {

;eğer bot socketı açıksa

if $sock(bot) {
;%: değişkenine status penceresine echolaması için bir komut yüklüyoruz

var %: = echo $color(info) -st > Socket bot:

;eğer serverdan socket VERSIONu istenirse mIRC v6.17′nin version cevabını gönderiyoruz.

if :VERSION iswm $4- { swbot NOTICE $gettok($gettok($1,1,33),1,58) : $+ $chr(1) $+ VERSION mIRC v6.17 Khaled Mardam-Bey $+ $chr(1) }

;eğer serverdan botumuzun fingerı istenirse ona cevap gönderiyoruz

if :FINGER iswm $4- { swbot NOTICE $gettok($gettok($1,1,33),1,58) : $+ $chr(1) $+ FINGER Sevket Arslan $+ $chr(1) }

;eğer server bizi pinglerse, bizde onu pongluyoruz, düşmemek için bu gerekli.
if $1 == PING { swbot PONG $2- }

;serverdan gelen bilginin 2. kelimesi 474’se, bu 474. rawı gördü demektir, 474. raw bir kanaldan banlı olduğunu gönderir. statuse 4. değer olan kanaldan banlı olduğunu bildiriyor.

if $2 == 474 { %: $4 kanalında banlı. }

;2. kelime 366 ise yani /names komutunun sonu ki bu genelde bot kanala girdiğinde gelir, girdiğimiz kanal status penceresine gösteriliyor.

if $2 == 366 { %: $4 kanalına girdi. }

;eğer 2. kelime kickse ve 4. kelime botumuzun nickiyse, statuse kanaldan kicklendiğimizi kimin kicklediğini ve neden kicklendiğini gösteriyoruz.

if $2 == KICK && $4 == $sock(bot).mark { %: $3 kanalından %n tarafından kicklendi. $+($chr(40),$right($5-,-1),$chr(41)) | swbot JOIN $3 }

;eğer 2. kelime PRIVMSG ise

if $2 == PRIVMSG {

;%n değişkenine nicki, %m değişkenine gelen mesajı, %k değişkenine kanalı ayarlıyoruz

var %n = $gettok($gettok($1,1,33),1,58), %m = $right($4-,-1), %k = $3

;eğer nickler belirlediğimiz nickler ise (burda el33t ve el33t2)

if $istok(el33t el33t2,%n,32) {

;eğer gelen mesajın birinci sözcüğü .hop ise eğer 2. kelime varsa 2. kelimenin olduğu kanalda, yoksa yazılan kanalda hop komutu uygulanıyor yani kanaldan çıkıp tekrar giriliyor.

if .hop == $gettok(%m,1,32) { var %< = $iif($gettok(%m,2,32),$v1,%k) | swbot PART %< | swbot JOIN %< }

;bu da .hop gibi fakat bunda botumuz belirtilen kanaldan çıkıyor. eğer 2. sözcük varsa, o kanaldan, yoksa mesajın yazıldığı kanaldan

if .part == $gettok(%m,1,32) { var %< = $iif($gettok(%m,2,32),$v1,%k) | swbot PART %< }

;bu da .part gibi ama bununla istediğimiz kanala sokuyoruz

if .join #* iswm %m { swbot JOIN $gettok(%m,2-,32) }
}
}
}
}