import java.io.File;
import java.util.HashMap;
import java.util.Random;
import org.pircbotx.Channel;
import org.pircbotx.ShockyBot;
import org.pircbotx.hooks.events.MessageEvent;
import pl.shockah.shocky.Data;
import pl.shockah.shocky.Module;
import pl.shockah.shocky.Shocky;
public class ModuleSamantha extends Module {
private HashMap<Channel,Long> nextAction = new HashMap<Channel,Long>();
private Random rnd = new Random();
@Override
public String name() {return "samantha";}
public boolean isListener() {return true;}
@Override
public void onEnable(File dir) {
Data.config.setNotExists("samantha-chance",5);
Data.config.setNotExists("samantha-next",1000*60*2);
}
private boolean canPerformAction(Channel chan) {
if (!nextAction.containsKey(chan))
return true;
long time = nextAction.get(chan);
if (System.currentTimeMillis() >= time) {
nextAction.remove(chan);
return true;
}
return false;
}
private void performedAction(Channel chan) {
nextAction.put(chan, System.currentTimeMillis()+Data.forChannel(chan).getInt("samantha-next"));
}
public void onMessage(MessageEvent<ShockyBot> event) {
if (!canPerformAction(event.getChannel()) || rnd.nextInt(Data.forChannel(event.getChannel()).getInt("samantha-chance")) > 0)
return;
String[] args = event.getMessage().split(" ");
boolean result = doAss(event, args);
if (!result) result = doNipples(event, args);
if (result)
performedAction(event.getChannel());
}
public boolean doAss(MessageEvent<ShockyBot> event, String... args) {
if (args.length < 3)
return false;
for (int i = 1; i < args.length - 1; i++) {
if (args[i].equalsIgnoreCase("ass")) {
Shocky.sendChannel(event.getBot(),event.getChannel(),String.format("%s %s-%s", args[i-1],args[i],args[i+1]));
return true;
}
}
return false;
}
public boolean doNipples(MessageEvent<ShockyBot> event, String... args) {
if (args.length != 2)
return false;
if (args[0].equalsIgnoreCase("i'm")||args[0].equalsIgnoreCase("im")) {
Shocky.sendChannel(event.getBot(),event.getChannel(),String.format("YOU'RE %s? feel these nipples!", args[1]));
return true;
}
return false;
}
}