import org.jibble.pircbot.*;import javax.swing.*;import java.util.*;import java.util.Timer;import java.io.*; public class iKitty extends PircBot { private Timer unbanTimer; private TimerUnbanTask unbanTask = new TimerUnbanTask(); String noise; public iKitty() { this.setName("iKitty"); this.setLogin("iKitty"); sendMessage("nickserv", "identify Kitty_Cat"); this.unbanTask.setBot(this); } public void onJoin(String channel, String sender, String login, String hostname) { // We only want to change ourself. if (sender.equalsIgnoreCase(this.getNick())) { // Set noise to quiet. noise = "quiet"; // Give us the modes we are entitled to. setMode(getNick(), "+T"); setMode(getNick(), "+p"); setMode(getNick(), "+B"); } } public void onDisconnect() { try { reconnect(); } catch (IOException e) { } catch (IrcException e) { } } public void onMessage(String channel, String sender, String login, String hostname, String message) { // Check for annoying mesages. if (message.startsWith("Playing: [") && message.endsWith("mp3 ]")) { if (noise.equals("noisy")) { // Make sure that they can't talk on this channel for at least a minute. // "Nice" way to give them a hint. ban(channel, hostname); kick(channel, sender, "The mp3 script isn't welcome. Turn it off. Your ban will be removed in 1 minute"); // Tell our handler what to allow again. this.unbanTask.setInfo(channel, hostname); // Start their timer. this.unbanTimer = new Timer(); this.unbanTimer.schedule(unbanTask, 60 * 1000, 0); unbanTimer.purge(); } else {} } if (message.equals("!noisy")) { if (sender.equals("Kitty_Cat")) { noise = "noisy"; } if (sender.equals("Vesuvius")) { noise = "noisy"; } } if (message.equals("!quiet")) { if (sender.equals("Kitty_Cat")) { noise = "quiet"; } } } } // This is what is fired when the timer is up. class TimerUnbanTask extends TimerTask { // Teh data we need to undo our ban. private String channel = ""; private String hostmask = ""; // The bot we are doing this for. private iKitty bot; // Default constructor. Doesn't do anything. public TimerUnbanTask() {} // Set the info at creation. public TimerUnbanTask(String channel, String hostmask) { this.setInfo(channel, hostmask); } // Set the info at creation, including the bot. public TimerUnbanTask(String channel, String hostmask, iKitty bot) { this.setInfo(channel, hostmask); this.setBot(bot); } // Set the info after the object has been created. public void setInfo(String channel, String hostmask) { this.channel = channel; this.hostmask = hostmask; } // Register a new bot. public void setBot(iKitty bot) { this.bot = bot; } // Unban the individual. public void run() { this.bot.unBan(this.channel, this.hostmask); } }