TCL在倒计时等待时间

时间:2012-12-30 00:25:31

标签: tcl eggdrop

if {[info exists queue($variable)} {
    if {[expr [unixtime] - $queue($variable)]<86400} {
        set calctime [expr [unixtime] - queue($variable)]
        putquick "PRIVMSG $channel :you cant because you need to wait $calctime"
    }
}
set queue($variable) [unixtime]

我的Tcl脚本中有这个代码,所以每个用户都需要等待24小时再重新执行命令。 我想把倒计时显示他们需要等待多长时间(小时,分钟,秒)才可以再做一次。但目前我唯一能做的就是将秒数与$calctime

一起计算

知道我该怎么办吗?绝对是我$calctime的尝试失败了:P

2 个答案:

答案 0 :(得分:1)

使用clock format将秒数视为相对于纪元。不要遗漏-gmt 1,否则你会错过几个小时。多少取决于您所在的时区。

putquick "PRIVMSG $channel :you cant because you need to wait \
  [clock format $calctime -format "%T" -gmt 1]"

或者自己计算:

set seconds [expr {$calctime % 60}]
set calctime [expr {$calctime / 60}]
set minutes [expr {$calctime % 60}]
set hours [expr {$calctime / 60}]
putquick "PRIVMSG $channel :you cant because you need to wait \
  $hours hours, $minutes minutes and $seconds seconds"

答案 1 :(得分:0)

要显示用户必须等待的时间,您可以使用eggdrop特定命令duration

if {[info exists queue($variable)} {
    if {[clock seconds] - $queue($variable) < 60*60*24 } {
        set calctime [duration [expr {[clock seconds] - queue($variable)}]]
        putmsg $channel "you cant because you need to wait $calctime"
        return
    }
}
set queue($variable) [clock seconds]
# Do the command stuff