package io.shockah.skylark.event;
import org.pircbotx.Channel;
import org.pircbotx.User;
import org.pircbotx.UserHostmask;
import org.pircbotx.hooks.Event;
import org.pircbotx.hooks.events.ActionEvent;
import org.pircbotx.hooks.events.MessageEvent;
import org.pircbotx.hooks.events.NoticeEvent;
import org.pircbotx.hooks.events.PrivateMessageEvent;
import org.pircbotx.hooks.types.GenericChannelUserEvent;
import org.pircbotx.hooks.types.GenericMessageEvent;
public class GenericUserMessageEvent extends Event implements GenericMessageEvent, GenericChannelUserEvent {
protected final Event event;
protected final GenericMessageEvent eMessage;
protected final GenericChannelUserEvent eChannelUser;
public GenericUserMessageEvent(MessageEvent e) {
super(e.getBot());
event = e;
eMessage = e;
eChannelUser = e;
}
public GenericUserMessageEvent(ActionEvent e) {
super(e.getBot());
event = e;
eMessage = e;
eChannelUser = e;
}
public GenericUserMessageEvent(PrivateMessageEvent e) {
super(e.getBot());
event = e;
eMessage = e;
eChannelUser = null;
}
public GenericUserMessageEvent(NoticeEvent e) {
super(e.getBot());
event = e;
eMessage = e;
eChannelUser = null;
}
public Event getEvent() {
return event;
}
public Channel getChannel() {
return eChannelUser != null ? eChannelUser.getChannel() : null;
}
public UserHostmask getUserHostmask() {
return eMessage != null ? eMessage.getUserHostmask() : (eChannelUser != null ? eChannelUser.getUserHostmask() : null);
}
public User getUser() {
return eMessage != null ? eMessage.getUser() : (eChannelUser != null ? eChannelUser.getUser() : null);
}
public String getMessage() {
return eMessage != null ? eMessage.getMessage() : null;
}
public void respond(String response) {
if (eMessage != null)
eMessage.respond(response);
else if (eChannelUser != null)
eChannelUser.respond(response);
}
public void respondPrivateMessage(String response) {
if (eMessage != null)
eMessage.respondPrivateMessage(response);
else if (eChannelUser != null)
throw new UnsupportedOperationException();
}
public void respondWith(String response) {
if (eMessage != null)
eMessage.respondWith(response);
else if (eChannelUser != null)
throw new UnsupportedOperationException();
}
}