如何使用Pirc为IRC创建一个轮询系统

时间:2014-02-16 06:11:18

标签: java irc voting twitch

我是初学java用户,并在Twitch.tv上开始流光。我一直在努力开发一个整夜的IRC机器人,以简化我的频道的审核(我想要使用cookie切割机IRC机器人无法提供的那种级别的自定义)。

让我感到羞耻的一件事是投票创作。我查看了Pirc javadocs并且没有命令,因为我可以看到检查通道op发送的消息,这对于保持巨魔不能创建民意测验,并且凭借我有限的知识,我不知道如何抓住来自消息的额外参数。

我想要的是:

!poll <question> <c1> <c2> <c3> <seconds>

这里有什么帮助吗?我将在每个流的outro上将您添加到我的感谢屏幕。

2 个答案:

答案 0 :(得分:0)

从我的快速浏览PIRC javadocs看起来你想要的方法是#onMessage(String channel,                          字符串发送者                          字符串登录,                          字符串主机名,                          字符串消息)

从这里,您可以获得所需的任何信息。现在,根据您处理传入消息的方式,您只需搜索命令,在这种情况下,您将从消息字符串中获取“!poll”。从那里,您可以进一步解析信息,并用它做你想做的事。

如果您尚未使用它们,则pirc的javadocs位于此处:http://www.jibble.org/javadocs/pircbot/index.html

答案 1 :(得分:0)

正如Jdsfighter所说,你需要使用PircBot超类中的onMessage(...)方法。只要将消息发送到您的频道,就会调用此方法。我有点假设你现在已经理解了这一点,因为在制作IRC机器人时,机器人对聊天的反应是alpha和omega。

当涉及版主(IRC术语中的操作员)时,Twitch IRC服务器的行为方式完全不被PircBot理解,而且我还没有成功使用User类中的User.isOp(...)方法。我发现成功的是在我的Bot类(不是主类)中包含以下内容:

Set<String> OPs = new HashSet<String>();

protected void onUserMode(String channel, String sourceNick, String sourceLogin, String sourceHostname, String recipient) {
    recipient = recipient.split(" ")[2];
    OPs.add(recipient);
}

只要您在控制台中看到以MODE开头的行,就会调用此方法,如下所示:

jtv MODE #channel +o moderatorName

现在,您需要创建一个在收到的邮件以"!poll"开头时调用的方法,并检查邮件的发件人是否在OP集中。

以下是您的概要,放在onMessage()方法

if (message.toLowerCase().startsWith("!poll") {
    if (OPs.contains(sender)) {
            //TODO Add body
    }
}

现在你只需要制作一些代码,以便在“!Poll”之后捕获剩余的行,然后将一条消息发回到关于不同民意调查选项的频道。

你显然需要在某个地方存储您的替代方案以及每个方案获得多少票,我建议只使用两个数组,一个String[]和一个int[]