package modules; import bot.Config; import bot.Message; import bot.Module; import bot.Server; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import java.net.URISyntaxException; import java.util.HashMap; import java.util.Scanner; import com.google.gson.*; import bot.info.Info; import bot.info.User; public class NoBro implements Module { private String[] triggers = {"kittykatt","man","shut up","python","denko","muslims","liberals","reddit"}; private final int MAX_OFFENCES = 5; private final int WARN_OFFENCES = 3; private HashMap<String, Integer> offences = new HashMap<String,Integer>(); @Override public void parse(Message m) { if(m.sender().equals(Config.getNick()))return; if(m.command().equals("NICK")){ if(offences.containsKey(m.sender())){ offences.put(m.trailing(), offences.get(m.sender())); offences.remove(m.sender()); } } if(m.command().equals("PRIVMSG") && m.param().equals("#pasta")){ if(checkBro(m)){ if(m.trailing().toUpperCase().equals(m.trailing())){ offence(m); } else if(m.trailing().trim().endsWith(",")){ offence(m); } else for(String trigger : triggers){ if(m.trailing().toLowerCase().contains(trigger)){ offence(m); break; } } } } if(m.command().equals("JOIN") && m.trailing().equals("#pasta")){ if(checkBro(m)){ Server.say(m.trailing(), "4ALERT ALERT POSSIBLE BRO DETECTED"); } } } private void offence(Message m){ String target = m.param(); if(!m.param().startsWith("#")) target = m.sender(); if(!offences.containsKey(m.sender())){ offences.put(m.sender(), 1); } else{ offences.put(m.sender(),offences.get(m.sender())+1); } if(offences.get(m.sender()) == WARN_OFFENCES){ Server.say(target,"4" + m.sender() + ": Warning, you are being very liquid like."); } if(offences.get(m.sender()) >= MAX_OFFENCES){ offences.put(m.sender(),offences.get(m.sender())+1); if(m.param().equals("#pasta")){ Server.say(target, "shut up bro"); Server.send("MODE " + m.param() + " +b *!*@" + m.senderHost()); Server.send("KICK " + m.param() + " " + m.sender() + " :shut up bro"); offences.remove(m.sender()); } } } /** * * @param m * @return true if a possible bro */ private boolean checkBro(Message m){ if(m.sender().equals(Config.getNick()))return false; if( m.sender().startsWith("poo") || m.username().contains("zero@") || m.senderAddress().endsWith("bigpond.net.au") )return true; return false; } }