Java tutorial
/** * Copyright (C) 2010-2014 Leon Blakey <lord.quackstar at gmail.com> * * This file is part of PircBotX. * * PircBotX 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. * * PircBotX 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 * PircBotX. If not, see <http://www.gnu.org/licenses/>. */ package org.pircbotx.hooks; import java.util.Date; import java.util.Map; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.pircbotx.Configuration; import org.pircbotx.UserHostmask; import org.pircbotx.Utils; import org.pircbotx.hooks.events.FingerEvent; import org.pircbotx.hooks.events.PingEvent; import org.pircbotx.hooks.events.ServerPingEvent; import org.pircbotx.hooks.events.TimeEvent; import org.pircbotx.hooks.events.VersionEvent; import org.pircbotx.hooks.managers.ListenerManager; import org.pircbotx.hooks.types.GenericMessageEvent; /** * Several standard IRC client default responses. Any listener that wishes to * duplicate functionality should <b>replace</b> * CoreHooks in the {@link ListenerManager} with a subclass of this class (this * way you don't have to duplicate all the functionality). * <p> * <b>Warning:</b> Removing CoreHooks without providing a replacement will * produce undesired results like server timeouts due to not responding to * pings. * <p/> * @see * org.pircbotx.Configuration.Builder#replaceCoreHooksListener(org.pircbotx.hooks.CoreHooks) * @author Leon Blakey */ @Slf4j public class CoreHooks extends ListenerAdapter { @Override public void onFinger(FingerEvent event) { event.getUser().send().ctcpResponse("FINGER " + event.getBot().getConfiguration().getFinger()); } @Override public void onPing(PingEvent event) { event.getUser().send().ctcpResponse("PING " + event.getPingValue()); } @Override public void onServerPing(ServerPingEvent event) { event.getBot().sendRaw().rawLine("PONG " + event.getResponse()); } @Override public void onTime(TimeEvent event) { event.getUser().send().ctcpResponse("TIME " + new Date().toString()); } @Override public void onVersion(VersionEvent event) { event.getUser().send().ctcpResponse("VERSION " + event.getBot().getConfiguration().getVersion()); } @Override public void onGenericMessage(GenericMessageEvent event) throws Exception { Configuration config = event.getBot().getConfiguration(); UserHostmask hostmask = event.getUserHostmask(); //There must be a passwork and on success text //The hostmask must contain "nickserv" //The message must contain the on success text if (config.getNickservOnSuccess() != null && StringUtils.containsIgnoreCase(hostmask.getHostmask(), config.getNickservNick()) && StringUtils.containsIgnoreCase(event.getMessage(), config.getNickservOnSuccess())) { log.info("Successfully identified to nickserv"); Utils.setNickServIdentified(event.getBot()); if (config.isNickservDelayJoin()) { for (Map.Entry<String, String> channelEntry : config.getAutoJoinChannels().entrySet()) event.getBot().sendIRC().joinChannel(channelEntry.getKey(), channelEntry.getValue()); } } } }