1

私は mirc スクリプトの初心者で、助けが必要です。

  1. 2 つの IRC チャネルがあります。次に、#channel1 と #channel2 を呼び出しましょう。
  2. 2ボットあります。1 つは私のものです。彼を「mybot」と呼びましょう (私のボットは両方のチャネルにあります)。もう 1 つのボットは第三者からのものです。彼を「otherBot」と呼びましょう。

私が必要としているのは… よりよく説明するために例を挙げましょう。

a) #channel1 でいくつかのユーザー タイプ:

[14:38:48] <@someuser> !user xpto

現時点では、「mybot」は両方のチャンネルにあります。彼はコマンド「!user*」を読み取り、それを #channel2 にコピーして貼り付けます。「otherBot」はコマンド「!user*」を認識し、このコマンドに関する情報を貼り付けます。

b) したがって、#channel2 には次のようなものが追加されます。

[14:38:50] <@ mybot > !user xpto
[14:38:52] <@ otherBot > User name is xpto and he likes popatos.

「mybot」が「otherBot」から提供された情報を読み取り、それを #channel1 に貼り付けます。

c) #channel1 で:

[14:38:54] <@ mybot > User name is xpto and he likes popatos.

これまでのところ、リモートにファウリング コードがあります。

on *:TEXT:!user*:#channel1 {
  /msg # channel2 $1-
}

on *:TEXT:User name*:#channel2 {
  if $address($nick,2) == *!*@otherBot.users.gameea {
    /msg # channel1 $1-
   }
 }

これは正常に動作しますが、問題があります: 他の誰か (「mybot」ではない) が #channel2 に「!user kakaka」と入力すると、「mybot」も「otherBot」によって提供された情報をコピーして貼り付け、# に貼り付けます。チャンネル1。そして、「mybot」が「otherBot」に尋ねる情報だけを「mybot」にコピー アンド ペーストしたいだけです。

4

1 に答える 1

3

これを行うための非常に簡単な (しかし特に良い方法ではありません) 方法は、誰かが !user を #channel1 に入力したときにグローバル変数を設定し、これが #channel2 でリッスンしている他の部分で設定されているかどうかを確認することです。例えば:

on *:TEXT:!user *:#channel1: {
  set %repeatUser 1
  msg channel2 $1-
}

on *:TEXT:User name*:#channel2: {
  if ($address($nick,2) == *!*@otherBot.users.gameea && %repeatUser == 1) {
    unset %repeatUser
    msg #channel1 $1-
  }
}

これは完全な解決策ではありません。スクリプトが「!user」を他のチャネルに送信してからボットが応答するまでの間にボットが何か他のことを言うと、ただし、これは #channel2 が途方もなく忙しい場合、他のボットが非常に遅い場合、またはあなたのボットと他の誰かが #channel2 で !user を 1 秒以内に入力した場合にのみ関係します。

于 2012-05-12T22:58:18.683 に答える