我的当前代码存在问题。
on *:TEXT:*text*:#:{
if ($nick isin $read(test.txt, 1)) {
msg $chan working.
}
}
我遇到的问题是如果缺口“User1”在test.txt中,并且“User12”键入文本,它将检测到它是因为User1在test.txt中!如果“User1”在第1行,那么我怎么能这样做“User12”不会说工作。
答案 0 :(得分:2)
问题在于User1
包含在第一行User12
中,而您正在isin
进行搜索。
您可以将正则表达式$+(\b,$nick,\b)
与 \ b 字边界一起使用,以确保搜索到的 $ nick 之前或之后没有文字
on *:TEXT:*text*:#:{
var %line = $read(test.txt, 1)
if ($regex(%line, $+(\b,$nick,\b))) {
msg $chan working.
}
}
答案 1 :(得分:2)
另一种使其有效的方法是使用标识符$ istok ...
on *:TEXT:*text*:#:{
if ($istok($nick,$read(test.txt,1),32)) {
msg $chan working.
}
}
因为它只搜索特定字符串的特定标记... $ istok标识符将与 \ b **** \ b 正则表达式边界
进行相同的匹配