0

我想帮助创建一个使用 PircBot 的中继机器人。我希望它为每条消息发送一条消息到带有该消息的通道。我希望拥有这个多网络。我做了一个命令

if (split[0].equalsIgnoreCase(commandPrefix + "addnet")) {
    // sendRawLine("QUIT : joining " + split[1]);
    BrookieBot bot = new BrookieBot();
    bot.setVerbose(true);
    addnet = addnet + " " + split[1];
    try {
        bot.connect(split[1]);
        sendMessage("nickserv", "identify pass");
        bot.joinChannel("#brookies-use-of-bot");

    } catch (NickAlreadyInUseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IrcException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    bot = new BrookieBot();
    quit = 6;

    this.joinChannel("#brookies-use-of-bot");
}

这就是我让它连接到多个网络的方式,但我希望它能够协调网络并在每次接收到该通道的消息时发送一条消息,无论是哪个网络。让消息采用这种格式:[<net>] [<sender>] [<message>]. 谢谢你的帮助!我有这个版本:http ://www.jibble.org/pircbot.php

4

2 回答 2

0

1) PircBot isn't good for multi networks. Also, it has several design problems. I would recommend PircBotX.

2) If you really have to use PircBot:

Create one PircBot object per connection.
That will create one thread per PircBot.
Then, create a bus which will distribute the messages amongst PircBot instances.
Be careful with synchronization.

For an example on how to send messages outside PircBot object, see JawaBot, which is based on it.

于 2013-02-03T03:29:31.687 回答
0

我以前做过一个这样的中继机器人。让我们讨论一下你需要什么。

当机器人在要中继的通道中接收到消息时,将使用机器人数组根据服务器和通道组合将消息发送到它们各自的通道,前提是:

  1. 循环中选择的频道不是当前频道
  2. 该频道在待同步频道列表中
  3. 发件人不是机器人名称的一部分,以防止无限循环

退出、部分、加入和其他任何你想要的东西也是如此。

于 2013-02-03T03:20:41.163 回答