import java.io.File; import org.luaj.vm2.LuaTable; import org.luaj.vm2.LuaValue; import org.luaj.vm2.lib.OneArgFunction; import org.pircbotx.ShockyBot; import org.pircbotx.hooks.events.MessageEvent; import pl.shockah.Config; import pl.shockah.shocky.Data; import pl.shockah.shocky.Module; import pl.shockah.shocky.Shocky; import pl.shockah.shocky.Utils; import pl.shockah.shocky.interfaces.ILua; public class ModuleNickPlusPlus extends Module implements ILua { private Config config = new Config(); public int changeStat(String nick, int change) { nick = nick.toLowerCase(); config.setNotExists(nick,0); int i = config.getInt(nick)+change; config.set(nick,i); return i; } public String name() {return "nickplusplus";} public boolean isListener() {return true;} public void onEnable(File dir) { Data.config.setNotExists("npp-announce",true); config.load(new File(dir,"nickplusplus.cfg")); } public void onDataSave(File dir) { config.save(new File(dir,"nickplusplus.cfg")); } public void onMessage(MessageEvent<ShockyBot> event) { if (Data.isBlacklisted(event.getUser())) return; if (event.getMessage().matches("^("+Utils.patternNick.pattern()+")((\\+\\+)|(\\-\\-)|(\\=\\=))$")) { String nick = event.getMessage().substring(0,event.getMessage().length()-2); if (nick.length() < 3) return; if (event.getMessage().endsWith("++") && event.getUser().getNick().equalsIgnoreCase(nick)) { if (event.getBot().getUserBot().getChannelsOpIn().contains(event.getChannel())) event.getBot().kick(event.getChannel(),event.getUser(),event.getMessage()); return; } int stat; if (event.getMessage().endsWith("++")) stat = changeStat(nick,1); else if (event.getMessage().endsWith("--")) stat = changeStat(nick,-1); else stat = changeStat(nick,0); if (event.getMessage().endsWith("==") || Data.forChannel(event.getChannel()).getBoolean("npp-announce")) Shocky.sendChannel(event.getBot(),event.getChannel(),nick+" == "+stat); else Shocky.sendNotice(event.getBot(),event.getUser(),nick+" == "+stat); } } public class Function extends OneArgFunction { @Override public LuaValue call(LuaValue arg) { String nick = arg.checkjstring().toLowerCase(); return valueOf(config.exists(nick)?config.getInt(nick):0); } } @Override public void setupLua(LuaTable env) { env.set("npp", new Function()); } }