import java.io.File; import java.util.Date; import org.pircbotx.ShockyBot; import org.pircbotx.hooks.events.MessageEvent; import pl.shockah.Config; import pl.shockah.shocky.Module; import pl.shockah.shocky.Utils; import pl.shockah.shocky.cmds.Command; import pl.shockah.shocky.cmds.CommandCallback; import pl.shockah.shocky.cmds.Parameters; import pl.shockah.shocky.interfaces.ISeen; public class ModuleSeen extends Module implements ISeen { private Config config; protected Command cmd; public String name() {return "seen";} public boolean isListener() {return true;} public void onEnable(File dir) { (config = new Config()).load(new File(dir,"seen.cfg")); Command.addCommands(this, cmd = new CmdSeen()); } public void onDisable() { Command.removeCommands(cmd); } public void onDataSave(File dir) { if (config != null) config.save(new File(dir,"seen.cfg")); } public void onMessage(MessageEvent<ShockyBot> event) { String key = event.getUser().getNick().toLowerCase(); config.set("t_"+key,System.currentTimeMillis()); config.set("c_"+key,event.getChannel().getName()); config.set("m_"+key,event.getMessage()); } public class CmdSeen extends Command { public String command() {return "seen";} public String help(Parameters params) { return "seen {nick} - tells when the user was last active"; } public void doCommand(Parameters params, CommandCallback callback) { if (params.tokenCount != 1) { callback.type = EType.Notice; callback.append(help(params)); return; } String username = params.nextParam(); String low = username.toLowerCase(); if (low.equals(params.bot.getNick().toLowerCase())) callback.append("Are your glasses not strong enough?"); else if (low.equals(params.sender.getNick().toLowerCase())) callback.append("Schizophrenia, eh?"); else { if (config.exists("t_"+low)) { callback.append(username). append(" was last active "). append(Utils.timeAgo(new Date(config.getLong("t_"+low)))). append(" in "). append(config.getString("c_"+low)). append(" and said: "). append(config.getString("m_"+low)); } else callback.append("I've never seen ").append(username); } } } @Override public boolean hasSeen(String nick) { String low = nick.trim().toLowerCase(); return config.exists("t_"+low); } }