This is the new home of the egghelp.org community forum.
All data has been migrated (including user logins/passwords) to a new phpBB version.
For more information, see this announcement post . Click the X in the top right-corner of this box to dismiss this message.
Old posts that have not been replied to for several years.
o
oldfield
Post
by oldfield » Fri Sep 28, 2001 9:34 pm
I started to script my tcls for a time but yet i have a problem that i couldn't resolve for myself. In my !kickban command, if a target nick is in the form of [justanick], the script thinks that 'justanick' is a function and of course gives an error because no such function exists. Can I pass literal arguments to a putkick command (or every other command) bypassing the [] and make the kick ? I read somewhere that backslash[backslash cound be the solution, but how can I make the tcl interpreter assume that [nick] is a nick and not a function ?! Thanks in advance
_________________
Best regards, Marco Ferra
<font size=-1>[ This Message was edited by: oldfield on 2001-09-28 19:36 ]</font>
<font size=-1>[ This Message was edited by: oldfield on 2001-09-28 19:36 ]</font>
Petersen
Owner
Posts: 685 Joined: Thu Sep 27, 2001 8:00 pm
Location: Blackpool, UK
Post
by Petersen » Fri Sep 28, 2001 10:09 pm
Its all to do with how you handle strings in the script. Paste the code and we'll tell you what you've done wrong.
o
oldfield
Post
by oldfield » Fri Sep 28, 2001 10:19 pm
# syntax: !kb <nick> [reason]
bind pub o|o !kb pub:kickban
proc cbot {nick chan tnick} {
if {[botisop $chan]} {
if {[onchan $tnick $chan]} {
return 1
} else { puthelp "NOTICE $nick :no such nick on channel!" ; return 0 }
} else { puthelp "NOTICE $nick :i dont have ops!" ; return 0 }
}
proc pub:kickban {nick uhost hand chan text} {
set tnick [lindex $text 0]
if {[cbot $nick $chan $tnick]} {
if {[lindex $text 1] != ""} { set reason [lrange $text 1 end] } else { set reason banned }
newchanban $chan *!*@[lindex [split [getchanhost $tnick $chan] @] 1] $nick $reason 10
utimer 5 "putkick [$chan $tnick $reason]"
}
}
---
I'm almost sure that my problem is in utimer 5 "putkick [$chan $tnick $reason]"
Petersen
Owner
Posts: 685 Joined: Thu Sep 27, 2001 8:00 pm
Location: Blackpool, UK
Post
by Petersen » Fri Sep 28, 2001 10:53 pm
your problem is that you're using list functions on strings. try this
Code: Select all
# syntax: !kb <nick> [reason]
bind pub o|o !kb pub:kickban
proc cbot {nick chan tnick} {
if {[botisop $chan]} {
if {[onchan $tnick $chan]} {
return 1
} else { puthelp "NOTICE $nick :no such nick on channel!" ; return 0 }
} else { puthelp "NOTICE $nick :i dont have ops!" ; return 0 }
}
proc pub:kickban {nick uhost hand chan text} {
set tnick [lindex [split $text] 0]
if {[cbot $nick $chan $tnick]} {
if {[lindex [split $text] 1] != ""} { set reason [join [lrange [split $text] 1 end]] } else { set reason banned }
newchanban $chan *!*@[lindex [split [getchanhost $tnick $chan] @] 1] $nick $reason 10
utimer 5 [list putkick $chan $tnick $reason]
}
}
note that this is untested code
o
oldfield
Post
by oldfield » Sat Sep 29, 2001 12:38 am
The code works... your code works. Thank you. Now I will pass my eyes on the tcl manual to understand the changes.