【发布时间】:2017-01-01 03:31:04
【问题描述】:
以下是我为我不断增长的与鸟类相关的聊天机器人编写的一些代码。
如果我使用 mIRC 控制台,我可以执行别名块(例如 //fchirp [user] ),但由于某种原因,机器人不承认有人从主聊天窗口输入“!chirp”。它甚至不执行 on-text-event 中的第一个 //echo 语句。
最奇怪的部分是:这段代码以前有效,我一直在经常使用它。除了用于调试的 //echo 语句之外,我没有更改此处显示的任何部分。
addWorms 和 giveWorms 都是我编写的别名,它们可以正常运行。我遇到的主要问题是当有人键入“!啁啾”时让机器人做任何事情。 (应该注意,代码中前面的其他不相关的文本事件可以使用相同的语法正常工作。)
alias fchirp {
/writeini chirp.ini $1 First $adate
/writeini chirp.ini $1 Last $adate
/writeini chirp.ini $1 Count 1
msg $chan /w $1 Welcome to the Nest! Thanks for checking in! :D
addWorms $1
msg $chan /w $1 Type !worms to see how many you have!
//echo -a first chirp
}
alias chirp {
var %a $readini(chirp.ini, $1, Count)
var %count $calc( %a + 1 )
if ( $readini(worms.ini, $1, Breed) == $null ) {
addWorms $1
//echo -a addWorms done
}
if ( $readini(chirp.ini, $1, Last) === $adate ) { msg $chan /w $nick You've already checked in today! BabyRage | halt }
/writeini chirp.ini $1 Last $adate
/writeini chirp.ini $1 Count %count
//echo -a last/count updated
if ( $calc( $readini(chirp.ini, $1, Count) % 5 ) == 0 ) {
giveWorms $1 10
msg $chan /w $1 Welcome back! Lucky day!
}
else {
giveWorms $1 5
msg $chan /w $1 Welcome back! Here's your worms! Don't forget to !hunt ! ^_^
}
//echo -a giveWorms
}
on *:TEXT:!chirp:#: {
//echo -a acknowledged
if ( $readini(chirp.ini, $nick, First) != $null ) {
//echo -a true
chirp $nick
}
else {
//echo -a false
fchirp $nick
}
msg $chan /w $nick Don't forget to !hunt for worms! :D
}
【问题讨论】:
-
你有
TEXT:!*:#:吗?这可能是由于其他包含匹配项的 TEXT 事件造成的。尝试在新的 mIRC 远程文件上添加发布的代码,如果这可以解决此问题,则意味着上面的代码会干扰 TEXT 事件的捕获(错误或另一个 TEXT 事件包含匹配模式)。此外,/对远程代码毫无用处,它仅用于识别控制台 mIRC 窗口的文本与命令。 -
完美!谢谢你。我有一个命令:
-
(cont.) ...有一个命令可以在任何人键入任何内容时计数:on :TEXT::#: { /* do stuff */ } 有吗两者兼得的方法?
-
是的,我会尽快发布答案。
-
我已经发布了完整的答案。