/* org.manalith.ircbot.plugin.missedmessage/MissedMessagePlugin.java ManalithBot - An open source IRC bot based on the PircBot Framework. Copyright (C) 2012 Seong-ho, Cho <darkcircle.0426@gmail.com> This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.manalith.ircbot.plugin.missedmessage; import java.util.Set; import org.manalith.ircbot.ManalithBot; import org.manalith.ircbot.plugin.SimplePlugin; import org.manalith.ircbot.resources.MessageEvent; import org.pircbotx.User; import org.springframework.stereotype.Component; @Component public class MissedMessagePlugin extends SimplePlugin { @Override public String getName() { return "부재중메시지"; } @Override public String getCommands() { return "msg"; } @Override public String getHelp() { return "설 명: 부재중인 분께 메시지를 남겨드립니다, 사용법: !msg [닉] [150자 메시지] // 3개 까지 남길 수 있습니다"; } @Override public void onMessage(MessageEvent event) { String channel = event.getChannel().getName(); String sender = event.getUser().getNick(); String message = event.getMessage(); Set<User> users = event.getChannel().getUsers(); String[] cmdnmsg = message.split("\\s"); if (cmdnmsg[0].equals("!msg")) { if (cmdnmsg.length == 1) { event.respond(getHelp()); } else if (cmdnmsg.length == 2) { String recv = cmdnmsg[1]; for (User u : users) { if (u.getNick().equals(recv)) // check someone who has a matched nick { event.respond(sender + ", ...(물끄럼)..."); return; } } event.respond("남길 메시지가 없습니다"); } else if (cmdnmsg.length >= 3) { String recv = cmdnmsg[1]; for (User u : users) { if (u.getNick().equals(recv)) // check someone who has a matched nick { event.respond(sender + ", ...(물끄럼)..."); return; } } StringBuilder msg = new StringBuilder(); for (int i = 2; i < cmdnmsg.length; i++) { if (i != 2) msg.append(" "); msg.append(cmdnmsg[i]); } MissedMessageRunner runner = new MissedMessageRunner( getResourcePath()); event.respond(runner.addMsg(sender, channel.substring(1) + "." + recv, msg.toString())); // exclude # in the channel name. } } } @Override public void onJoin(String channel, String sender, String login, String hostname) { MissedMessageRunner runner = new MissedMessageRunner(getResourcePath()); if (!runner.isMatchedNickinList(channel.substring(1) + "." + sender)) runner.addMsgSlot(channel.substring(1) + "." + sender); else { String[] msgs = runner.getMsg(channel.substring(1) + "." + sender); if (msgs != null) for (String msg : msgs) { ManalithBot.getInstance().sendMessage(channel, msg); } } } @Override public void onPart(String channel, String sender, String login, String hostname) { MissedMessageRunner runner = new MissedMessageRunner(getResourcePath()); if (!runner.isMatchedNickinList(channel.substring(1) + "." + sender)) runner.addMsgSlot(channel.substring(1) + "." + sender); } }