/** * Copyright (C) 2013 Alexander Szczuczko * * This file may be modified and distributed under the terms * of the MIT license. See the LICENSE file for details. */ package ca.szc.keratin.core.event.message.recieve; import org.pmw.tinylog.Logger; import ca.szc.keratin.core.event.message.MessageReceive; import ca.szc.keratin.core.event.message.interfaces.DirectlyReplyable; import ca.szc.keratin.core.event.message.interfaces.PrivatelyReplyable; import ca.szc.keratin.core.event.message.interfaces.Replyable; import ca.szc.keratin.core.net.io.OutputQueue; import ca.szc.keratin.core.net.message.InvalidMessageParamException; import ca.szc.keratin.core.net.message.IrcMessage; public class ReceiveNotice extends MessageReceive implements Replyable, DirectlyReplyable, PrivatelyReplyable { public static final String COMMAND = "NOTICE"; private final String channel; private final String sender; private final String text; public ReceiveNotice( OutputQueue replyQueue, IrcMessage message ) { super( replyQueue, message ); if ( message.getPrefix() != null ) { int splitPoint = message.getPrefix().indexOf( '!' ); if ( splitPoint != -1 ) sender = message.getPrefix().substring( 0, message.getPrefix().indexOf( '!' ) ); else sender = message.getPrefix(); } else sender = ""; if ( !message.getParams()[0].startsWith( "#" ) ) channel = sender; else channel = message.getParams()[0]; text = message.getParams()[1].substring( 1 ); } public String getChannel() { return channel; } public String getSender() { return sender; } public String getText() { return text; } @Override public void reply( String reply ) { try { getReplyQueue().notice( channel, reply ); } catch ( InvalidMessageParamException e ) { Logger.error( e, "Error creating reply message" ); } } @Override public void replyDirectly( String reply ) { reply( sender + ": " + reply ); } @Override public void replyPrivately( String reply ) { try { getReplyQueue().notice( sender, reply ); } catch ( InvalidMessageParamException e ) { Logger.error( e, "Error creating reply message" ); } } }