lookjapan.COM - IRC ve mIRC dünyasının forumu!   buy vps


  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

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