package io.shockah.skylark.commands;
import io.shockah.skylark.event.GenericUserMessageEvent;
public abstract class Command<T, R> {
public Integer getLineLimit(CommandCall call, T input) {
//return null;
int maxLines = 3;
if (call.inputMedium == CommandCall.Medium.Channel && call.event.getChannel().isOp(call.event.getUser()))
maxLines = 5;
return maxLines;
}
public T prepareChainedCallInput(GenericUserMessageEvent e, CommandResult<T> previousResult) {
return previousResult.value;
}
public T convertToInput(GenericUserMessageEvent e, Object input) throws CommandParseException {
if (input == null)
return parseInput(e, null);
return parseInput(e, input.toString());
}
public abstract T parseInput(GenericUserMessageEvent e, String input) throws CommandParseException;
public abstract CommandResult<R> call(CommandCall call, T input);
}