@Override public boolean isCommand(IncomeMessage message) { return pattern.matcher(message.content()).find(); }
@Override public boolean canProcess(IncomeMessage message) { return !message.hasCommand() && patterns.stream() .anyMatch(pattern -> pattern.matcher(message.content()).find()); }
public MessageCommand extract(IncomeMessage message) { Matcher matcher = pattern.matcher(message.content()); if (matcher.find()) { String command = matcher.group("command"); String args = matcher.group("arguments"); return new ExtractedCommand(message, command, args != null ? args.trim() : ""); } else { throw new BotException(message.content() + " is not a command"); } }
@Override public boolean isCommand(IncomeMessage message) { return message.isPrivate() || prefix.matcher(message.content()).find(); }
public MessageCommand extract(IncomeMessage message) { StringBuilder command = new StringBuilder(message.content()); int firstSpace = command.indexOf(" "); if (firstSpace < 0) { // no arguments return new ExtractedCommand(message, command.toString(), ""); } else { return new ExtractedCommand(message, command.substring(0, firstSpace), command.substring(firstSpace, command.length()).trim() ); } }
public MessageCommand extract(IncomeMessage message) { String content = message.content(); Matcher matcher = prefix.matcher(content); if (matcher.find()) { content = content.substring(matcher.end()); } int firstSpace = content.indexOf(" "); if (firstSpace < 0) { // no arguments return new ExtractedCommand(message, content, ""); } else { return new ExtractedCommand(message, content.substring(0, firstSpace), content.substring(firstSpace, content.length()).trim() ); } }
@Override public void process(IncomeMessage message) { Matcher matcher = pattern.matcher(message.content()); StringBuilder replyMessage = new StringBuilder(); Set<String> evaluated = new HashSet<>(); while (matcher.find()) { String term = matcher.group("term"); String operation = matcher.group("operation"); if (!evaluated.contains(term.toLowerCase())) { int value = update(term, operation); replyMessage.append(buildReplyMessage(term, value)).append("\n"); evaluated.add(term.toLowerCase()); } } if (replyMessage.length() > 0) { // remove the last \n replyMessage.deleteCharAt(replyMessage.length() - 1); message.sendBack(replyMessage.toString()); } }