有关频道检索的IRC机器人问题

时间:2014-07-04 11:48:48

标签: java bots irc

我想为每个人保持简短和简单。我一直致力于个人项目,只是为了学习使用pIRC Java API创建一个相对基本的IRC机器人。

事情看起来相对不错但是我已经(并且已经有好几天)在获取当前频道和当前频道用户方面存在问题。

僵尸程序现在只支持每个实例的单个通道,但我希望能够在框架的左侧显示所有当前用户,如下所示:

enter image description here

浅蓝色是我想要显示用户的地方,深蓝色是我想要显示频道消息的地方

在PIRC中,你应该首先调用listChannels()方法,然后在它读取它的每个服务器之后调用onChannelInfo()(String channel,int userCount,String topic)。

问题是我只想按频道名称过滤我的频道,因此@Overriding当前onChannelInfo是不够的。

如果有人之前使用过pIRCBot并且知道发生了什么,请帮忙。我已经在这个问题上工作了好几天,花了无数个小时回去和第四个,似乎什么都没有用。没有任何东西返回,因此从未附加在我的JTextArea上..

TL; DR - 我想在左侧显示当前频道中的用户,在右侧显示消息,但是在检索频道用户和信息方面存在很多问题!

提前感谢一百万。

此外,这里是任何想要查看的人的API - http://www.jibble.org/javadocs/pircbot/

1 个答案:

答案 0 :(得分:0)

好吧,如果有人连接,我似乎能解决问题。

首先,无需调用Pircbot.listChannels()。

listChannels()在收到每个服务器后自动调用onChannelInfo(String channel,int userCount,String topic)。

然而,所需要的只是getChannels()然后是getUsers(),遍历这些用户,获取user.getNick()并将String保存在列表中,然后遍历列表并追加用户。

以下是我用它的方法:

public void appendUsersConnectedToChannel(){
    List<String> users = new ArrayList<>();
    for(User i : Main.bot.getUsers(Main.bot.getChannel())){
        users.add(i.getNick());
    }
    for(String i : users){
        append(i + "\n");
    }
}

问题显然会出现,“你为什么不直接从i.getNick()中追加?我的回答必须是,我不知道。每当我试图这样做时,它就永远不会起作用并没有解释。

这是一种更有效的写作方式(理论上):

public void appendUsersConnectedToChannel(){
    for(User i : Main.bot.getUsers(Main.bot.getChannel())){
        append(i.getNick());
    }
}

再次,这是使用PircBot的API,这是一个相当有趣的工作,并鼓励任何人尝试它,它不是完美无瑕但它的效果非常好!

相关问题