条件语句中的$read()



我正试图为IRC聊天机器人编写一个命令,以便每天检查观看者。当有人输入!chirp时,我希望bot可以:1)添加用户名和签到日期,2)如果他们已经在列表中,则只添加签到日期,或者3)如果他们当天已经签到,则什么都不做。我遇到的问题是第二个if语句:似乎认为它是正确的,并在不应该的时候进行。/echo行严格用于调试。

文本文件格式为(每行一个值):

username
username
date
date
username
date
username
etc.
下面是代码(作为远程函数编写):
on *:TEXT:!chirp:#: {
    ;INITIALIZE VARIABLES
    set %i 1
    set %lines $lines(chirp.txt)
    set %line NULL
    set %lineafter NULL
    set %date $adate
    set %temp NULL
while ( %i <= %lines ) {
    set %line $read(chirp.txt, n, %i)
    set %lineafter $calc($readn +1)
    set %temp $calc(%i + 1)
    ;/echo -a %i $char(32) %line $char(32) %lineafter $char(32) %temp
    ;/echo -a $read(chirp.txt, n, %temp)
    if ( %line == $nick ) {
        if( $read(chirp.txt, nw, *%temp*) === %date ) {
            msg $chan /w $nick You've already checked in today!
            /halt
        } else {
            /write -il $+ %lineafter chirp.txt $adate
            msg $chan /w $nick Welcome back! Thanks for checking in!
            /halt
        }
    }
/inc %i
}
/write chirp.txt $nick
/write chirp.txt $adate
}
;END OF CODE

就像你问的前一个问题一样,这个问题也有几个问题。

这在mSL

中是不可接受的
} else {
使用

}
else {

失踪一个空间如果

if ( $read(chirp.txt, nw, *%temp*) === %date ) {

备注:

  1. /前缀在远程模式下是无用的,它只在命令中使用,用于区分用户输入的文本和命令。
  2. 如果您希望在别名或远程完成后清除声明的变量,请使用var %variable-name = value

相关内容

  • 没有找到相关文章

最新更新