IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası
  sohbet

 Kayıt ol  Topluluk
13Beğeni(ler)
  • 1 Post By saywhat
  • 4 Post By saywhat
  • 4 Post By saywhat
  • 1 Post By Sephiroth
  • 3 Post By saywhat

Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 24 Ağustos 2013, 19:12   #1
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
kanal girişleri kayıt/arama




-> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

# istek üzerine yapılmıştır.
# amaç: kodun aktif edildiği kanal/lara giren kullanıcıları
# txt. üzerine kaydetmek.
# nicki - userhostu - girilen kanal - realname -saat+tarih
# kodun diğer işleviyse bu kayıtlar içinden istenen veriyi
# aratıp sonuçları aktarabilmesi.
# arama nick/host/kanal/tarih yada saat,
# kaydedilmiş veri içersinde eşleşek herhangi bir kritere
# göre yapılabilir.aramalarda wildcard kullanılabilir..
# !ara @*hostun-bir-kısmı yada !ara nick* vs gibide olabilir.
# kodun kanalda aktif olabilmesi için botunuza bağlanın:
# .chanset #kanalınız +userec

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

not: .txt dosyasını aktif ettiğiniz her kanal için ayrı olarak kendiliğinden oluşturacaktır.sizin ayrıca .txt dosyası oluşturmanıza yada kod içinde kendiniz girmenize gerek yoktur.

örnek :
bota bağlanıp : .chanset #ircforumlari +userec
aktif edildikten sonraki ilk kanala giriş ile birlikte botunuzun/scripts klasörü içinde ,bu giriş/ler kanalınız-users.txt ..bu örnek için söylersek, ircforumlari-users.txt içinde saklanmış olur.ne kadar sayıda kanal üzerinde aktif edilirse herbir kanal için .txt oluşturacak o kadar sayıda kanalınız-users.txt scripts/ içinde görülecektir....

(kodun sadece "gereken" kısımları Türkçe'ye çevrilmiştir.)

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
# istek üzerine yapılmıştır. # amaç: kodun aktif edildiği kanal/lara giren kullanıcıları # txt. üzerine kaydetmek. # nicki - userhostu - girilen kanal - realname -saat+tarih # kodun diğer işleviyse bu kayıtlar içinden istenen veriyi # aratıp sonuçları aktarabilmesi. # arama nick/host/kanal/tarih yada saat, # kaydedilmiş veri içersinde eşleşek herhangi bir kritere # göre yapılabilir.aramalarda wildcard kullanılabilir.. # !ara @*hostun-bir-kısmı yada !ara nick* vs gibide olabilir. # kodun kanalda aktif olabilmesi için botunuza bağlanın: # .chanset #kanalınız +userec ############################################################### setudef flag userec set userecfile "scripts/[string range $chan 1 end]-users.txt" bind join - * rname:join bind raw - 311 rname:check bind join - * users:rec bind pub nm|oa !ara user:search proc users:rec {nick uhost hand chan} { if {![channel get $chan userec]} { return 0;} set fp [open $::userecfile a+] set data "\002Nick:\002 $nick | \002Userhost:\002 $uhost | \002Kanal:\002 $chan" puts $fp "$data" close $fp return 0 } proc rname:join {nick host hand chan} { if {![channel get $chan userec]} { return 0;} if {[strlwr $nick] != [strlwr $::botnick]} { putserv "whois $nick" } } proc rname:check {from key arg} { set realname [strlwr [ctrl:filter [string range [lindex [split $arg] end] 1 end]]] set stamp [clock format [expr {3600 + [clock second]}] -format "Tarih: %d/%m/%Y Saat: %H:%M (GMT+3)"] set fp [open $::userecfile a+] set data "\002Realname:\002 $realname | \002Kayıt-Zamanı:\002 $stamp" puts $fp "$data" close $fp return 0 } proc ctrl:filter {str} { regsub -all -- { \003[0-9]{0,2}(,[0-9]{0,2})?|\017|\037|\002|\026|\006|\007 } $str "" str return $str } proc user:search {nick uhost hand chan text} { if {![channel get $chan userec]} { return 0;} if {[llength $text] == "0"} { puthelp "notice $nick :kullanımı:\002 $::lastbind nick\002"; return 0;} set text *[string map {" " *} $text]* putserv "notice $nick :\002$text\002 aranıyor..." set i 0 set fp [open $::userecfile r] while {[gets $fp b]>-1} { if {[string match -nocase $text $b]} { incr i putserv "notice $nick :-> $b" } } close $fp if {$i} { putserv "notice $nick :arama sonucu: \002[expr {$i / 2}] \002 [expr {$i == 1?"":"adet"}]..." } { putserv "notice $nick :\002aramayla eşleşen kayıt bulunamadı...\002" } } putlog "Ok..."

not: kod ile alakalı bilinen bug* hata/yada şimdilik eksiklik şudur ki: giriş yapan kullanıcı realname'i renkli/renk kodları içeriyorsa kayıt edilmiyor.isteği yapan kişiye kod teslim edildikten sonraki denemelerde fark ettim. henüz onarmadım... olası* sonraki güncelleme/lerde buda aklımda,yapılacak işler listesinde bir yerlerde....

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları reklam ver Benimmekan Mobil Sohbet
Alt 24 Ağustos 2013, 22:46   #2
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: kanal girişleri kayıt/arama




güncelleme : -> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

yukardaki "ilk" çalışan halindeki sorunlar halledildi.
bir tek renk kodları içeren "realname" her ne hikmetse ne denediysem ,
renkli" realname'leri görüp/yazdırtmasını başaramadım.

aklıma gelen her yöntemi denedim realname yakalayan kısmı defalarca yeni baştan yazdım-denedim.. yok olmadı..geriye bir o "eksiği" kaldı...

"renkli realname kaydetme/görme sorunu dışında gayet iyi işliyor.

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
# istek üzerine yapılmıştır. # amaç: kodun aktif edildiği kanal/lara giren kullanıcıları # txt. üzerine kaydetmek. # nicki - userhostu - girilen kanal - realname -saat+tarih # kodun diğer işleviyse bu kayıtlar içinden istenen veriyi # aratıp sonuçları aktarabilmesi. # arama nick/host/kanal/tarih yada saat, # kaydedilmiş veri içersinde eşleşek herhangi bir kritere # göre yapılabilir.aramalarda wildcard kullanılabilir.. # !ara @*hostun-bir-kısmı yada !ara nick* vs gibide olabilir. # kodun kanalda aktif olabilmesi için botunuza bağlanın: # .chanset #kanalınız +userec ############################################################### setudef flag userec # txt dosyasını aktif ettiğiniz her kanal için ayrı olarak kendiliğinden oluşturacaktır. # sizin ayrıca .txt dosyası oluşturmanıza yada kod içinde kendiniz girmenize gerek yoktur. set userecfile "scripts/[string range $chan 1 end]-users.txt" bind join - * rname:join bind pub nm|oa !ara user:search proc rname:join {nick uhost hand chan} { set ::rnick $nick ;set ::rhost $uhost ;set ::rchan $chan if {![channel get $chan userec]} { return 0;} if {![string match -nocase $::botnick $nick] || [onchan $nick $chan]} { putquick "whois $nick $nick" bind raw - 311 rname:check } } proc rname:check {from key text} { set rname [stripcodes bcruag [string range [lindex [split [string trim $text]] end] 1 end]] set fp [open $::userecfile a+] set nick $::rnick ;set uhost $::rhost ;set chan $::rchan set stamp [clock format [clock seconds] -format "\002Tarih:\002 %d/%m/%Y \002Saat:\002 %H:%M:%S \002TZ:\002 %z"] set data "\002Nick:\002 $nick | \002Userhost:\002 $uhost | \002Realname:\002 $rname \002Kanal:\002 $chan | \002Zamanı:\002 $stamp" puts $fp "$data" close $fp return 0 } if {[info exists rname:check]} { catch {unbind raw - 311 rname:check} } proc user:search {nick uhost hand chan text} { if {![channel get $chan userec]} { return 0;} if {[llength $text] == "0"} { puthelp "notice $nick :kullanımı:\002 $::lastbind nick\002"; return 0;} set text *[string map {" " *} $text]* putserv "notice $nick :\002$text\002 aranıyor..." set i 0 set fp [open $::userecfile r] while {[gets $fp b]>-1} { if {[string match -nocase $text $b]} { incr i putserv "notice $nick :\002$i->\002 $b" } } close $fp if {$i} { putserv "notice $nick :arama sonucu: \002$i \002 [expr {$i == 1?"":"adet"}]..." } { putserv "notice $nick :\002aramayla eşleşen kayıt bulunamadı...\002" } } putlog "Ok..."


 
Alıntı ile Cevapla

Alt 25 Ağustos 2013, 01:43   #3
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: kanal girişleri kayıt/arama




yukarda sözünü ettiğim renk kodları içeren realname görmeme/kayıt etmeme sorunuda giderildi.

en sonunda kendim cebelleşmek yerine birinin görüşünü alayım dedim iyiki de etmişim. meğer çözüm inanılmaz derecede basitmiş.
(saat 18:00'den beri bunla cebelleşiyordum )
basit çözümü ve hatanın onarılmasındaki yardımı için UnderNet #tcl kanalındaki _MaDaLiN_ 'e teşekkür ederim...

-> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
# istek üzerine yapılmıştır. # amaç: kodun aktif edildiği kanal/lara giren kullanıcıları # txt. üzerine kaydetmek. # nicki - userhostu - girilen kanal - realname -saat+tarih # kodun diğer işleviyse bu kayıtlar içinden istenen veriyi # aratıp sonuçları aktarabilmesi. # arama nick/host/kanal/tarih yada saat, # kaydedilmiş veri içersinde eşleşecek herhangi bir kritere # göre yapılabilir.aramalarda wildcard kullanılabilir.. # !ara @*hostun-bir-kısmı yada !ara nick* vs gibide olabilir. # kodun kanalda aktif olabilmesi için botunuza bağlanın: # .chanset #kanalınız +userec ############################################################### setudef flag userec # txt dosyasını aktif ettiğiniz her kanal için ayrı olarak kendiliğinden oluşturacaktır. # sizin ayrıca .txt dosyası oluşturmanıza yada kod içinde kendiniz girmenize gerek yoktur. set userecfile "scripts/[string range $chan 1 end]-users.txt" bind join - * rname:join bind pub nm|oa !ara user:search proc rname:join {nick uhost hand chan} { set ::rnick $nick ;set ::rhost $uhost ;set ::rchan $chan if {![channel get $chan userec]} { return 0;} if {![string match -nocase $::botnick $nick] || [onchan $nick $chan]} { putquick "whois $nick $nick" bind raw - 311 rname:check } } proc rname:check {from key text} { ;# realname üzerindeki kod hatasının çözümü için Undernet #tcl kanalında _MaDaLiN_ 'e, ;# teşekkür borcum var. çözüm inanılmaz derecede baitmiş halbuki... ;# insan bazen gözü önündeki şeyi göremez hale geliyor. ;# tek yapılması gereken eski : ;# set rname [stripcodes bcruag [string range [lindex [split [string trim $text]] end] 1 end] ;# satırının yerine alttaki basit satırmış... ;# neler neler denedim meğer hiçbişey yapmayıp dümdüz yakalsaymışımda olurmuş :) set rname [join [lrange $text 5 end]] set fp [open $::userecfile a+] set nick $::rnick ;set uhost $::rhost ;set chan $::rchan set stamp [clock format [clock seconds] -format "\002Tarih:\002 %d/%m/%Y \002Saat:\002 %H:%M:%S \002TZ:\002 %z"] set data "\002Nick:\002 $nick | \002Userhost:\002 $uhost | \002Realname:\002 $rname | \002Kanal:\002 $chan | \002Zamanı:\002 $stamp" puts $fp "$data" close $fp return 0 } if {[info exists rname:check]} { catch {unbind raw - 311 rname:check} } proc user:search {nick uhost hand chan text} { if {![channel get $chan userec]} { return 0;} if {[llength $text] == "0"} { puthelp "notice $nick :kullanımı:\002 $::lastbind nick\002"; return 0;} set text *[string map {" " *} $text]* putserv "notice $nick :\002$text\002 aranıyor..." set i 0 set fp [open $::userecfile r] while {[gets $fp b]>-1} { if {[string match -nocase $text $b]} { incr i putserv "notice $nick :\002$i->\002 $b" } } close $fp if {$i} { putserv "notice $nick :arama sonucu: \002$i \002 [expr {$i == 1?"":"adet"}]..." } { putserv "notice $nick :\002aramayla eşleşen kayıt bulunamadı...\002" } } putlog "Ok..."


 
Alıntı ile Cevapla

Alt 27 Ağustos 2013, 03:00   #4
Çevrimiçi
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: kanal girişleri kayıt/arama




Emeğine sağlık... Clubber ve sana öncülüğünüz için teşekkürler gerçekten güzel paylaşımlar..

 
Alıntı ile Cevapla

Alt 03 Ağustos 2014, 00:40   #5
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: kanal girişleri kayıt/arama




uzun bir aradan sonra ,bu kodu hatırlayıp geçen hafta "onarmaya" başladım... onarmaya dememin nedeni,kodun en mühim sorunu yapılan aramalarda ; misal 5 arama çıktısına ayarladıysanız ,ama aradığınız kişi/kriterin 5'ten fazla girdisi/kaydı var ise, dosyayı hep ilk satırdan EOF ,yani sona doğru okuduğu için ,en eski 5 kaydı gösteriyordu. ki bu durumda 5'ten fazla kaydı olan aramalarda hep aynı 5 çıktıyı veriyordu...

geçen haftaiçi aklıma geldi bi el atayım bakalım bir yolunu bulabilecekmiyim dedimdi, ancak ne denesem bir türlü geriye doğru arama/okutma olmadıydı.

gugıl'da oraya buraya dalmama bir dolu döküman tırmalamama rağmen ,şuradaki gibi -> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] soruya verilen cevaplarda da belirtildiği gibi ,Tcl kaynak kodları hep ileriye doğru okumak üzerine bunu kısıtlamış.Tcl'nin kaynak kodlarında (ki C ile yazılmıştır Tcl kaynak kodları) oynayıp değişmeyi önerenlere dahi rastladım...

olmadı Tcl destek kanalında sordum bunun bir yolu var mıdır ,dosyayı tersten,yani son satırdan başlayıp ilk satıra doğru ,yeni girdiden eskiye doğru okumanın diye,yine cevap alamadım,cevap diye önerilen/ler de bir işe yaramadıydı...

aklıma okutulan satırlardaki tarih saat girdilerini regexp yada scan ile yakalatıp,birbirleriyle eşleştirip, lsort -decreasing yani terse doğru sıralatmayla yapabilirmiyim acaba diye tırmalayıp durdum ki ...cık oda olmadıydı...

taki dün geceye kadar,,, tcllib paketlerinin dökümanları arasında dolaşırken aradığımı buluverdim ,,,sonunda....


Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.



Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.


bu kanal içi girdileri/user kayıtları için :

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
setudef flag userec package require struct::list bind join - * rname:join bind pub nm|oa !ara user:search proc rname:join {nick uhost hand chan} { set userecfile "scripts/[string range $chan 1 end]-users.txt" set ::rnick $nick ;set ::rhost $uhost ;set ::rchan $chan ;set ::userecfile $userecfile if {![channel get $chan userec]} { return 0 } if {![string match -nocase $::botnick $nick] && [onchan $nick $chan]} { putquick "whois $nick $nick" bind raw - 311 rname:check } return 0 } proc rname:check {from key text} { set rname [join [string map -nocase {: ""} [lrange [split $text] 5 end]]] set nick $::rnick ;set uhost $::rhost ;set chan $::rchan ;set userecfile $::userecfile set fp [open $userecfile a+] set stamp [clock format [clock seconds] -format "\002Tarih:\002\00312 %d.%B.%Y %A\003 - \002Saat:\002\00312 %H:%M:%S\003" -locale tr_TR] set host [lindex [split $uhost @] 1]; set ident [lindex [split $uhost @] 0] set data "\00300,04JOIN\003 \00312$stamp\003 | \002Nick:\002 \00311$nick\003 | \002Ident:\002 \00311$ident\003 \ | \002Host:\002 \00311$host\003 | \002Realname:\002 \00311$rname\003 | \002Kanal:\002 \00309$chan\003" puts $fp "$data" close $fp catch {unbind raw - 311 rname:check} return 0 } proc user:search {nick uhost hand chan text} { if {![channel get $chan userec]} { return 0;} if {[llength $text] eq "0"} { puthelp "notice $nick :Kullanımı:\002 $::lastbind <aranacak>\002"; return 0;} set userecfile "scripts/[string range $chan 1 end]-users.txt" set text *[string map {" " *} $text]* putserv "notice $nick :\002$text\002 aranıyor..." set i 0 set fp [open $userecfile r] set lines [split [read -nonewline $fp] "\n"] foreach line [struct::list reverse $lines] { if {[string match -nocase $text $line]} { if {$i == 5} break puthelp "notice $nick :$line" incr i } } close $fp if {$i} { putquick "notice $nick :gösterilen arama sonucu : \002$i \002 [expr {$i == 1?"":"adettir."}]..." } else { putserv "notice $nick :\002aramayla eşleşen kayıt bulunamadı...\002" return 0 } } putlog "Ok..."

bu ise sunucu girişlerini kaydedip ,arama yapılabilmesi için:
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
setudef flag userconnect package require struct::list bind raw - NOTICE rname_connect bind pub nm|oa !ara search_user proc rname_connect {from key text} { if {[string match -nocase *!*@* $from]} { return 0 } if {[regexp -nocase -- {Client connecting on port (\d+): (.*) \(([^@]+)@(\S+)\) \[(.*)\]} $text -> port nick ident host rname] && \ ![string match -nocase $::botnick $nick]} { set userecfile "scripts/connecting-users.txt" set fp [open $userecfile a+] set stamp [clock format [clock seconds] -format "\002Tarih:\002\00312 %d.%B.%Y %A\003 - \002Saat:\002\00312 %H:%M:%S\003" -locale tr_TR] set data "\00300,04Connected\003 \00312$stamp\003 | \002Nick:\002 \00311$nick\003 | \002Ident:\002 \00311$ident\003 \ | \002Host:\002 \00311$host\003 | \002Realname:\002 \00311$rname\003 | \002Port:\002 \00309$port\003" puts $fp "$data" close $fp } return 0 } proc search_user {nick uhost hand chan text} { if {![channel get $chan userconnect]} { return 0 } if {[llength $text] eq "0"} { puthelp "notice $nick :Kullanımı:\002 $::lastbind <aranacak>\002"; return 0;} set userecfile "scripts/connecting-users.txt" set text *[string map {" " *} $text]* putserv "notice $nick :\002$text\002 aranıyor..." set i 0 set fp [open $userecfile r] set lines [split [read -nonewline $fp] "\n"] foreach line [struct::list reverse $lines] { if {[string match -nocase $text $line]} { if {$i == 5} break puthelp "notice $nick :$line" incr i } } close $fp if {$i} { putquick "notice $nick :gösterilen arama sonucu : \002$i \002 [expr {$i == 1?"":"adettir."}]..." } else { putserv "notice $nick :\002aramayla eşleşen kayıt bulunamadı...\002" return 0 } } putlog "Ok..."

her ikisi içinde tcllib struct paketi gereklidir.

 
Alıntı ile Cevapla

Cevapla

Etiketler
eggdrop, giriş kayıt, girişleri, kanal, kayıt arama, kayıt or arama, 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 Kapalı
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Arama Motoruna Kayit Fiyatı,Arama Motorlarına Kayıt PauL Alternatif Arama Motorları 0 25 Ekim 2011 14:58
Tüm Arama Motorlarına Kayıt Etme PauL Alternatif Arama Motorları 0 25 Ekim 2011 14:43
Bir tık ile 12 arama motoruna kayıt! fatal Alternatif Arama Motorları 1 25 Eylül 2011 20:43
Tüm Arama Motorlarına Kayıt PauL Diğer Dizinler 0 14 Aralık 2010 15:30