我正在为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
}
}
}