package org.royaldev.royalbot.commands.impl; import org.apache.commons.lang3.StringUtils; import org.pircbotx.User; import org.pircbotx.hooks.events.MessageEvent; import org.pircbotx.hooks.types.GenericMessageEvent; import org.royaldev.royalbot.BotUtils; import org.royaldev.royalbot.RoyalBot; import org.royaldev.royalbot.commands.CallInfo; import org.royaldev.royalbot.commands.NoticeableCommand; import java.util.List; import java.util.Random; public class BaxFaxCommand extends NoticeableCommand { private final RoyalBot rb = RoyalBot.getInstance(); private final Random r = this.rb.getRandom(); @Override public void onCommand(final GenericMessageEvent event, final CallInfo callInfo, final String[] args) { final List<String> baxfax = this.rb.getConfig().getBaxFax(); if (baxfax.size() < 1) { notice(event, "No baxfax registered!"); return; } if ("mbaxter".equalsIgnoreCase(event.getUser().getNick())) { event.respond("You grace us with your presence. All praise our LORD!"); } final boolean noPing = args.length > 0 && "noping".equalsIgnoreCase(args[0]); String response = "[baxfax] " + baxfax.get(this.r.nextInt(baxfax.size())); if (noPing && event instanceof MessageEvent) { final MessageEvent me = (MessageEvent) event; for (final User u : me.getChannel().getUsers()) { int length = u.getNick().length(); for (final int index : BotUtils.indicesOf(response, u.getNick())) { response = response.substring(0, index) + BotUtils.flip(response.substring(index, index + length)) + response.substring(index + length, response.length()); } } } if ("xafxab".equalsIgnoreCase(callInfo.getLabel())) { int index; while ((index = StringUtils.indexOfIgnoreCase(response, "baxfax")) != -1) { response = response.substring(0, index) + StringUtils.reverse(response.substring(index, index + 6)) + response.substring(index + 6, response.length()); } } event.respond(response); } @Override public String getName() { return "baxfax"; } @Override public String getUsage() { return "<command>"; } @Override public String getDescription() { return "Gets a random mbaxter fact!"; } @Override public String[] getAliases() { return new String[]{"xafxab"}; } @Override public CommandType getCommandType() { return CommandType.BOTH; } @Override public AuthLevel getAuthLevel() { return AuthLevel.PUBLIC; } }