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;
}
}