package org.manalith.ircbot.plugin.alias; import java.util.Date; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateFormatUtils; import org.manalith.ircbot.plugin.SimplePlugin; import org.manalith.ircbot.resources.MessageEvent; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class AliasPlugin extends SimplePlugin { @Autowired private AliasDao aliasDao; @Override public String getName() { return "별칭"; } @Override public String getCommands() { return "!alias"; } @Override public String getHelp() { return "가르치기 : !alias [명령] [스크립트], 보기 : !alias [명령], 사용하기 : ![명령]"; } @Override public void onMessage(MessageEvent event) { // 악의 혹은 실수에 의한 재귀 호출 alias 명령을 차단한다. if (event.isRecursive()) { return; } String message = event.getMessage(); String sender = event.getUser().getNick(); Alias a = null; if (message.equals("!alias")) { event.respond(getHelp()); } else if (message.startsWith("!alias ")) { String[] arr = message.split(" "); if (arr.length >= 3) { a = new Alias(); a.alias = arr[1]; if (arr.length > 3) a.script = StringUtils.join(arr, ' ', 2, arr.length); else a.script = arr[2]; a.author = sender; a.date = new Date(); aliasDao.save(a); event.respond("Alias를 배웠습니다."); } else if (arr.length == 2) { a = aliasDao.findByWord(arr[1]); if (a != null) { event.respond(String.format("[%s] %s -%s(%s) ", a.alias, a.script, a.author, DateFormatUtils.format(a.date, "yyyy-MM-dd"))); } } else { event.respond(getHelp()); } } else if (message.startsWith("!")) { a = aliasDao.findByWord(StringUtils.substring(message, 1)); if (a != null) { event.setMessage(a.getScript()); event.restart(); } } } }