【问题标题】:How to create a poll system for IRC using Pirc如何使用 Pirc 为 IRC 创建投票系统
【发布时间】:2014-02-16 06:11:18
【问题描述】:

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

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

我想要的是这个:

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

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

【问题讨论】:

    标签: java irc voting twitch


    【解决方案1】:

    从我对 PIRC javadocs 的快速浏览来看,您想要的方法似乎是 #onMessage(String channel, 字符串发件人, 字符串登录, 字符串主机名, 字符串消息)

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

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

    【讨论】:

      【解决方案2】:

      正如 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
          }
      }
      

      现在您只需要编写一些代码来捕获“!投票”之后的其余行,并将有关不同投票选项的消息发回频道。

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

      【讨论】:

        猜你喜欢
        • 2015-02-22
        • 2015-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-07
        相关资源
        最近更新 更多