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/)
-   -   #bilgi kanalı için tcl (https://www.ircforumlari.net/tcl-scriptler/644752-bilgi-kanali-icin-tcl.html)

tolgabati 12 Kasım 2014 10:20

#bilgi kanalı için tcl
 
bind pub - !nick msg_nickban
proc msg_nickban {nick uhost handle chan arg} {
global botnick
set person [lindex $arg 0]
if {$person == $botnick} {return}
if {[isop $nick $chan] || [ishalfop $nick $chan] || [onchan $nick "#Opers"]} {
putquick "PRIVMSG IRC mode $chan +b $person"
putquick "kick $chan $person Kanal kurallarına uymadığınız tespit edildi. IP'niz banlandı."
}
}

Böyle bir kod var kanalda görevli olan op !nick deneme yazdığında kanaldaki deneme nickine bot nick ban atıyor.Şimdi bunu şöyle nasıl düzenleyebiliriz mesela komutu hangi op kime uyguladıysa #bilgi kanalına haber versin bot.

Örnek:

[01:00] <bot> deneme - NickDeğiş #kanal- Uygunsuz nick sebebi ( komutu uygulayan op)

tolgabati 12 Kasım 2014 16:31

Cevap: #bilgi kanalı için tcl
 
Tam anlaşılmadı galiba yani hangi kanalda hangi op hangi usere ban attı

Kablosuz NET 12 Kasım 2014 16:51

Cevap: #bilgi kanalı için tcl
 
Kod:

bind pub - !nick msg_nickban
proc msg_nickban {nick uhost handle chan arg} {
global botnick
set person [lindex $arg 0]
if {$person == $botnick} {return}
if {[isop $nick $chan] || [ishalfop $nick $chan] || [onchan $nick "#Opers"]} {
putquick "PRIVMSG IRC mode $chan +b $person"
putquick "kick $chan $person Kanal kurallarına uymadığınız tespit edildi. IP'niz banlandı."
putquick "PRIVMSG #bilgi $chan kanalında $person nickli üye $nick tarafından kanaldan atıldı."
}
}


Not: Botunuz bilgi kanalında olmak zorundadır.

saywhat 12 Kasım 2014 23:33

Cevap: #bilgi kanalı için tcl
 
bot 1.6.21 sürümü ise , bu sürümde (ve bir kullanıcıya Efnet'te yardım verirken görüldü ki 1.8 sürümünde de bu sorun var...) onchan ve botonchan komutlarıyla ilgili bir "bug" ,hata var şöyle ki ; bot ayrıldığı kanalla ilgili bilgiyi resetlemiyor ve bu nedenle orada olmamasına rağmen hala o sakladığı/silmediği veriye göre işlem yapmaya çalışabiliyor.

bu belirlenen "sorun" üzerine yukarıdaki gibi onchan yada botonchan komutları içeren scriptlerde "sıkıntı" yaşanmaması için (bot kanalda olmamasına rağmen hala "1" dönüyor "0" dönmesi gerekirken...) ,botunuz bu sürümlerden biri ise ,eggdrop geliştiricisi thommey'in bu sorunu onarmaya/gidermeye yönelik yazdığı şu scripti ,(mümkünse .conf dosyasında yüklenecek scriptler listesinin en üstlerinde source listesine ekleyin) yüklemelisiniz:

Kod:

# botonchan.tcl
# Track [botonchan]/[onchan] in a script, working around a bug in Eggdrop1.6.21
#
# (c) 2014 Thomas Sader
# ----------------------------------------------------------------------------
# "THE BEER-WARE LICENSE" (Revision 42):
# <thommey@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...].com> wrote this file. As long as you retain this notice you
# can do whatever you want with this stuff. If we meet some day, and you think
# this stuff is worth it, you can buy me a beer in return. - thommey
# ----------------------------------------------------------------------------

bind join - * onchan:join
# for some weird reason the part bind doesn't trigger if the bot parts on its own
#bind part - * onchan:part
bind out - "% sent" onchan:checkpart
bind kick - * onchan:kick
bind evnt - disconnect-server onchan:disconnect
proc setbotonchan {chan value} {
    global botonchan
    if {$value} {
        set botonchan($chan) 1
    } else {
        unset -nocomplain botonchan($chan)
    }
}
proc unsetbotonallchan {} {
    global botonchan
    if {![info exists botonchan]} {
        return
    }
    foreach chan [array names botonchan] {
        setbotonchan $chan 0
    }
}
proc onchan:join {nick host hand chan} {
    if {![isbotnick $nick]} { return }
    setbotonchan $chan 1
}
proc onchan:checkpart {queue text status} {
    if {[string toupper [lindex [split $text] 0]] eq "PART"} {
        onchan:part $::botnick - - [lindex [split $text] 1]
    }
}
proc onchan:part {nick host hand chan {reason ""}} {
    if {![isbotnick $nick]} { return }
    setbotonchan $chan 0
}
proc onchan:kick {nick host hand chan victim text} {
    if {![isbotnick $victim]} { return }
    setbotonchan $chan 0
}
proc onchan:disconnect {args} {
    unsetbotonallchan
}
proc botonchan {{chan "any"}} {
    global botonchan
    if {![info exists botonchan]} { return 0 }
    if {($chan eq "any" && ![llength [array names botonchan]]) || ![info exists botonchan($chan)]} { return 0 }
    return 1
}
# we also have to workaround [onchan] being 1 for old nicknames by embedding [botonchan] into it
if {[info commands _onchan] eq ""} { rename onchan _onchan }
proc onchan {nick {chan ""}} {
    if {$chan eq ""} {
        set chans [channels]
    } else {
        set chans [list $chan]
    }
    foreach c $chans {
        if {[botonchan $chan] && [_onchan $nick $chan]} { return 1 }
    }
    return 0
}

yukarıdaki sorunuz içinse,şöyle birşey :

Kod:

# rapor verilecek kanal.
set raporch "#rapor"

# komutu kullanma yetkisi olacak kişinin aynı zamanda bulunması aranan kanal.
set operch "#opers"

# uzaklaştırma sebebleri:
set sebep {
  "Kanal kurallarına uymadığınız tespit edildi. IP'niz banlandı."
  "canı öyle istemiş"
  "gözünün üstünde kaşın var..."
  "goooooooooooooolllllll"
  "bu tuşa basınca ne oluyordu acaba?"
  "ah elim kaydı..."
}

# ayar sonu...

proc msg_nickban {nick uhost hand chan text} {
    if {![isop $nick $chan] || ![ishalfop $nick $chan] && ![onchan $nick $::operch]} {
          puthelp "notice $nick :$::lastbind komutunu kullanmak için,$chan kanalında en az Halfop yada Op olmalı \
          ve $::operch kanalında bulunuyor olmak zorundasınız..."
          return
    }
   
    if {![botisop $chan] || ![botishalfop $chan]} {
          puthelp "notice $nick :$chan kanalında bunu yapmaya yetkim yok $nick"
          return
    }
   
          set person [filtre [lindex [split $text] 0]]
          set neden [subst -nocommands [lindex $::sebep [expr {int(rand()*[llength $::sebep])}]]]
          set zaman [clock format [clock seconds] -format "%d/%B/%Y %A %H:%M:%S" -locale tr_TR]
         
    if {[llength $person] eq "0"} {
          puthelp "notice $nick :kullanımı : $::lastbind <hedef>"
          return
    }
   
    if {$person eq $::botnick || [matchattr [nick2hand $person] mnoaf|mnoaf $chan]} {
          puthelp "notice $nick :bu kabul edilemez $nick..."
          return 0
    }
   
          pushmode $chan +b $person
          flushmode $chan
          putkick $chan $person :"$neden"
   
    if {[botonchan $::raporch]} {
          puthelp "privmsg $::raporch :$zaman $person nicki, \"$neden\" nedeniyle , $nick tarafından $chan kanalından uzaklaştırıldı."
          set iletildi 1
    } else {
          putlog "$::raporch kanalında olmadığımdan, bilgi iletilemedi..."
          set iletildi 0
    }
}

proc filtre {filter} {
    return [regsub -all -- $filter {[][*?\\]} {\\\0} filter]
}

bind pub - "!nick" msg_nickban

putlog "ok..."


tolgabati 13 Kasım 2014 11:43

Cevap: #bilgi kanalı için tcl
 
Kablosuz NET verdiğin kod işe yaradı teşekkür ederim birde bu komuttan op ve halfop konumunda olanların etkilenmemesi için ne yapmalıyız yani kanalda olan deneme halfop konumunda ise !nick deneme yaptığımızda etkilenmesin yani bot +b yapmasın

rascoLn 13 Kasım 2014 12:33

Cevap: #bilgi kanalı için tcl
 
Kod:

bind pub - !nick msg_nickban
proc msg_nickban {nick uhost handle chan arg} {
global botnick
set person [lindex $arg 0]
if {$person == $botnick} {return}
if {[isop $nick $chan] || [ishalfop $nick $chan] || [onchan $nick "#Opers"]} {
İf {![ishalfop $person $chan] && ![isop $person $chan]} {
putquick "PRIVMSG IRC mode $chan +b $person"
putquick "kick $chan $person Kanal kurallarına uymadığınız tespit edildi. IP'niz banlandı."
putquick "PRIVMSG #bilgi $chan kanalında $person nickli üye $nick tarafından kanaldan atıldı."
}
}
}

Op ve halfoplar muaf tutulur..

tolgabati 13 Kasım 2014 16:05

Cevap: #bilgi kanalı için tcl
 
dediğiniz gibi yaptım bu seferde hiç çalışmıyor kimseyi atmıyor kanaldan

--IRCForumlari.NET ; Flood Engellendi -->-> Yeni yazılan mesaj 16:05 -->-> Daha önceki mesaj 15:30 --

bu konuda yardımcı olabilecek bir arkadaş varmı acaba

tolgabati 13 Kasım 2014 22:07

Cevap: #bilgi kanalı için tcl
 
Kablosuz NET bu konu hakkında bilgin varmı acaba ?

--IRCForumlari.NET ; Flood Engellendi -->-> Yeni yazılan mesaj 22:07 -->-> Daha önceki mesaj 22:06 --

Alıntı:

rascoLn Nickli Üyeden Alıntı (Mesaj 1041540902)
Kod:

bind pub - !nick msg_nickban
proc msg_nickban {nick uhost handle chan arg} {
global botnick
set person [lindex $arg 0]
if {$person == $botnick} {return}
if {[isop $nick $chan] || [ishalfop $nick $chan] || [onchan $nick "#Opers"]} {
İf {![ishalfop $person $chan] && ![isop $person $chan]} {
putquick "PRIVMSG IRC mode $chan +b $person"
putquick "kick $chan $person Kanal kurallarına uymadığınız tespit edildi. IP'niz banlandı."
putquick "PRIVMSG #bilgi $chan kanalında $person nickli üye $nick tarafından kanaldan atıldı."
}
}
}

Op ve halfoplar muaf tutulur..



dediğiniz gibi yaptım bu seferde hiç çalışmıyor kimseyi atmıyor kanaldan

rascoLn 14 Kasım 2014 01:01

Cevap: #bilgi kanalı için tcl
 
kod calısıyor yalnız bastaki "if" ' i "İf" olarak yazmısım ondan calismamistir. Tekrardan copy / paste yapıp deneyebilirsiniz..

Kod:

bind pub - !nick msg_nickban
proc msg_nickban {nick uhost handle chan arg} {
global botnick
set person [lindex $arg 0]
if {$person == $botnick} {return}
if {[isop $nick $chan] || [ishalfop $nick $chan] || [onchan $nick "#Opers"]} {
if {![ishalfop $person $chan] && ![isop $person $chan]} {
putquick "PRIVMSG IRC mode $chan +b $person"
putquick "kick $chan $person Kanal kurallarına uymadığınız tespit edildi. IP'niz banlandı."
putquick "PRIVMSG #bilgi $chan kanalında $person nickli üye $nick tarafından kanaldan atıldı."
}
}
}


tolgabati 14 Kasım 2014 01:53

Cevap: #bilgi kanalı için tcl
 
Alıntı:

rascoLn Nickli Üyeden Alıntı (Mesaj 1041541371)
kod calısıyor yalnız bastaki "if" ' i "İf" olarak yazmısım ondan calismamistir. Tekrardan copy / paste yapıp deneyebilirsiniz..

Kod:

bind pub - !nick msg_nickban
proc msg_nickban {nick uhost handle chan arg} {
global botnick
set person [lindex $arg 0]
if {$person == $botnick} {return}
if {[isop $nick $chan] || [ishalfop $nick $chan] || [onchan $nick "#Opers"]} {
if {![ishalfop $person $chan] && ![isop $person $chan]} {
putquick "PRIVMSG IRC mode $chan +b $person"
putquick "kick $chan $person Kanal kurallarına uymadığınız tespit edildi. IP'niz banlandı."
putquick "PRIVMSG #bilgi $chan kanalında $person nickli üye $nick tarafından kanaldan atıldı."
}
}
}


Çok teşekkür ederim tıkır tıkır çalışıyor şuan.Size zahmet olmassa bir şey daha rica edicem şimdi ScanX eggdrop bot kanalda birine ban attığı zaman mesela 5 dakika banlandınız diyor ve tam 5 dakika sonra saniyesi saniyesine o banı kaldırıyor.Ama ben ne kadar uğraşsamda !nick ban atıyorum bota .chanset #kanal ban-time 10) diye tanıtıyorum yada conf dosyasına global-ban-time 10 set-ban-time 10 bunların hiç birisi tam verimli değil attığı banı 10dak 20sn yada 10 dak 50sn gibi tutarsız bir biçimde banı açıyor.Bunu nasıl ScanX deki bot gibi ayarlıyabiliriz.


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

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