# HG changeset patch # User Franck Deroche # Date 1179606271 -7200 # Node ID 8391a973c9dc8324812ac6efa8faddd775d1cef9 # Parent c7972ff66484e368cb583a9abfb4cc3076849d5d Possibilite d'ajouter des callback. Concretement, il est possible d'ajouter dans les codes des objets implementant la classe Callback. Quand un message correspondant sera recu, on executera l'action associee. diff -r c7972ff66484 -r 8391a973c9dc org/defr/bots/Bot.java --- a/org/defr/bots/Bot.java Sat May 19 17:47:17 2007 +0200 +++ b/org/defr/bots/Bot.java Sat May 19 22:24:31 2007 +0200 @@ -2,6 +2,8 @@ import java.io.IOException; import java.io.UnsupportedEncodingException; +import java.util.HashMap; +import java.util.Map; import org.jibble.pircbot.IrcException; import org.jibble.pircbot.NickAlreadyInUseException; @@ -14,9 +16,11 @@ */ public class Bot extends PircBot { protected Configuration conf; + protected Map messageListeners; public Bot() { super(); + messageListeners = new HashMap(); } /** @@ -24,6 +28,7 @@ * @param botName */ public Bot(String botName) { + this(); conf = new Configuration("conf/" + botName + ".xml"); setName(conf.getBotName()); setLogin(conf.getBotName()); @@ -35,6 +40,17 @@ } } + public void onMessage(String channel, String sender, String login, String host, String message) { + if(messageListeners.containsKey(message.toLowerCase())) { + messageListeners.get(message.toLowerCase()).go(sender, channel, message); + messageListeners.remove(message.toLowerCase()); + } + } + + public void addMessageListener(String message, Callback callback) { + messageListeners.put(message.toLowerCase(), callback); + } + /** * Connexion au serveur IRC défini dans le fichier de configuration * @throws NickAlreadyInUseException diff -r c7972ff66484 -r 8391a973c9dc org/defr/bots/Callback.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/org/defr/bots/Callback.java Sat May 19 22:24:31 2007 +0200 @@ -0,0 +1,5 @@ +package org.defr.bots; + +public interface Callback { + public void go(String sender, String replyTo, String message); +}