egghelp.org community Forum Index
[ egghelp.org home | forum home ]
egghelp.org community
Discussion of eggdrop bots, shell accounts and tcl scripts.
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

setudef flag not working

 
Post new topic   Reply to topic    egghelp.org community Forum Index -> Scripting Help
View previous topic :: View next topic  
Author Message
daigo
Voice


Joined: 27 Jun 2014
Posts: 37

PostPosted: Mon Jul 28, 2014 11:55 pm    Post subject: setudef flag not working Reply with quote

Code:

setudef flag relay

set spy(home) "#daigo"

set spy(chan) "#helpops"

bind PUBM   -|- *                spychan:chat
bind CTCP   -|- "ACTION"         spychan:action
bind SIGN   -|- "$spy(chan) *"   spychan:sign
bind JOIN   -|- "$spy(chan) *"   spychan:join
bind PART   -|- "$spy(chan) *"   spychan:part
bind SPLT   -|- "$spy(chan) *"   spychan:split
bind KICK   -|- "$spy(chan) *"   spychan:kick
bind RAW     *  "MODE"           spychan:mode


proc spychan:part { nickname hostname handle channel reason } {
   global spy
   if {[string equal -nocase $channel $spy(chan)]} {
   putserv "PRIVMSG $spy(home) :\[$channel\] * $nickname ($hostname) has left $spy(chan)"
   }
       }


proc spychan:join { nickname hostname handle channel } {
   global spy
   if {[string equal -nocase $channel $spy(chan)]} {
   putserv "PRIVMSG $spy(home) :\[$channel\] * $nickname ($hostname) has joined $spy(chan)"
   }
       }

proc spychan:kick { nickname hostname handle channel target reason } {
   global spy
   if {[string equal -nocase $channel $spy(chan)]} {
   putserv "PRIVMSG $spy(home) :\[$channel\] * $target was kicked from $spy(chan) by $nickname ($reason)"
   }
       }

proc spychan:mode { from key arguments } {
   global spy
   set channel [string trim [lindex [split $arguments] 0]]
   set modechange [string trim [lindex [split $arguments] 1]]
   set victims [string trim [join [lrange [split $arguments] 2 end]]]

   set nickname [string trim [lindex [split $from "!"] 0]]
   set hostname [string trim [lindex [split $from "!"] 1]]
   if {[string equal -nocase $channel $spy(chan)]} {
   putserv "PRIVMSG $spy(home) :\[$channel\] * $nickname sets mode: $modechange $victims"
   }
       }

proc spychan:sign { nickname hostname handle channel reason } {
   global spy
   if {[string equal -nocase $channel $spy(chan)]} {
   putserv "PRIVMSG $spy(home) :\[$channel\] * $nickname ($hostname) has quit IRC ($reason)"
   }
       }

proc spychan:split { nickname hostname handle channel arguments } {
   global spy
   if {[string equal -nocase $channel $spy(chan)]} {
   putserv "PRIVMSG $spy(home) :\[$channel\] * $nickname has split from the network"
   }
       }

proc spychan:chat { nickname hostname handle channel arguments } {
   global spy
   if {[string equal -nocase $channel $spy(chan)]} {
        putserv "PRIVMSG $spy(home) :\[$channel\] <$nickname> $arguments"
        }
       }

proc spychan:action { nickname hostname handle channel keyword arguments } {
   global spy
   if {[string equal -nocase $channel $spy(chan)]} {
        putserv "PRIVMSG $spy(home) :\[$channel\] * $nickname $arguments"
        }
       }


Even though I didn't set the +relay flag in any channels (it's -relay in all channels), it still relays all the messages into #daigo from #helpops. I even restarted the bot but it still activates.
Back to top
View user's profile Send private message
heartbroken
Op


Joined: 23 Jun 2011
Posts: 106
Location: somewhere out there

PostPosted: Tue Jul 29, 2014 12:43 am    Post subject: Reply with quote

setudef flag not working because :

there is only setudef flag ... line outside of the procs , it doesn't check if this defined channel flag activated on $chan in the procs...

there are only checks that : if $spy(chan) equivalence to $channel .. in every proc
-> https://www.tcl.tk/man/tcl8.6/TclCmd/string.htm

so how we gonna check this "user defined channel flags in procs?"

method 1 : "channel get" -> http://www.eggheads.org/support/egghtml/1.6.21/tcl-commands.html#chancmds

Code:
if {[channel get $chan that-flag]} {
 ....


method 2 : with "lsearch" -> http://www.tcl.tk/man/tcl8.6/TclCmd/lsearch.htm

Code:
if {[lsearch -exact [channel info $chan] "+that-flag"] != -1} {

_________________
Life iS Just a dReaM oN tHE wAy to DeaTh


Last edited by heartbroken on Tue Jul 29, 2014 2:59 am; edited 2 times in total
Back to top
View user's profile Send private message
daigo
Voice


Joined: 27 Jun 2014
Posts: 37

PostPosted: Tue Jul 29, 2014 12:52 am    Post subject: Reply with quote

Is it better to use:

Code:
if {[channel get $chan that-flag]} {
...


or

Code:
if {![channel get $chan that-flag]} { return }
if ...
...

?
Back to top
View user's profile Send private message
heartbroken
Op


Joined: 23 Jun 2011
Posts: 106
Location: somewhere out there

PostPosted: Tue Jul 29, 2014 12:56 am    Post subject: Reply with quote

well both are same actually... first one says" if $chan has that-flag,lets do this work..."

second one says " if we don't have that-flag ,won't do anything ..."
_________________
Life iS Just a dReaM oN tHE wAy to DeaTh
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    egghelp.org community Forum Index -> Scripting Help All times are GMT - 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Forum hosting provided by Reverse.net

Powered by phpBB © 2001, 2005 phpBB Group
subGreen style by ktauber