我正试图为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 ) {
备注:
- /前缀在远程模式下是无用的,它只在命令中使用,用于区分用户输入的文本和命令。
- 如果您希望在别名或远程完成后清除声明的变量,请使用
var %variable-name = value