Giriş

Orijinalini görmek için tıklayınız : Tarih'te Bugün .Tcl


No_FeaR
17 Mart 2015, 21:38
Tarih'te bugün satırları ayarlar kısmında belirleyeceğiniz arayla (dakika) aktif edilen kanala yansıtılır.

kodu yükledikten sonra kanal üstünde .tarih aç komutuyla kod kanalda aktif olur.
.tarih kapa komutuyla'da pasif edilebilir.
.tarih komutu yardım içeriğini verir.


# http paketi kullanır.
package require http
# kanalda aktif-pasif etmekte kullanılacak,kullanıcı tanımlı flagtır.
setudef flag tarihtebugun
# açma-kapama komutunu kullanma yetkileri:
set tarih(flag) "mnf|oaf"
# açma-kapama komutunu kullanıcı en az kaç saniye arayla kullanabilir?
set tarih(flud) 10
# komut ne olmalı?
set tarih(kmt) "tarih"
# komut başına ne gelmeli?
set tarih(trig) "."
# tarihte bugün satırları kaç dakika arayla gönderilecek?
set tarih(zmn) 1
# bot ana dizininde oluşturulacak verilerin saklanacağı .txt
set tarih(file) "tarih.txt"
# kaçıncı satırdan okumaya başlanacak? ( 0 == ilk satırdır.)
set tarih(str) 0
# veri alınan site adresidir.
set tarih(url) "[Only Registered Users Can See Links]"
# ayarların sonu...
proc update_tarih {args} {
global tarih
set t [::[Only Registered Users Can See Links] $tarih(url) -timeout [expr {9*1000}]]
set d [::[Only Registered Users Can See Links] $t]
::[Only Registered Users Can See Links] $t
regsub -all -- { } $d {} d
regexp {3px\;\'>(.*?)</table>} $d "" o
regexp {Bugün Olan Olaylar(.*?)<} $d "" b
regsub -all -- {</td></tr>} $o "\n" o
regsub -all -- "<.*?>" $o {} o
regsub -all -- {\n(\s+)} $o "\n" o
regsub -all -- {([0-9]{2}/[0-9]{2}/[0-9]{1,4})(\s+)([^\n]+)} $o "\00312\\1\003 \00303$b\003 : \00314\\3\003" o
set fp [open $tarih(file) w]
puts $fp [tarih_strip [string trim $o]]
close $fp
}
proc tarih_strip {t} {
return [string map [list Þ \u015e ý \u0131 þ \u015f Ý \u0130 ð \u011f \} "" \{ ""] $t]
}
proc posts_tarih {minute hour day month weekday} {
global tarih
foreach chan [channels] {
if {[channel get $chan tarihtebugun] && ([scan $minute %d] + ([scan $hour %d]*60)) % $tarih(zmn) eq 0} {
set fp [open $tarih(file) r]; set str [split [read $fp] \n]; close $fp
set say [open $tarih(file) r]; set i 0
while {[gets $say out] >= 0} { incr i }; close $say
largetext privmsg $chan "\002Tarihte Bugün\002 : [lindex $str $tarih(str)]"
if {[expr {$i + 1}] eq $tarih(str)} { set tarih(str) 0 } else { set tarih(str) [expr {$tarih(str) + 1}] }
}
}
return 0
}
proc load_tarih {type} {
update_tarih $type
}
proc kontrol_tarih {nick uhost hand chan text} {
global tarih
set komut [lindex [split [string tolower $text]] 0]
set host [lindex [split [getchanhost $nick $chan] @] 1]
if {[throttled $host,$chan $tarih(flud)]} {
putserv "privmsg $chan :\002Flood yapmayın !!! - [expr {[clock seconds] - $::throttled($host,$chan)}] \
saniye sonra yeniden deneyebilirsiniz...\002"
return 0
}
switch -exact -- $komut {
"aç" { if {![channel get $chan tarihtebugun]} { channel set $chan +tarihtebugun
putserv "privmsg $chan :\00310$chan\003 \00314kanalında\003 \002Tarihte Bugün\002 \00309$nick\003 \00314tarafından\003 \002aktif\002 \00314edildi.\003"
putserv "privmsg $chan :\00314Bilgiler her\003 \00312$tarih(zmn)\003\00314dakika'da bir gönderilecek.Kapatmak için\003 \00304$tarih(trig)$tarih(kmt) kapa\003 \00314komutu kullanabilirsiniz.\003"
bind cron - "* * * * *" posts_tarih
} elseif {[channel get $chan tarihtebugun]} {
putserv "privmsg $chan :\00309$nick\003 \00310$chan\003 \00314kanalında\003 \002Tarihte Bugün\002 \00314zaten\003 \002aktif\002 \00314durumda.\003"
putserv "privmsg $chan :\00314Kapatmak için :\003 \00304$tarih(trig)$tarih(kmt) kapa\003 \00314komutunu kullanabilirsiniz.\003"
}
return 0
}
"kapa" { if {[channel get $chan tarihtebugun]} { channel set $chan -tarihtebugun
putserv "privmsg $chan :\00310$chan\003 \00314kanalında\003 \002Tarihte Bugün\002 \00309$nick\003 \00314tarafından\003 \002pasif\002 \00314edildi.\003"
putserv "privmsg $chan :\00314Açmak için\003 \00304$tarih(trig)$tarih(kmt) aç\003 \00314komutunu kullanabilirsiniz.\003"
unbind cron - "* * * * *" posts_tarih
} elseif {![channel get $chan tarihtebugun]} {
putserv "privmsg $chan :\00309$nick\003 \00310$chan\003 \00314kanalında\003 \002Tarihte Bugün\002 \00314zaten\003 \002kapalı\002 \00314durumda.\003"
putserv "privmsg $chan :\00314Açmak için\003 \00304$tarih(trig)$tarih(kmt) aç\003 \00314komutunu kullanabilirsiniz.\003"
}
return 0
}
default { putserv "privmsg $chan :\002Tarihte Bugün\002 \00314açmak için\003 \00304$tarih(trig)$tarih(kmt) aç\003 \00314komutunu\003"
putserv "privmsg $chan :\00314Kapatmak için :\003 \00304$tarih(trig)$tarih(kmt) kapa\003 \00314komutunu kullanabilirsiniz.\003"
}
}
return 0
}
# [Only Registered Users Can See Links]
proc throttled {id time} {
global throttled
if {[info exists throttled($id)]} {
return 1
} {
set throttled($id) [clock seconds]
utimer $time [list unset throttled($id)]
return 0
}
}
# linewrap proc by speechles
proc largetext {type target text {delims {" "•,.!?}}} {
set lineLen [expr {412 - [string length ":$::botname $type [join $target] :\r\n"]}]
if {[string length $text] <= $lineLen} {
putserv "$type $target :$text"
return 0
}
set _text [split $text $delims]
set x 0
set i 0
while {$x < $lineLen} {
if {$i >= [llength $_text]} {
return 0
}
set wordlen [string length [lindex $_text $i]]
if {$x + $wordlen > $lineLen} {
break
}
incr x $wordlen
incr x
incr i
}
putserv "$type $target :[string range $text 0 [expr {$x - 1}]]"
largetext $type $target [string trimleft [string range $text $x end]] $delims
}
bind evnt - rehash load_tarih
bind time - "?0*" update_tarih
bind pub $tarih(flag) $tarih(trig)$tarih(kmt) kontrol_tarih
putlog "[lindex [split [info script] /] 1] ok..."
#EOF


Yapımcısı ; saywhat