Advertisement
Shinmera

Kizai Notify Module

Aug 6th, 2013
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.71 KB | None | 0 0
  1. package org.tymoonnext.bot.module.irc;
  2.  
  3. import NexT.db.mongo.DataModel;
  4. import NexT.db.mongo.MongoException;
  5. import NexT.util.StringUtils;
  6. import com.mongodb.BasicDBObject;
  7. import java.util.Date;
  8. import java.util.logging.Level;
  9. import org.tymoonnext.bot.Commons;
  10. import org.tymoonnext.bot.Kizai;
  11. import org.tymoonnext.bot.event.CommandListener;
  12. import org.tymoonnext.bot.event.EventListener;
  13. import org.tymoonnext.bot.event.IRCBot.MessageEvent;
  14. import org.tymoonnext.bot.event.cmd.CommandInstanceEvent;
  15. import org.tymoonnext.bot.event.core.CommandEvent;
  16. import org.tymoonnext.bot.module.Module;
  17. import org.tymoonnext.bot.module.cmd.CommandInstance;
  18. import org.tymoonnext.bot.module.core.ext.CommandModule;
  19.  
  20. /**
  21.  *
  22.  * @author Shinmera
  23.  * @license GPLv3
  24.  * @version 0.0.0
  25.  */
  26. public class Notify extends Module implements EventListener, CommandListener{
  27.    
  28.     public Notify(Kizai bot){
  29.         super(bot);
  30.         CommandModule.register(bot, "notify", "user message".split(" "), "", this);
  31.         try{bot.bindEvent(MessageEvent.class, this, "onMessage");
  32.         }catch(NoSuchMethodException ex){}
  33.     }
  34.  
  35.     @Override
  36.     public void shutdown() {
  37.         bot.unregisterAllCommands(this);
  38.     }
  39.    
  40.     @Override
  41.     public void onCommand(CommandEvent cmd) {
  42.         CommandInstance i = ((CommandInstanceEvent)cmd).get();
  43.         try {
  44.             DataModel mod = DataModel.getHull("notify");
  45.             mod.set("source", cmd.getUser());
  46.             mod.set("channel", cmd.getChannel());
  47.             mod.set("target", i.getValue("user"));
  48.             mod.set("time", new Date().getTime());
  49.             mod.set("message", cmd.getArgs().substring(i.getValue("user").length()+1).trim());
  50.             mod.insert();
  51.             cmd.getStream().send(String.format("%s: Note for %s created. The note will be shown the next time he talks.", cmd.getUser(), i.getValue("user")), cmd.getChannel());
  52.         } catch (MongoException ex) {
  53.             Commons.log.log(Level.WARNING, "Failed to create note. ", ex);
  54.             cmd.getStream().send("[Notify] Failed to create note: "+ex, cmd.getChannel());
  55.         }
  56.     }
  57.    
  58.     public void onMessage(MessageEvent ev){
  59.         try{
  60.             DataModel[] mods = DataModel.getData("notify", new BasicDBObject("target", ev.sender));
  61.             for(DataModel mod : mods){
  62.                 ev.getStream().send(String.format("%s: %s wrote to you on %s: %s", mod.get("target"), mod.get("source"), StringUtils.toHumanTime((Long)mod.get("time")), mod.get("message")), ev.channel);
  63.                 mod.delete();
  64.             }
  65.         } catch (MongoException ex) {
  66.             Commons.log.log(Level.WARNING, "[Notify] Failed to retrieve notes. ", ex);
  67.         }
  68.     }
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement