我正在处理一个mIRC机器人的自动语音/ devoice脚本片段,当一个小号是小号时,它会说出这个缺口。然后,当昵称被改变并且它的上部时,它应该使人们失去兴趣,或者如果上面的昵称是小写nick,那么它就会发出声音。我的问题是,它不会识别对语音的昵称改变或者让用户失望。
#lowercheck on
alias -l _c return #
alias startwithlower {
if ( $1 ) {
return $islower($left($regsubex($$1,/\W+/g,$null),1))
}
else return $false
}
on @*:JOIN:#Tristram_Halls:{
if ( $startwithlower($nick) == $true ) {
mode $_c +v $nick
}
}
on @*:NICK:{
if ( ( $startwithlower($newnick) == $false ) && ( $newnick !isvoice $_c ) ) {
mode $_c -v $newnick
}
elseif ( ( $startwithlower($newnick) == $true ) && ( $newnick isvoice $_c ) ) {
mode $_c +v $newnick
}
}
答案 0 :(得分:1)
ON NICK
是针对每个频道发生的操作,而不是如果您的机器人应该处理多个频道,它应该改变您在每个频道中为用户发声的方式。
如果机器人在1个频道中只有OP +控制,则以下内容将解决您的问题(在isvoice
之间切换两种情况):
on @*:NICK:{
if ( ( $startwithlower($newnick) == $false ) && ( $newnick isvoice $_c ) ) {
mode $_c -v $newnick
}
elseif ( ( $startwithlower($newnick) == $true ) && ( $newnick !isvoice $_c ) ) {
mode $_c +v $newnick
}
}
更好的实施方式是:
#lowercheck on
alias -l _c return #
alias startwithlower {
return $1 && $islower($left($regsubex($$1,/\W+/g,$null),1))
}
on @*:JOIN:#Tristram_Halls:{
if ($startwithlower($nick)) {
mode $_c +v $nick
}
}
on @*:NICK:{
if ($startwithlower($newnick)) {
if ($newnick !isvoice $_c) {
mode $_c +v $newnick
}
}
else
{
if ($newnick isvoice $_c) {
mode $_c -v $newnick
}
}
}