package io.shockah.skylark.factoids; import io.shockah.skylark.commands.CommandCall; import io.shockah.skylark.commands.CommandParseException; import io.shockah.skylark.commands.CommandResult; import io.shockah.skylark.event.GenericUserMessageEvent; import io.shockah.skylark.factoids.db.Factoid; public class SimpleFactoidCommand extends AbstractFactoidCommand<String, String> { public SimpleFactoidCommand(Factoid factoid) { super(factoid); } @Override public String prepareChainedCallInput(GenericUserMessageEvent e, CommandResult<String> previousResult) { return previousResult.toString(); } @Override public String parseInput(GenericUserMessageEvent e, String input) throws CommandParseException { return input; } @Override public CommandResult<String> call(CommandCall call, String input) { String output = factoid.raw; input = input == null ? "" : input; String user = call.event.getUser().getNick(); String bot = call.event.getBot().getUserBot().getNick(); String inputOrUser = input.isEmpty() ? user : input; String channel = call.event.getChannel() == null ? null : call.event.getChannel().getName(); String hostname = call.event.getUserHostmask().getHostname(); output = output.replaceAll("(?iu)\\%(input|inp)\\%", input); output = output.replaceAll("(?iu)\\%(user|sender)\\%", user); output = output.replaceAll("(?iu)\\%bot\\%", bot); output = output.replaceAll("(?iu)\\%(inputoruser|ioru)\\%", inputOrUser); output = output.replaceAll("(?iu)\\%(hostname|host)\\%", hostname); if (channel != null) output = output.replaceAll("(?iu)\\%channel\\%", channel); return CommandResult.of(output); } }