Tcl 抗洪指挥

Tcl 抗洪指挥,tcl,eggdrop,Tcl,Eggdrop,我正在编写以下脚本: bind pub ga !kick pub_do_kick proc pub_do_kick {nick uhost hand chan arg} { # create a sub-proc to delay proc delay {} { return } # timer already running? if {[utimerexists delay] == ""} { # timer is not active,

我正在编写以下脚本:

bind pub ga !kick pub_do_kick

proc pub_do_kick {nick uhost hand chan arg} {

    # create a sub-proc to delay
    proc delay {} { return }

    # timer already running?
    if {[utimerexists delay] == ""} {

        # timer is not active, perform something
        global botnick
        set who [lindex $arg 0]
        set why [lrange $arg 1 end]
        if {![onchan $who $chan]} {
            putserv "PRIVMSG $chan :$who isnt on $chan"
            return 1
        }
        if {[string tolower $who] == [string tolower $botnick]} {
            putserv "KICK $chan $nick :You fail"
            return 1
        }
        if {$who == ""} {
            putserv "PRIVMSG $chan :Usage: !k <nick to kick>"
            return 1
        }
        if {$who == $nick} {
            putserv "PRIVMSG $chan :You fail $nick?"
            return 1
        }
        if {[matchattr $who +n]} {
            putserv "KICK $chan $nick :You fail"
            return 1
        }
        putserv "KICK $chan $who :$why"
        return 1

        # starting timer to prevent flooding next time
        utimer 1200 delay
    } else {
        # timer is already active
        putserv "KICK $chan $nick :You've already kicked someone"
    }
}
putlog "Kick loaded"
bind pub ga!踢酒吧
proc pub_do_kick{nick uhost hand chan arg}{
#创建一个子进程来延迟
进程延迟{}{return}
#计时器已经运行了吗?
如果{[utimerexists delay]==“”{
#计时器未激活,请执行某些操作
全球博尼克
设置谁[lindex$arg 0]
设置原因[lrange$arg 1 end]
如果{![onchan$who$chan]}{
putserv“PRIVMSG$chan:$who不在$chan上”
返回1
}
如果{[string tolower$who]==[string tolower$botnick]}{
putserv“KICK$chan$nick:你失败了”
返回1
}
如果{$who==“”}{
putserv“PRIVMSG$chan:用法:!k”
返回1
}
如果{$who==$nick}{
putserv“PRIVMSG$chan:你失败了$nick?”
返回1
}
如果{[matchattr$who+n]}{
putserv“KICK$chan$nick:你失败了”
返回1
}
putserv“KICK$chan$who:$why”
返回1
#启动计时器以防止下次发生洪水
utimer 1200延迟
}否则{
#计时器已激活
putserv“踢$chan$nick:你已经踢过某人了”
}
}
putlog“井涌负载”
然而,它根本不是从utimer开始的。用户可以不断地从某个频道踢某人。我做错了什么

我已经通读了这个:基于第二个脚本


谢谢

如果我们查看您的代码,我们会看到
utimer 1200延迟
放在调用
return
之后,因此实际上是无法访问的代码。哎呀!您需要通过提前移动计时器(大概就在计时器上方的行之前)来解决此问题。因此


顺便说一句,关于脚本的其他一切看起来都不错。有一些小的风格问题,但它们不是问题;无法访问的代码是…
# .... blah blah as above ....
putserv "KICK $chan $who :$why"    ;# Do the kick
utimer 1200 delay                  ;# Start the timer
return 1                           ;# *NOW* we're done, not before
# .... blah blah as above ....