语音脚本错误



我正在为mIRC机器人编写自动语音/语音脚本片段,当nick是小写时,它会发出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
  }
}

ON NICK是发生在nick上的动作,并为每个通道执行,如果你的bot应该处理许多通道,它应该改变你在每个通道中向用户发出声音的方式,你想授予他一个声音。

如果bot在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
        }
    }
}

相关内容

  • 没有找到相关文章

最新更新