发声脚本错误

时间:2015-09-27 07:23:40

标签: mirc

我正在处理一个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
  }
}

1 个答案:

答案 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
        }
    }
}