声音脚本Bug

问题描述:

我正在为mIRC机器人编写一个自动语音/发音脚本片段,当一个昵称是小写字母时,它会发出昵称。然后,当昵称被改变,它的上限应该为人们起名,或者如果有小写昵称的小昵称,它会发出声音。我的问题是,它不会识别对语音的修改或对用户的删除。声音脚本Bug

#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

您的机器人是否在频道中运行?只有当你和脚本一样,你才会触发它。你也有两个'变量'你进行检查,有两个变量有4种可能的组合:1. $ startwithlower($ newnick)== $ false **和**'$ newnick isvoice' 2.' $ startwithlower($ newnick)== $ false **和**'$ newnick isnotvoice' 3.'$ startwithlower($ newnick)== $ true' **和**'$ newnick isvoice' 4.'$ startwithlower ($ newnick)== $ true' **和**'$ newnick isnotvoice' – 2015-09-29 20:13:44

ON NICK是发生在尼克和执行每一个通道,比如果你的机器人要处理很多渠道应该改变你的声音要授予他的声音每个通道的用户操作。

如果机器人只有OP +控制在1路比下面将解决你的问题(你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 
     } 
    } 
}