lookjapan.COM - IRC ve mIRC dünyasının forumu!   online kpss kursu


  lookjapan.COM - IRC ve mIRC dünyasının forumu! IF - Unreal, Services ve Botlar Eggdrop, BNC ve Socket Botlar TCL Scriptler


Like Tree1Teşekkürler;
  • 1 Post By No_FeaR

Yeni Konu   Cevap Yaz

 
LinkBack Seçenekler Stil
Alt 17 Mart 2015, 21:42   #1
 
No_FeaR - ait Kullanıcı Resmi (Avatar)
 
Üyelik tarihi: 27 Ocak 2015
Bulunduğu yer: Denizli
Mesajlar: 136
WEB Sitesi: www.AlemTR.com
IRC Sunucusu: www.AlemTR.com
İlgi Alanı:
Alınan Beğeni: 69
Standart oto sajoin #şehir .Tcl

sanırım biri daha evvel böyle birşey yazmıştı burada ama gördüğüm mirc script miydi? yoksa Tcl mi doğrusu hatırlamıyorum.

kodun yapması beklenen iş: oper botunuzun gördüğü sunucu girişlerinden kullanıcı hostu/IP'sini sorgulatmak, alınan şehir bilgisine göre o şehir isminde bir kanal var ise sunucuda ( ayar kısmındaki açıklamaları okuyunuz.) oraya o kullanıcıyı sajoin'lemek.

yok sunucudaki hiçbir şehir kanalıyla eşleşmiyen bir şehirdense bilgisi o zaman onları başka bir yerlere sajoin'lemek. (ayar kısmında belirtildi.)

Önemli Uyarılar :

* bu kod yapısı gereği, Tcl8.5.x ve üstü sürümlerce desteklenen,bu üst sürümlerde yer alan komutları kullanmaktadır.
Tcl8.4.x yada daha alt sürümlerde kod çalışmaz,tanımadığı/desteklemediği bu komutlar nedeniyle hata atar.

* kod'da veri alımında kullanılan site API'si verileri JSON formatındadır .. bu formatta alınan veriler tcllib json paketinin getirdiği komutlarla Tcl dict ( Tcl list )'e çevrilerek istenen veri alımı sağlanmıştır.
ki bu site için ya xml ya JSON formatı seçilebilirdi. xml seçseydim o zamanda tDom paketi ve onun getireceği komutlarla yazmam gerekirdi.
(ki bu tDom ayrı bir projedir ne Tcl ne tcllib içinde yer almaz ayrıca proje adresinden alınıp kurulması/derlenmesi gerekir.)

* site kodlarından regexp vs kullanılarak çekilemez miydi? diye sorulacaksa ,cevabı -> hayır çekilemezdi. çünkü site kodları javascript kullanıyor. ve alınmak istenen veriyi gizliyor. o nedenle de API kullanmaktan başka daha kullanışlı bir seçenek yok..tu...

uzun lafın kısası ,bu script için en az Tcl8.5 sürümü ve tcllib zorunludur.


Kod:
# http paketi gerekir.

package require http

# tcllib json paketi gerekir.
# git clone https://github.com/tcltk/tcllib.git && cd tcllib && ./configure && make install

package require json

# kullanıcı sehri eşleşirse bu kanallara gönderilecek...
# sunucunuzdaki #şehir kanallarını/kullanıcın çekilmesini istediğiniz kanalları,
# aralarına boşluk bırakarak girin.

set sehirknl "#adana #istanbul #bursa #samsun #ankara #samsun"

# şehir bilgisi yukarıdaki sunucunuzdaki #şehir kanallarından hiçbiriyle
#  eşleşmeyen kullanılar,hangi kanallara çekilecek:
# birden fazlaysa, örnekteki şekilde giriniz.

set defknl[list #ana-kanal #bir-digeri]

# ayar sonu

# önemli uyarılar: 
# Tcl8.5.x ve üstü sürümlerle çalışır. (daha alt sürümlerle *çalışmaz*)
# botun oper yetkilerine sahip olması gerekir.

bind raw * NOTICE client_connect

proc client_connect {from key text} {
  if {[string match "*!*@*" $from]} { return }
  if {![string match -nocase "*client connecting*" $text]} { return 0 }
        regexp {^\W+([^\:]+)\:([^\(]+)\(([^@]+)@([^\\W+]+)\)$} $text - port nick ident host
        if {[regexp {^([\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3})$} $host]} {
             set target $host
        } else {
             set target [dnslookup $host ipchk]
        }
	      set ipsite "http://ip-api.com/json/"
	      ::http::config -useragent "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5"
	      set token [::http::geturl $ipsite$target -timeout [expr {6*1000}]]
	      set data [json::json2dict [::http::data $token]]
	      ::http::cleanup $token
	      set sehir [dict get $data city]
	      foreach n [split $::sehirknl " "] {
			  if {[string match -nocase "#$sehir" $n]} {
	                        putquick "sajoin $nick #$sehir"
                          } else {
				putquick "sajoin $nick $::defknl"
		          }
	      }
	      return 0
}

proc ipchk {bir iki uc} {
     if {$uc} {
	 return $bir
     } else {
         putcmdlog "Hata $iki çözülemedi..."
         return $iki
     }
}

putlog "ok..."
Output ;

Kod:
can't find package json
    while executing
"package require json"
    (file "t.tcl" line 8)
Yapımcısı ; saywhat
Diablo bu mesaja teşekkür etti






Aynı Dünyada Yaşamamalı Cellatlar Ve Çocuklar .
Ya Ölmeli Cellatlar,Yada Hiç Doğmamalı Çocuklar...!
 No_FeaR isimli Üye şimdilik offline konumundadır   Alıntı

Yeni Konu   Cevap Yaz

Etiketler
#şehir, oto, sajoin, tcl


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
SAJOIN komutunu X kişiye kullanmayı yasaklamak. Entrance Unreal - Parça Kodlar 1 19 Mayıs 2016 01:42
Operlere (SAJOIN - SAPART) yetkisi vermek. Entrance Unreal - Parça Kodlar 0 07 Mart 2015 13:39
CR de Sajoin Hakkında Goemon ConferenceRoom 0 05 Mart 2015 11:28
SAJOIN komutunu belirtilen rumuzlara açmak. Entrance Unreal - Parça Kodlar 1 16 Şubat 2015 13:01
Girişte Nickin Ülke/Şehir/ISP Gösterme Toprak Hazır Kodlar 0 11 Şubat 2015 22:07

web hosting web hosting
 buy vds
 vps buy  instagram  facebook  twitter  online arkadaş  Domain al  Domain Sat  Alan adı al  online kpss  online hemşirelik kpss kursu  online memurluk kpss kursu  online ags  online ders  online ales  online ön lisans kursu  online dgs kursu  online ön lisans kpss kursu  Satılık Alan adı 

Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.