1

我是 mirc 脚本的菜鸟,我需要一些帮助。

  1. 有2个irc频道。让我们调用#channel1和#channel2;
  2. 有2个机器人。一个是我的,我们称他为“mybot”(我的机器人在两个频道中)。另一个机器人来自第三人,我们称他为“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”只复制/粘贴“mybot”向“otherBot”询问的信息。

4

1 回答 1

3

一个非常简单(但不是特别好)的方法是当有人在#channel1 中键入!user 时设置一个全局变量,并检查是否在#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 非常繁忙,otherbot 非常滞后,或者您的机器人和其他人都在 #channel2 上键入 !user 时才相关。

于 2012-05-12T22:58:18.683 回答