package org.royaldev.royalbot.commands.impl;
import org.pircbotx.User;
import org.pircbotx.hooks.types.GenericMessageEvent;
import org.royaldev.royalbot.BotUtils;
import org.royaldev.royalbot.RoyalBot;
import org.royaldev.royalbot.auth.Auth;
import org.royaldev.royalbot.commands.CallInfo;
import org.royaldev.royalbot.commands.ChannelCommand;
import org.royaldev.royalbot.commands.IRCCommand;
import org.royaldev.royalbot.handlers.CommandHandler;
public class HelpCommand implements IRCCommand {
private final RoyalBot rb = RoyalBot.getInstance();
@Override
public void onCommand(GenericMessageEvent event, CallInfo callInfo, String[] args) {
final CommandHandler ch = rb.getCommandHandler();
final User u = event.getUser();
final boolean userIsAdmin = Auth.checkAuth(u).isAuthed();
final boolean isSuperAdmin = userIsAdmin && rb.getConfig().getSuperAdmin().equalsIgnoreCase(u.getNick());
u.send().message("Channel command prefix: \"" + rb.getCommandPrefix() + "\"");
if (args.length < 1) {
for (IRCCommand ic : ch.getAll()) {
if (ic instanceof ChannelCommand) continue;
if (ic.getAuthLevel() == AuthLevel.ADMIN && !userIsAdmin) continue;
if (ic.getAuthLevel() == AuthLevel.SUPERADMIN && !isSuperAdmin) continue;
u.send().message(BotUtils.getHelpString(ic));
}
} else {
final IRCCommand ic = ch.get(args[0]);
if (ic == null) {
event.respond("No such command!");
return;
}
u.send().message(BotUtils.getHelpString(ic));
}
}
@Override
public String getName() {
return "help";
}
@Override
public String getUsage() {
return "<command> (command)";
}
@Override
public String getDescription() {
return "Displays all commands!";
}
@Override
public String[] getAliases() {
return new String[0];
}
@Override
public CommandType getCommandType() {
return CommandType.BOTH;
}
@Override
public AuthLevel getAuthLevel() {
return AuthLevel.PUBLIC;
}
}