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

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   TCL Scriptler (https://www.ircforumlari.net/tcl-scriptler/)
-   -   VIP User TCL (https://www.ircforumlari.net/tcl-scriptler/503195-vip-user-tcl.html)

house 07 Eylül 2012 19:17

VIP User TCL
 
Merhaba,

Bu TCL ile, listeye eklediğiniz kullanıcılar kanal girişlerinde otomatik voice (veya başka modlar) alacak, kişiler ayrıca bir mesajla karşılanacaklardır.

Kullanım:

!vipekle Nick
!vip on/off
!vipsil Nick
!vipliste


PHP- Kodu:

#VIP olanların host taramasının yapılacağı süre (dakika cinsinden)

set viptime "30"

#VIP olanlara mesaj gönderilsin istiyorsan "1" yap, aksi halde "0" yap


set viphowmsg "1"

#Eğer "1" yapmışsan mesajı buraya yaz.

set vipmsg "Tebrikler, bu kanalda VIP olduğunuz için Voice (+) aldınız :)"

#VIP eklemeye yetkili olanların flagları

set vipwho "Nmn|MN"

############ AYARLAR BURAYA KADAR ##############

bind pub $vipwho !vip vipstatus
bind pub $vipwho 
!vipekle addvip
bind pub $vipwho 
!vipsil remvip
bind pub $vipwho 
!vipliste listvip
bind join 
- * vipscan
setudef flag vip


if {![info exists vips_running]} {
timer $viptime vips
set vips_running 1
}

proc vipstatus {nick host hand chan arg} {
set flag "vip"
set why [lindex [split $arg0]
if {
$why == "" } { puthelp "NOTICE $nick :Kullanım: !vip <on> / <off>"
return 0
}
if {
$why == "on"} {
channel set $chan +$flag
puthelp 
"NOTICE $nick :Kanalda VIP Sistemi aktif hale getirildi: $chan"
return 0
}
if {
$why == "off"} {
channel set $chan -$flag
puthelp 
"NOTICE $nick :VIP Sistemi kapatılan kanal: $chan"
return 0
}
}

proc addvip {nick host hand chan arg} {
set dir "logs/vip($chan).txt"
set vip [join [lindex [split $arg0]]
if {
$vip == ""} { puthelp "NOTICE $nick :Kullanım: !vipekle <nick>"
return 0
}

if {[
file exists $dir] == 0} {
set file [open $dir a]
close $file
}

set file [open $dir a]
puts $file $vip
close $file
puthelp 
"NOTICE $nick :Eklenen VIP - $vip - veritabanına eklendi."
}

proc listvip {nick host hand chan arg} {
set dir "logs/vip($chan).txt"
if {[file exists $dir] == 0} {
set file [open $dir a]
close $file
}
set file [open $dir "r"]
set w [read -nonewline $file]
close $file
set data 
[split $w "\n"]
set i 0
if {$data == ""} { puthelp "NOTICE $nick :Eklenen hiç VIP Yok!"
return 0
}

foreach 
vip $data {
set i [expr $i +1]
lappend vipnumber $i.$vip
}
foreach 
txt [wordwrap [join $vipnumber " "200] {
puthelp "NOTICE $nick :VIP Eklenenler Listesi :"
puthelp "NOTICE $nick :$txt"
}
}

proc remvip {nick host hand chan arg} {
set dir "logs/vip($chan).txt"
set number [join [lindex [split $arg0]]
if {
$number == ""} { puthelp "NOTICE $nick :Kullanım: !vipsil <number> (Listeden Seç)"
return 0
}
if {[
file exists $dir] == 0} {
set file [open $dir a]
close $file
}
set file [open $dir "r"]
set data [read -nonewline $file]
close $file
set lines 
[split $data "\n"]
set i [expr $number 1]
set delete [lreplace $lines $i $i]
set files [open $dir "w"]
puts $files [join $delete "\n"]
close $files
puthelp 
"NOTICE $nick :VIP Listesinden, $number numaralı kişi silindi. Kontol etmek için !vipliste komutunu kullanın."
}

proc vipscan {nick host hand chan} {
global 
vipmsg viphowmsg
set dir 
"logs/vip($chan).txt"
if {[file exists $dir] == 0} {
set file [open $dir a]
close $file
}
set file [open $dir "r"]
set w [read -nonewline $file]
close $file
set data 
[split $w "\n"]
if {
$data == ""} { 
return 
0
}
foreach 
vip $data {
if {[
string match -nocase $nick $vip]} {
if {
$viphowmsg == "1"} {
puthelp "NOTICE $nick :$vipmsg"
}
pushmode $chan +v $vip
}
}
}



proc vips { } {
global 
viptime
foreach chan [channels] {
set dir "logs/vip($chan).txt"
if {[channel get $chan vip]} {
putlog "$chan kanalında VIP taraması yapılıyor.."
set file [open $dir "r"]
set w [read -nonewline $file]
close $file
set data 
[split $w "\n"]
foreach 
vip $data {
if {[
onchan $vip $chan]} {
if {![
isvoice $vip $chan]} {
pushmode $chan +v $vip
}
}
}
}
}
timer $viptime vips
return 1
}

proc wordwrap {str {len 100} {splitChr { }}} { 
   
set out [set cur {}]; set i 0 
   
foreach word [split [set str][unset str$splitChr] { 
     if {[
incr i [string len $word]]>$len} { 
         
lappend out [join $cur $splitChr
         
set cur [list $word
         
set i [string len $word
      } { 
         
lappend cur $word 
      

      
incr i 
   

   
lappend out [join $cur $splitChr




İsterseniz modları kendinize göre değişin, +v yerine +o verdirebilir veya birden fazla mod kullanabilirsiniz. Güle güle kullanın.

kheldor 08 Eylül 2012 14:58

Cevap: VIP User TCL
 
Merhaba. Kod da ne yazıkkı hatalar mevcut. Bunlar sırasıyla.

1. Vip ekle dediğiniz nick !vipsil nick ile silinmemekte bot herhangi bir işlem yapmamakta.

2. Örnek olarak !vipekle test diye bir nick ekledim, ancak yanlışıkla tekrar test diye ekle dediğimde 2. hatta 3. nick olarak test eklemekte.

[14:57:43] -BoT- VIP Eklenenler Listesi :
[14:57:45] -BoT- 1.test 2.test 3.test

Test nicki zaten ekli diye mesaj almak daha doğru olur.
Aynı isimden 3 tane test olamayacağına göre :)

Harici olarak sorunsuz çalışmakta 2 sıkıntısı var okadar. Sevgilerimle.


İşe yararmı bilmiyorum ancak bot içinde şunu yazmakta.


<BoT> [14:56:02] Tcl error [remvip]: invalid bareword "test"
<BoT> in expression "test - 1";
<BoT> should be "$test" or "{test}" or "test(...)" or ...
<BoT> [14:56:38] Tcl error [remvip]: invalid bareword "test"
<BoT> in expression "test - 1";
<BoT> should be "$test" or "{test}" or "test(...)" or ...
<BoT> [14:56:41] Tcl error [remvip]: invalid bareword "test"
<BoT> in expression "1._@_test - 1";
<BoT> should be "$test" or "{test}" or "test(...)" or ...
<BoT> [14:56:46] utimer173 (page_check) killed.
<BoT> [14:57:28] Tcl error [remvip]: invalid bareword "test"
<BoT> in expression "test - 1";
<BoT> should be "$test" or "{test}" or "test(...)" or ...
<BoT> [14:57:30] Tcl error [remvip]: invalid bareword "test1"
<BoT> in expression "test1 - 1";
<BoT> should be "$test1" or "{test1}" or "test1(...)" or ...



EK olarak. -BoT- Tebrikler, VIP olduğunuz için Voice (+) aldınız :)

Bu mesajın notice olarak değil kanal geneline yazmasını istiyorum. NOTİCE kısmını silip msg $chan yaptım ama calısmadı. Teşekkürler.

Paint 08 Eylül 2012 16:07

Cevap: VIP User TCL
 
Alıntı:

kheldor Nickli Üyeden Alıntı (Mesaj 1041210688)
Merhaba. Kod da ne yazıkkı hatalar mevcut. Bunlar sırasıyla.

1. Vip ekle dediğiniz nick !vipsil nick ile silinmemekte bot herhangi bir işlem yapmamakta.

2. Örnek olarak !vipekle test diye bir nick ekledim, ancak yanlışıkla tekrar test diye ekle dediğimde 2. hatta 3. nick olarak test eklemekte.

[14:57:43] -BoT- VIP Eklenenler Listesi :
[14:57:45] -BoT- 1.test 2.test 3.test

Test nicki zaten ekli diye mesaj almak daha doğru olur.
Aynı isimden 3 tane test olamayacağına göre :)

Harici olarak sorunsuz çalışmakta 2 sıkıntısı var okadar. Sevgilerimle.


İşe yararmı bilmiyorum ancak bot içinde şunu yazmakta.


<BoT> [14:56:02] Tcl error [remvip]: invalid bareword "test"
<BoT> in expression "test - 1";
<BoT> should be "$test" or "{test}" or "test(...)" or ...
<BoT> [14:56:38] Tcl error [remvip]: invalid bareword "test"
<BoT> in expression "test - 1";
<BoT> should be "$test" or "{test}" or "test(...)" or ...
<BoT> [14:56:41] Tcl error [remvip]: invalid bareword "test"
<BoT> in expression "1._@_test - 1";
<BoT> should be "$test" or "{test}" or "test(...)" or ...
<BoT> [14:56:46] utimer173 (page_check) killed.
<BoT> [14:57:28] Tcl error [remvip]: invalid bareword "test"
<BoT> in expression "test - 1";
<BoT> should be "$test" or "{test}" or "test(...)" or ...
<BoT> [14:57:30] Tcl error [remvip]: invalid bareword "test1"
<BoT> in expression "test1 - 1";
<BoT> should be "$test1" or "{test1}" or "test1(...)" or ...



EK olarak. -BoT- Tebrikler, VIP olduğunuz için Voice (+) aldınız :)

Bu mesajın notice olarak değil kanal geneline yazmasını istiyorum. NOTİCE kısmını silip msg $chan yaptım ama calısmadı. Teşekkürler.

Kodda gördüğüm kadarıyla silerken numara kullanmanız gerekiyor. msg $chan olarak değilde privmsg $chan olarak değiştirmeniz gerek.

kheldor 08 Eylül 2012 16:23

Cevap: VIP User TCL
 
Tmm meseleyi çözdüm.
!vipsil numara nick seklinde olacakmış
Kanal yansıtmayı yaptım sayende. Teşekkürler.

saywhat 08 Eylül 2012 19:38

Cevap: VIP User TCL
 
bir kullanıcı eklemek yada belli bir kullanıcıya kanala girişte oto herhangi bir modun bot tarafından verilmesi-atanması için bir tcl script kullanmadan partyline üzerinden komutla bunu bota oto yaptırabilirsiniz.
.chattr nick +-flag #kanal-adı komutu o kullanıcı için belirlenen kanal üstünde istenilen flagı/modu almasını sağlayacaktır. örnek saywhat nickine akanalında oto voice vermek istiyorsanız. bota telnet/dcc ile bağlanıp .chattr saywhat +g #kanala eğer belirlenen kanal halihazırda +autovoice olarak ekli bir kanalsa .chattr saywhat +v #kanalb flagları belirlenen kullanıcıya belirtilen kanalda girişte botun oto voice vermesini sağlayacaktır.

ayrıntılı bilgi için telnet/dcc bağlantısında .help chattr komutu uygulayın.diğer eggdrop kullanıcı flagları için doküman -> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

house 08 Eylül 2012 19:51

Cevap: VIP User TCL
 
Şunu da belirtim arkadaşlar, botu kullanırken hostname kısmınız aynı olmalı. Örneğin ben bota kendimi owner olarak tanıttım;

/msg Botnick hello
/msg Botnick pass 87989

Gibi. Sonra bi kanala girdim servisler başka host verdi, veya chghost yaptım kendime. Ozaman bot sizi algılamıyor. Dolayısıyla komutları da görmüyor.

- !vipsil 3 gibi silmeniz lazım evet, @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] belirtmiş bunu da ve $chan olarak düzenleyin ama şu şekilde yapın;

putquick "NOTICE $nick" yerine , putquick "privmsg $chan" şeklinde yapın.

@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] evet söylediğin de geçerli ama şunu da düşün ki bot üzerinde konsola girerek yapılabilir o ancak, bunu ise herkes kullanabilicek. Veya mesajla karşılama yapmak da mümkün.


PHP- Kodu:

set vipwho "Nmn|MN" 

bu kısmı;

PHP- Kodu:

set vipwho "r | o" 

gibi yaparsanız oplar veya normal kullanıcılar da kullanabilicek.

saywhat 08 Eylül 2012 20:14

Cevap: VIP User TCL
 
bota .+user nick/handle *!*ident@*hostun-son-kısmı şeklinde kullanıcı ekleyip .-user nick/handle diyerek kullanıcıyı botun kullanıcı dosyasından silebilirsiniz. eğerki botta ekli kullanıcının ident yada host bilgilerinde değişiklik oldu ve bot bu kişiyi tanıyamıyorsa ki bu botun sahibinede olabilir.dinamik ip nedeniyle host ip değiştikçe değişebilir.bot bu kişiyi onaylamaz-tanımlamaz güvenlik nedeniyle sadece nickin değil kullanıcın ident@host kısmınında eşleşmesi gerekir. bu durumda yeni değişmiş ident/host kısmını o ekli kullanıcı için yeni şekliyle .+host nick/handle *!*ident@*.yeni.hostun.son.iki.parçası gibi ekleyebilir böylece o nick/kullanıcı için bot kendi user/kullanıcı dosyasında bu yeni hostuda o kullanıcı için listeleyecek ister eski host/identle ister bu yeni eklenen ident/hostla olsun kullanıcıyı tanıyabilecektir.

örnek. saywhat bot sahibi kendini bota tanıttığında bot onu kullanıcı dosyasına
nick/handle flagları
saywhat - hjlmnoptx
! #kanal 1346936993 -
--HOSTS [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

olarak kaydetti.fakat elektrik kesildi geldi saywhatın ip değişti.yeniden bağlandığında sunucunun verdiği hostda değişeceğinden botu onu tanımamazlıktan geldi.
saywhat bota bağlandı yeni hostunu komutla.

.+host saywhat [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] gibi ekleyince bot bu hostuda eskisinin altına saywhat nick/handle'ı için ekler ve artık saywhat'a yanlış yapmaya kalkmaz...mutlu son...


ekstra bir bilgi olarak : bota eklediğiniz herhangi bir kullanıcı için bota komutla greet/karşılama mesajı ekleyebilirsiniz. belirtilen kullanıcı belirlenen kanala girişinde bot bu greet/karşılama mesajını atacaktır. ...

bunun için botun confunda kanal ayarlarında greet ayarı +greet olmalı ..
botun confunda yoksa set no-chanrec-info 1
set wait-info 0 ayarları ekli olsun. bu değişiklikleri yaparken ya botu durdurup yapın ya değişiklikten sonra .restart yeniden başlatın.

bota bağlanıp .chinfo kullanıcı #kanal info-mesajı şeklinde istenilen kanalda istenilen kullanıcı için bir karşılama mesajı belirlemiş olursunuz bu mesaj @ işareti ile başlayamaz.none olarak eklenirse mesaj silenecektir.
.chinfo saywhat #kanal amanda aman kimler gelmiş. gibi...

hazır bi yerden başlamışız konuyla alakalı sonunu getirelim bari...

house 08 Eylül 2012 21:24

Cevap: VIP User TCL
 
@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] , avatarını ve giriş mesajı örneğini beğendim :)

IUC 08 Eylül 2012 21:49

Cevap: VIP User TCL
 
@ilvir çalışmadı :( C
@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] teşekkür butononu gördüm forum icad edildikten sonra 18 yıldır kullanırım o butonu sandığın kadar aptal değilim!

house 08 Eylül 2012 21:51

Cevap: VIP User TCL
 
@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] usta istersen bir uğra bana, ben şu an kullanıyorum aynı verdiğim şekilde çalışıyo. Hatayı buraya kopy edersen bakalım istersen.


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 17:18.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2025 IRCForumlari.Net Sparhawk