Beispiel #1
0
  @Test
  public void testLastActionByRockj() {
    Event event = history.getLastEvents(rockj).get(0);
    assertEquals((PrivMsgEvent) event, event);
    PrivMsgEvent privMsgEvent = (PrivMsgEvent) event;

    assertEquals("This is a trolling message, what's up?!", privMsgEvent.getMessage());
    assertEquals(2, history.getLastEvents(rockj).size());
  }
  /*
   * Event handling
   */
  private void handleMessage(Event e) {
    PrivMsgEvent pme = (PrivMsgEvent) e;
    String message = pme.getMessage();

    // Process the trigger
    if (message.split(" ")[0].equals("!help")
        || message.split(" ")[0].equals("!hjelp")
        || message.split(" ")[0].equals("??")) {
      String sender = pme.getSender();
      Network network = pme.getNetwork();

      Set<Flag> userFlags;

      if (flagsPlugin == null) {
        // If this dependency isn't loaded properly, fallback to show only triggers that anyone can
        // see
        logger.debug("Missing dependency; FlagsPlugin. Showing basic triggers.");
        userFlags = new HashSet<Flag>();
        userFlags.add(Flag.ANYONE);
      }
      // Fetch flags for the user
      else {
        if (pme.isChannelMessage()) {
          userFlags = flagsPlugin.getFlags(network, pme.getChannel(), sender);
        } else {
          userFlags = flagsPlugin.getFlags(network, sender);
        }
      }

      // Remove the first word
      String helpTrigger = message.replaceAll("^[^\\s]+\\s?", "");

      // If there is no argument other than the help trigger, display all the triggers
      if (helpTrigger.isEmpty()) {

        wand.sendMessageToTarget(
            network,
            sender,
            "Here is a list of available triggers, use !help <trigger> for more info;");

        String output = "";

        for (HelpItem helpItem : helpItems) {
          if (userFlags.contains(helpItem.getFlagRequired())) {
            if (!output.isEmpty()) {
              output += ", ";
            }
            output += helpItem.getTrigger();

            // If length of the current output is more than 100 chars, send it
            if (output.length() > 100) {
              wand.sendMessageToTarget(network, sender, output);
              output = "";
            }
          }
        }

        // Send the rest if there's anything
        if (!output.isEmpty()) {
          wand.sendMessageToTarget(network, sender, output);
        }
      }
      // If there are more words, display help text for the supplied trigger
      else {
        boolean found = false;

        for (HelpItem helpItem : helpItems) {
          if (helpItem.getTrigger().equals(helpTrigger)) {
            if (userFlags.contains(helpItem.getFlagRequired())) {
              for (String helpText : helpItem.getHelpText()) {
                wand.sendMessageToTarget(network, sender, helpText);
              }
            } else {
              wand.sendMessageToTarget(
                  network, sender, "You do not have the flag required to use that command.");
            }

            found = true;
          }
        }

        // If no matching and allowed trigger
        if (!found) {
          wand.sendMessageToTarget(
              network, sender, String.format("No help item for '%s'", helpTrigger));
        }
      }
    }
  }