mIRC bot - 在2个通道中复制/粘贴行

时间:2012-05-12 14:56:14

标签: irc mirc chatbot

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

  1. 有2个irc频道。我们再调用#channel1和#channel2;
  2. 有两个机器人。一个是我的,让我们称他为“mybot”(我的机器人在两个频道)。另一个机器人来自第三人,让我们称他为“otherBot”;
  3. 我需要的是......让我举一个例子来更好地解释。

    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”提供的信息,然后粘贴它在#channel1上。我只希望“mybot”只复制/粘贴“mybot”向“otherBot”询问的信息。

1 个答案:

答案 0 :(得分:3)

一个非常简单(但不是特别好)的方法可能是当有人在#channel1中键入!user时设置一个全局变量,并检查是否在正在侦听的另一部分中设置了这个#通道2。例如:

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上输入!用户的时间只有几分之一秒海誓山盟。