13 Temmuz 2016, 10:44 | #1 |
Üyelik tarihi: 01 Mart 2015
Mesajlar: 203 WEB Sitesi: www.code.com IRC Sunucusu: irc.code.com İlgi Alanı: Alınan Beğeni: 33 |
Socket Bot Yapımında Kullanılan Kodlar
Bu döküman 16 nisan 2006 tarihinde, el33t tarafından birçok IRC hizmeti veren forum sitelerinde paylaşılmıştır. Çoğu socket iskeleti de bu iskelet üzerinden gidilmiştir.
İlgili kişinin mesajını olduğu gibi buraya kopyalıyorum, faydalanmak isteyen kişiler için güzel bir kaynak olduğunu rahatça söyleyebilirim. Mantığını anlayabilmeniz için size önayak olacaktır. 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) } } } } } Alıntı:
on *:sockopen:bot:{
if ($sockerr) { echo $color(info) -st Socket botun bağlantısı kesildi. | return } swbot NICK BOTUN-NICKI swbot USER IDENTD * * :USERNAME BURAYA sockmark $sockname BOTUN-NICKI } on *:sockread:bot:{ if ($sockerr) { echo $color(info) -st Socket botun bağlantısı kesildi. | return } var %; | sockread %; | tokenize 32 %; if !$window(@sdebug) { window -k0 @sdebug } | aline -p @sdebug $timestamp < $1- swalias $1- } alias swbot { if $sock(bot) { sockwrite -n bot $1- } } alias swalias { if $sock(bot) { var %: = echo $color(info) -st > Socket bot: if :VERSION iswm $4- { swbot NOTICE $gettok($gettok($1,1,33),1,58) : $+ $chr(1) $+ VERSION mIRC v6.17 Khaled Mardam-Bey $+ $chr(1) } if :FINGER iswm $4- { swbot NOTICE $gettok($gettok($1,1,33),1,58) : $+ $chr(1) $+ FINGER Sevket Arslan $+ $chr(1) } if $1 == PING { swbot PONG $2- } if $2 == 474 { %: $4 kanalında banlı. } if $2 == 366 { %: $4 kanalına girdi. } if $2 == KICK && $4 == $sock(bot).mark { %: $3 kanalından %n tarafından kicklendi. $+($chr(40),$right($5-,-1),$chr(41)) | swbot JOIN $3 } if $2 == PRIVMSG { var %n = $gettok($gettok($1,1,33),1,58), %m = $right($4-,-1), %k = $3 if $istok(el33t el33t2,%n,32) { if .hop == $gettok(%m,1,32) { var %< = $iif($gettok(%m,2,32),$v1,%k) | swbot PART %< | swbot JOIN %< } if .part == $gettok(%m,1,32) { var %< = $iif($gettok(%m,2,32),$v1,%k) | swbot PART %< } if .join #* iswm %m { swbot JOIN $gettok(%m,2-,32) } } } } } Umarım işinize yarar. |
Alıntı
|
Etiketler |
bot, kodlar, kullanılan, mirc socket bot yapımı, socket, socket kodları, yapımında |
Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir) | |
Seçenekler | |
Stil | |
|
|
Benzer Konular | ||||
Konu | Konuyu Başlatan | Forum | Cevaplar | Son Mesaj |
Java ilk kodlar.. (ders1) | diAbLErO | Javascript Programlama | 0 | 22 Şubat 2019 17:55 |
Sitedeki Sayaç Kodlar, Toplist ve Linkleri Gizleme Kodu | Nefret | Webmaster Genel | 0 | 23 Mart 2016 13:57 |
Linux Üzerinde Kullanılan Tüm Komutlar | Anti | GNU - Linux - UNIX | 0 | 16 Ağustos 2015 17:25 |
mIRC Scripting Hazır Kodlar Arşiv | Toprak | Hazır Kodlar | 0 | 26 Ocak 2015 00:55 |
Hazır Kodlar Kuralları | Toprak | Hazır Kodlar | 0 | 25 Ocak 2015 23:48 |