0

我是 Java 初学者,开始在 Twitch.tv 上直播。我整晚都在致力于开发一个 IRC 机器人,以简化我频道的审核(我希望拥有使用千篇一律的 IRC 机器人无法提供的定制级别)。

让我绊倒的一件事是民意调查的创建。我查看了 Pirc javadocs,据我所知,没有任何命令可以检查频道操作发送的消息,这对于防止巨魔创建民意调查至关重要,而且我的知识有限,我不知道如何抓住消息中的额外参数。

我想要的是这样的:

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

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

4

2 回答 2

0

从我快速浏览 PIRC javadocs 来看,您想要的方法似乎是 #onMessage(String channel, String sender, String login, String hostname, String message)

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

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

于 2014-02-16T06:23:33.563 回答
0

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

当涉及版主(IRC 术语中的操作员)时,Twitch IRC 服务器的行为方式并不被 PircBot 完全理解,而且我还没有成功使用User.isOp(...)User 类中的方法。我发现成功的是在我的 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”之后的其余行,并将有关不同投票选项的消息发回频道。

您显然需要在某个地方存储您的备选方案以及他们各自获得多少票,我建议只需两个数组, oneString[]和 one int[]

于 2014-02-18T17:42:42.483 回答