1

ニックが小文字の場合、mIRC ボットの自動音声/音声削除スクリプト スニペットに取り組んでいます。次に、ニックネームが変更され、それが大文字の場合、人々の発声を解除する必要があります。または、大文字のニックネームから小文字のニックネームへのニックネームがある場合は、それらを声に出します。私の問題は、ユーザーの音声または音声削除へのニックネームの変更を認識しないことです。

#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
  }
}
4

1 に答える 1

1

ON NICKボットが多くのチャンネルを処理する必要がある場合は、ユーザーに声を与えたいすべてのチャンネルでユーザーに声をかける方法を変更する必要があります。

isvoiceボットが 1 つのチャネルでのみ OP+ コントロールを持っている場合は、次の方法で問題を解決できます (両方のケースで切り替えました)。

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
        }
    }
}
于 2015-10-05T01:29:00.327 に答える