diff --git a/src/net/Broken/BotListener.java b/src/net/Broken/BotListener.java index ec0748f..44dd9aa 100644 --- a/src/net/Broken/BotListener.java +++ b/src/net/Broken/BotListener.java @@ -2,6 +2,7 @@ package net.Broken; import net.Broken.Outils.AntiSpam; import net.Broken.Outils.Moderateur; +import net.dv8tion.jda.core.entities.ChannelType; import net.dv8tion.jda.core.entities.Guild; import net.dv8tion.jda.core.entities.Member; import net.dv8tion.jda.core.events.ReadyEvent; @@ -34,6 +35,7 @@ public class BotListener extends ListenerAdapter { // ----------------------Test pour eviter eco de commande------------------------- try { + if (event.getMessage().getContent().startsWith("//") && event.getMessage().getAuthor().getId() != event.getJDA().getSelfUser().getId()) { //On a detecter que c'etait une commande //System.out.println(event.getMessage().getContent()); @@ -51,22 +53,27 @@ public class BotListener extends ListenerAdapter { GuildManager guildManager = serveur.getManager(); Member user = event.getMember(); - // appel de la methode d'analyse de message de "Moderateur" - if(!event.getAuthor().getName().equals("Aethex") && event.getMessage().getContent().length()>0) { + if(!event.isFromType(ChannelType.PRIVATE)) + { + // appel de la methode d'analyse de message de "Moderateur" + if(!event.getAuthor().getName().equals("Aethex") && event.getMessage().getContent().length()>0) { - if (modo.analyse(user, serveur, guildManager, event) == 1) { - antispam.extermine(user, serveur, guildManager,true, event); + if (modo.analyse(user, serveur, guildManager, event) == 1) { + antispam.extermine(user, serveur, guildManager,true, event); + } } + else if(event.getMessage().getContent().length() == 0) + logger.error("Image detected, ignoring it."); } - else if(event.getMessage().getContent().length() == 0) - logger.error("Image detected, ignoring it."); + + } }catch (Exception e) { if (e.getMessage()==null) { - logger.error("NullPointerException"); + logger.error("NullPointerException"); } else { logger.error(e.getMessage()); } diff --git a/src/net/borken/commandes/SpamInfo.java b/src/net/Broken/Commandes/SpamInfo.java similarity index 70% rename from src/net/borken/commandes/SpamInfo.java rename to src/net/Broken/Commandes/SpamInfo.java index 484ae42..30de7da 100644 --- a/src/net/borken/commandes/SpamInfo.java +++ b/src/net/Broken/Commandes/SpamInfo.java @@ -1,4 +1,4 @@ -package net.borken.commandes; +package net.Broken.Commandes; /** * Created by sebastien on 13/03/17. diff --git a/src/net/Broken/MainBot.java b/src/net/Broken/MainBot.java index 466e29f..0907d61 100644 --- a/src/net/Broken/MainBot.java +++ b/src/net/Broken/MainBot.java @@ -1,17 +1,15 @@ package net.Broken; +import net.Broken.Commandes.Over18.*; import net.Broken.Outils.CommandParser; import net.Broken.Outils.DayListener; import net.Broken.Outils.Redirection; import net.Broken.Commandes.*; -import net.Broken.Commandes.Over18.*; import net.dv8tion.jda.core.AccountType; import net.dv8tion.jda.core.JDA; import net.dv8tion.jda.core.JDABuilder; import net.dv8tion.jda.core.OnlineStatus; -import net.dv8tion.jda.core.entities.Game; -import net.dv8tion.jda.core.entities.Guild; -import net.dv8tion.jda.core.entities.Member; +import net.dv8tion.jda.core.entities.*; import net.dv8tion.jda.core.events.message.MessageReceivedEvent; import net.dv8tion.jda.core.exceptions.RateLimitedException; import net.dv8tion.jda.core.managers.GuildManager; @@ -20,10 +18,7 @@ import org.apache.logging.log4j.Logger; import javax.security.auth.login.LoginException; import java.io.IOException; -import java.util.HashMap; -import java.util.Hashtable; -import java.util.List; -import java.util.Scanner; +import java.util.*; /** * Created by seb65 on 19/10/2016. @@ -40,6 +35,8 @@ public class MainBot { public static Hashtable userMulti = new Hashtable(); public static Hashtable minuteurStatut = new Hashtable<>(); + public static ArrayList> privateUsableCommand = new ArrayList<>(); + static Logger logger = LogManager.getLogger(); public static void main(String[] args) throws IOException { @@ -70,6 +67,7 @@ public class MainBot { jda = new JDABuilder(AccountType.BOT).addListener(new BotListener()).setToken(args[0]).setBulkDeleteSplittingEnabled(false).buildBlocking(); jda.setAutoReconnect(true); jda.addEventListener(); + jda.addEventListener(); okInit=true; @@ -84,21 +82,29 @@ public class MainBot { //Connection reussi if(okInit) { - jda.getPresence().setGame(Game.of("Statut: Loading...")); - jda.getTextChannels().forEach(textChannel -> textChannel.sendTyping().queue()); /************************************* * Definition des commande * *************************************/ + jda.getPresence().setGame(Game.of("Statut: Loading...")); + jda.getTextChannels().forEach(MessageChannel::sendTyping); commandes.put("ping", new PingCommande()); commandes.put("help",new Help()); commandes.put("move", new Move()); commandes.put("spam", new Spam()); + jda.getTextChannels().forEach(MessageChannel::sendTyping); commandes.put("ass",new Ass()); + jda.getTextChannels().forEach(MessageChannel::sendTyping); commandes.put("boobs",new Boobs()); + jda.getTextChannels().forEach(MessageChannel::sendTyping); commandes.put("pipe",new Pipe()); + jda.getTextChannels().forEach(MessageChannel::sendTyping); commandes.put("sm",new SM()); commandes.put("madame",new Madame()); commandes.put("cat",new Cat()); + + privateUsableCommand.add(Help.class); + privateUsableCommand.add(PingCommande.class); + //On recupere le l'id serveur Guild serveur = jda.getGuilds().get(0); @@ -135,8 +141,6 @@ public class MainBot { /*List userAction = serveur.getUsersByName("Broken_Fire"); new Move().exc(userAction.get(0),"Big Daddy",true,serveur,serveur.getManager());*/ Redirection urlRedirect=new Redirection(); - jda.getPresence().setGame(Game.of("Statut: Ok")); - } @@ -150,14 +154,28 @@ public class MainBot { //On verifie que la commande existe if (commandes.containsKey(cmd.commande)) { + if(cmd.event.isFromType(ChannelType.PRIVATE) && privateUsableCommand.contains(commandes.get(cmd.commande).getClass())) + { commandes.get(cmd.commande).action(cmd.args, cmd.event); commandes.get(cmd.commande).executed(true, cmd.event); + } + else if (!cmd.event.isFromType(ChannelType.PRIVATE)) + { + commandes.get(cmd.commande).action(cmd.args, cmd.event); + commandes.get(cmd.commande).executed(true, cmd.event); + } + else + cmd.event.getPrivateChannel().sendMessage("\n:warning: **__Commande non disponible en priver!__** :warning:").queue(); + } else { MessageReceivedEvent event = cmd.event; - event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:warning: **__Commande inconnue!__** :warning:\n:arrow_right: Utilisez `//help` pour voirs les Commandes disponible. ").queue(); + if(event.isFromType(ChannelType.PRIVATE)) + event.getPrivateChannel().sendMessage("\n:warning: **__Commande inconnue!__** :warning:\n:arrow_right: Utilisez `//help` pour voirs les commandes disponible. ").queue(); + else + event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:warning: **__Commande inconnue!__** :warning:\n:arrow_right: Utilisez `//help` pour voirs les commandes disponible. ").queue(); logger.info("Commande inconnue"); } diff --git a/src/net/Broken/commandes/Cat.java b/src/net/Broken/commandes/Cat.java index 0099f94..1f08a8d 100644 --- a/src/net/Broken/commandes/Cat.java +++ b/src/net/Broken/commandes/Cat.java @@ -1,7 +1,9 @@ -package net.Broken.commandes; +package net.Broken.Commandes; + import net.Broken.Commande; import net.Broken.Outils.Redirection; +import net.dv8tion.jda.core.entities.ChannelType; import net.dv8tion.jda.core.events.message.MessageReceivedEvent; import java.io.BufferedReader; @@ -13,7 +15,7 @@ import java.net.URLConnection; /** * Created by Seb on 06/02/2017. */ -public class Cat implements Commande{ +public class Cat implements Commande { @Override public boolean called(String[] args, MessageReceivedEvent event) { return false; @@ -22,37 +24,43 @@ public class Cat implements Commande{ @Override public void action(String[] args, MessageReceivedEvent event) { Redirection redirect= new Redirection(); - try { - String catLine=null; + if(!event.isFromType(ChannelType.PRIVATE)) + { + try { + String catLine=null; - redirect.get("http://random.cat"); - URL cat = new URL(redirect.get("http://random.cat")); - URLConnection cc = cat.openConnection(); - BufferedReader in = new BufferedReader(new InputStreamReader(cc.getInputStream(), "UTF-8")); - String inputLine; - while ((inputLine = in.readLine()) != null) - { - if(inputLine.contains("id=\"cat\"")) - catLine = inputLine; - } - in.close(); - String[] splited = catLine.split(" "); - String finalLineCat=null; - for(String aString:splited) - { - if(aString.startsWith("src")) + redirect.get("http://random.cat"); + URL cat = new URL(redirect.get("http://random.cat")); + URLConnection cc = cat.openConnection(); + BufferedReader in = new BufferedReader(new InputStreamReader(cc.getInputStream(), "UTF-8")); + String inputLine; + while ((inputLine = in.readLine()) != null) { - finalLineCat=aString; + if(inputLine.contains("id=\"cat\"")) + catLine = inputLine; } - } - System.out.println(finalLineCat); - finalLineCat=finalLineCat.replaceAll("src=\"",""); - finalLineCat=finalLineCat.replaceAll("\"",""); - event.getTextChannel().sendMessage("http://random.cat/"+finalLineCat).queue(); + in.close(); + String[] splited = catLine.split(" "); + String finalLineCat=null; + for(String aString:splited) + { + if(aString.startsWith("src")) + { + finalLineCat=aString; + } + } + System.out.println(finalLineCat); + finalLineCat=finalLineCat.replaceAll("src=\"",""); + finalLineCat=finalLineCat.replaceAll("\"",""); + event.getTextChannel().sendMessage("http://random.cat/"+finalLineCat).queue(); - } catch (IOException e) { - e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } } + else + event.getPrivateChannel().sendMessage("\n:warning: **__Commande non disponible en priver!__** :warning:"); + } @Override diff --git a/src/net/Broken/commandes/Help.java b/src/net/Broken/commandes/Help.java index 3c8037c..e739fe5 100644 --- a/src/net/Broken/commandes/Help.java +++ b/src/net/Broken/commandes/Help.java @@ -1,4 +1,4 @@ -package net.Broken.commandes; +package net.Broken.Commandes; import net.Broken.Commande; import net.Broken.MainBot; diff --git a/src/net/Broken/commandes/Move.java b/src/net/Broken/commandes/Move.java index 03bd827..2eedc8f 100644 --- a/src/net/Broken/commandes/Move.java +++ b/src/net/Broken/commandes/Move.java @@ -1,10 +1,7 @@ -package net.Broken.commandes; +package net.Broken.Commandes; import net.Broken.Commande; -import net.dv8tion.jda.core.entities.Guild; -import net.dv8tion.jda.core.entities.Member; -import net.dv8tion.jda.core.entities.Role; -import net.dv8tion.jda.core.entities.User; +import net.dv8tion.jda.core.entities.*; import net.dv8tion.jda.core.events.message.MessageReceivedEvent; import net.dv8tion.jda.core.managers.GuildController; import net.dv8tion.jda.core.managers.GuildManager; @@ -54,7 +51,7 @@ public class Move implements Commande { List roleUserList = user.getRoles(); - logger.info("Roles de " + user.getEffectiveName() + ":"); + logger.info("Roles de " + user.getEffectiveName() + ":"); //On les save saveRoleUser = roleUserList; @@ -68,7 +65,7 @@ public class Move implements Commande { //on fait ensuite les modif guildController.modifyMemberRoles(user,temp,saveRoleUser).queue(); - logger.info("Role " + cible + " attribuer a " + user.getEffectiveName()); + logger.info("Role " + cible + " attribuer a " + user.getEffectiveName()); this.user=user; this.serveur=serveur; @@ -89,58 +86,64 @@ public class Move implements Commande { */ public void action(String[] args, MessageReceivedEvent event) { - if(args.length>=2) + if(!event.isFromType(ChannelType.PRIVATE)) { - serveur=event.getGuild(); - List userL = event.getMessage().getMentionedUsers(); - List roleL = event.getMessage().getMentionedRoles(); - - if(userL.size()<1 ||roleL.size()<1) + if(args.length>=2) { - logger.info("Mentionnement Incorect."); - event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:warning: **__Erreur de déplacement__** :warning:\n:arrow_right: Erreur, Utilisateur ou Role mal mentioner. `//help move` pour plus d'info ").queue(); - } - else - { - user = serveur.getMember(userL.get(0)); - Role roleCible = roleL.get(0); serveur=event.getGuild(); - logger.info("Tentative de déplacement de "+user.getEffectiveName()+" vers "+roleCible.getName()+" par l'utilisateur "+event.getAuthor().getName()); - if(event.getMember().getRoles().contains(serveur.getRolesByName("Big_Daddy",false).get(0))) - { + List userL = event.getMessage().getMentionedUsers(); + List roleL = event.getMessage().getMentionedRoles(); - logger.info("Autorisation suffisante, deplacement autorisé"); - logger.info("Utilisateur trouvée"); - boolean erreur=this.exc(user,roleCible,true,serveur,serveur.getManager()); - if(erreur) - { - event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:warning: **__Erreur de déplacement.__** :warning:\n:arrow_right: Verifier le rôle cible. ").queue(); - } - else - { - event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:ok: **Déplacement de "+user.getEffectiveName()+" vers "+roleCible.getName()+" reussi.** :ok:").queue(); - } + if(userL.size()<1 ||roleL.size()<1) + { + logger.info("Mentionnement Incorect."); + event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:warning: **__Erreur de déplacement__** :warning:\n:arrow_right: Erreur, Utilisateur ou Role mal mentioner. `//help move` pour plus d'info ").queue(); } else { - logger.info("Autorisation insuffisante, deplacement refusé"); - event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:warning: **__Vous n'avez pas l'autorisation de faire ca!__**:warning: ").queue(); + user = serveur.getMember(userL.get(0)); + Role roleCible = roleL.get(0); + serveur=event.getGuild(); + logger.info("Tentative de déplacement de "+user.getEffectiveName()+" vers "+roleCible.getName()+" par l'utilisateur "+event.getAuthor().getName()); + if(event.getMember().getRoles().contains(serveur.getRolesByName("Big_Daddy",false).get(0))) + { + logger.info("Autorisation suffisante, deplacement autorisé"); + logger.info("Utilisateur trouvée"); + boolean erreur=this.exc(user,roleCible,true,serveur,serveur.getManager()); + if(erreur) + { + event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:warning: **__Erreur de déplacement.__** :warning:\n:arrow_right: Verifier le rôle cible. ").queue(); + } + else + { + event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:ok: **Déplacement de "+user.getEffectiveName()+" vers "+roleCible.getName()+" reussi.** :ok:").queue(); + } + } + else + { + logger.info("Autorisation insuffisante, deplacement refusé"); + event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:warning: **__Vous n'avez pas l'autorisation de faire ca!__**:warning: ").queue(); + + } } - } + } + else + { + logger.warn("Arguments maquant."); + event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:warning: **__Erreur de déplacement__** :warning:\n:arrow_right: Arguments manquant. `//help move` pour plus d'info ").queue(); + + } } else - { - logger.warn("Arguments maquant."); - event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:warning: **__Erreur de déplacement__** :warning:\n:arrow_right: Arguments manquant. `//help move` pour plus d'info ").queue(); - - } - + event.getPrivateChannel().sendMessage("\n:warning: **__Commande non disponible en priver!__** :warning:"); + + + - } diff --git a/src/net/Broken/commandes/NumberedCommande.java b/src/net/Broken/commandes/NumberedCommande.java index 9eba44a..e8bf0cb 100644 --- a/src/net/Broken/commandes/NumberedCommande.java +++ b/src/net/Broken/commandes/NumberedCommande.java @@ -1,4 +1,4 @@ -package net.Broken.commandes; +package net.Broken.Commandes; import net.Broken.Commande; import net.Broken.Outils.LimitChecker; import net.Broken.Outils.Redirection; @@ -7,6 +7,8 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.URL; /** * Created by seb65 on 07/11/2016. @@ -38,22 +40,85 @@ public abstract class NumberedCommande implements Commande{ @Override public void action(String[] args, MessageReceivedEvent event) { - if(event.getTextChannel().getName().equals("over18")) { - Redirection redirect= new Redirection(); - int randomResult = (int) (minNumber + (Math.random() * (maxNumber - minNumber))); - event.getTextChannel().sendMessage(baseURL+randomResult+"-2/").queue(); + if(args.length == 0) + { + if(event.getTextChannel().getName().equals("over18")) { + Redirection redirect= new Redirection(); + int randomResult = (int) (minNumber + (Math.random() * (maxNumber - minNumber))); + event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n"+baseURL+randomResult+"-2/").queue(); + } + else + { + event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:warning: **__Channel règlementé! Go sur over18!__**:warning: ").queue(); + + logger.warn("Erreur chanel."); + } } else { - event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:warning: **__Channel règlementé! Go sur over18!__**:warning: ").queue(); + if(args[0].toLowerCase().equals("update")) + { + logger.info("update commande from "+event.getMessage().getAuthor().getName()); + event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:arrow_right: Updating...").queue(); - logger.warn("Erreur chanel."); + int newNumber = maxNumber; + try { + newNumber = LimitChecker.doYourJob(baseURL,maxNumber); + } catch (IOException e) { + e.printStackTrace(); + } + if(newNumber == maxNumber) + { + event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:arrow_right: Aucune nouvelle image n'a était trouver :cry:").queue(); + } + else if(newNumber-maxNumber == 1) event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:arrow_right: "+(newNumber-maxNumber)+" nouvelle image a été trouvé :kissing_heart:").queue(); + else + event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:arrow_right: "+(newNumber-maxNumber)+" nouvelles images on été trouvé :kissing_heart:").queue(); + logger.info((newNumber-maxNumber)+" new image(s) found."); + maxNumber = newNumber; + } + else if(args[0].toLowerCase().equals("get")) { + if (args.length >= 2) + { + + int number = -1; + try { + number = Integer.parseInt(args[1]); + URL url = new URL(baseURL + number + "-2/"); + HttpURLConnection huc = (HttpURLConnection) url.openConnection(); + huc.setRequestMethod("GET"); + huc.connect(); + int result = huc.getResponseCode(); + if (result == 200) { + event.getTextChannel().sendMessage(event.getAuthor().getAsMention() + "\n" + baseURL + number + "-2/").queue(); + } else { + event.getTextChannel().sendMessage(event.getAuthor().getAsMention() + "\n:warning: **__Erreur__** :warning:\n:arrow_right: Page introuvable (404)").queue(); + } + + } catch (NumberFormatException e) { + event.getTextChannel().sendMessage(event.getAuthor().getAsMention() + "\n:warning: **__Erreur__** :warning:\n:arrow_right: Erreur d'argument. `//help " + this.toString().toLowerCase() + "` pour plus d'info ").queue(); + } catch (IOException e) { + logger.catching(e); + event.getTextChannel().sendMessage(event.getAuthor().getAsMention() + "\n:warning: **__Erreur__** :warning:\n:arrow_right: Erreur interne...").queue(); + } + } + else{ + event.getTextChannel().sendMessage(event.getAuthor().getAsMention() + "\n:warning: **__Erreur__** :warning:\n:arrow_right: Erreur d'argument. `//help " + this.toString().toLowerCase() + "` pour plus d'info ").queue(); + logger.warn("Bad Argument: "+event.getMessage().getContent()+" From "+event.getAuthor().getName()); + } + } + else + { + event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:warning: **__Erreur__** :warning:\n:arrow_right: Erreur d'argument. `//help "+this.toString().toLowerCase()+"` pour plus d'info ").queue(); + logger.warn("Bad Argument: "+event.getMessage().getContent()+" From "+event.getAuthor().getName()); + } } + } @Override public String help(String[] args) { - return HELP; + return"`//"+this.toString().toLowerCase() +"update\n:arrow_right: *Rafraichi la liste des images.*\n`//"+this.toString().toLowerCase()+" get `\n:arrow_right: *Affiche l'image portant le numero donné*"; } @Override diff --git a/src/net/Broken/commandes/Over18/Ass.java b/src/net/Broken/commandes/Over18/Ass.java index 2a1c4fb..99092c8 100644 --- a/src/net/Broken/commandes/Over18/Ass.java +++ b/src/net/Broken/commandes/Over18/Ass.java @@ -1,6 +1,6 @@ -package net.Broken.commandes.Over18; +package net.Broken.Commandes.Over18; -import net.Broken.commandes.NumberedCommande; +import net.Broken.Commandes.NumberedCommande; import org.apache.logging.log4j.LogManager; /** @@ -11,4 +11,9 @@ public class Ass extends NumberedCommande { public Ass() { super(LogManager.getLogger(), "http://les400culs.com/"); } + + @Override + public String toString() { + return "Ass"; + } } diff --git a/src/net/Broken/commandes/Over18/Boobs.java b/src/net/Broken/commandes/Over18/Boobs.java index d215b52..c6378d2 100644 --- a/src/net/Broken/commandes/Over18/Boobs.java +++ b/src/net/Broken/commandes/Over18/Boobs.java @@ -1,6 +1,6 @@ -package net.Broken.commandes.Over18; +package net.Broken.Commandes.Over18; -import net.Broken.commandes.NumberedCommande; +import net.Broken.Commandes.NumberedCommande; import org.apache.logging.log4j.LogManager; /** @@ -11,4 +11,8 @@ public class Boobs extends NumberedCommande { public Boobs() { super(LogManager.getLogger(), "http://lesaintdesseins.fr/"); } + @Override + public String toString() { + return "Boobs"; + } } diff --git a/src/net/Broken/commandes/Over18/Madame.java b/src/net/Broken/commandes/Over18/Madame.java index aebdd47..93d964c 100644 --- a/src/net/Broken/commandes/Over18/Madame.java +++ b/src/net/Broken/commandes/Over18/Madame.java @@ -1,4 +1,4 @@ -package net.Broken.commandes.Over18; +package net.Broken.Commandes.Over18; import net.Broken.Commande; import net.Broken.Outils.Redirection; diff --git a/src/net/Broken/commandes/Over18/Pipe.java b/src/net/Broken/commandes/Over18/Pipe.java index bd5f620..df0443f 100644 --- a/src/net/Broken/commandes/Over18/Pipe.java +++ b/src/net/Broken/commandes/Over18/Pipe.java @@ -1,6 +1,6 @@ -package net.Broken.commandes.Over18; +package net.Broken.Commandes.Over18; -import net.Broken.commandes.NumberedCommande; +import net.Broken.Commandes.NumberedCommande; import org.apache.logging.log4j.LogManager; /** @@ -45,4 +45,8 @@ public class Pipe extends NumberedCommande { in.close(); event.getTextChannel().sendMessage(redirect.get("http://feelation.com/random")).queue(); */ + @Override + public String toString() { + return "Pipe"; + } } diff --git a/src/net/Broken/commandes/Over18/SM.java b/src/net/Broken/commandes/Over18/SM.java index 4ad8ad9..3daf6a9 100644 --- a/src/net/Broken/commandes/Over18/SM.java +++ b/src/net/Broken/commandes/Over18/SM.java @@ -1,4 +1,4 @@ -package net.Broken.commandes.Over18; +package net.Broken.Commandes.Over18; import net.Broken.Commande; import net.Broken.Outils.Redirection; diff --git a/src/net/Broken/commandes/PingCommande.java b/src/net/Broken/commandes/PingCommande.java index 469963b..2d7f53f 100644 --- a/src/net/Broken/commandes/PingCommande.java +++ b/src/net/Broken/commandes/PingCommande.java @@ -1,9 +1,13 @@ -package net.Broken.commandes; +package net.Broken.Commandes; import net.Broken.Commande; +import net.dv8tion.jda.core.entities.ChannelType; import net.dv8tion.jda.core.events.message.MessageReceivedEvent; import org.apache.logging.log4j.LogManager; +import java.sql.Timestamp; +import java.time.*; + /** * Created by seb65 on 19/10/2016. @@ -19,8 +23,11 @@ public class PingCommande implements Commande { @Override public void action(String[] args, MessageReceivedEvent event) { - - event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+" Pong!").queue(); + long receivedTime = Timestamp.valueOf(LocalDateTime.ofInstant(event.getMessage().getCreationTime().toInstant(), ZoneId.systemDefault())).getTime(); + if(event.isFromType(ChannelType.PRIVATE)) + event.getPrivateChannel().sendMessage(":arrow_right: Pong! `"+((Timestamp.from(Instant.now()).getTime()-receivedTime))+"ms`").queue(); + else + event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:arrow_right: Pong! `"+((Timestamp.from(Instant.now()).getTime()-receivedTime))+"ms`").queue(); LogManager.getLogger().info("pong"); } diff --git a/src/net/Broken/commandes/Spam.java b/src/net/Broken/commandes/Spam.java index 559d871..72dff7e 100644 --- a/src/net/Broken/commandes/Spam.java +++ b/src/net/Broken/commandes/Spam.java @@ -1,4 +1,4 @@ -package net.Broken.commandes; +package net.Broken.Commandes; import net.Broken.Commande; import net.Broken.MainBot; diff --git a/src/net/borken/BotListener.java b/src/net/borken/BotListener.java deleted file mode 100644 index 1526037..0000000 --- a/src/net/borken/BotListener.java +++ /dev/null @@ -1,87 +0,0 @@ -package net.borken; - -import net.borken.Outils.AntiSpam; -import net.borken.Outils.Moderateur; -import net.dv8tion.jda.core.entities.ChannelType; -import net.dv8tion.jda.core.entities.Guild; -import net.dv8tion.jda.core.entities.Member; -import net.dv8tion.jda.core.entities.User; -import net.dv8tion.jda.core.events.DisconnectEvent; -import net.dv8tion.jda.core.events.ReadyEvent; -import net.dv8tion.jda.core.events.ReconnectedEvent; -import net.dv8tion.jda.core.events.StatusChangeEvent; -import net.dv8tion.jda.core.events.message.MessageReceivedEvent; -import net.dv8tion.jda.core.hooks.ListenerAdapter; -import net.dv8tion.jda.core.managers.GuildManager; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - - -/** - * Created by seb65 on 19/10/2016. - */ - -public class BotListener extends ListenerAdapter { - AntiSpam antispam=new AntiSpam(); - Moderateur modo = new Moderateur(); - Logger logger = LogManager.getLogger(); - - - @Override - public void onReady(ReadyEvent event) { - logger.info("Connection succees"); - } - - - - @Override - public void onMessageReceived(MessageReceivedEvent event) { - // ----------------------Test pour eviter eco de commande------------------------- - try - { - - if (event.getMessage().getContent().startsWith("//") && event.getMessage().getAuthor().getId() != event.getJDA().getSelfUser().getId()) { - //On a detecter que c'etait une commande - //System.out.println(event.getMessage().getContent()); - - MainBot.handleCommand(MainBot.parser.parse(event.getMessage().getContent(), event)); - - - - } - else if (event.getMessage().getAuthor().getId() != event.getJDA().getSelfUser().getId() && !event.getTextChannel().getName().equals("le_dongeon")) - { - //N'est pas une commande - - Guild serveur=event.getGuild(); - GuildManager guildManager = serveur.getManager(); - Member user = event.getMember(); - - if(!event.isFromType(ChannelType.PRIVATE)) - { - // appel de la methode d'analyse de message de "Moderateur" - if(!event.getAuthor().getName().equals("Aethex") && event.getMessage().getContent().length()>0) { - - if (modo.analyse(user, serveur, guildManager, event) == 1) { - antispam.extermine(user, serveur, guildManager,true, event); - } - } - else if(event.getMessage().getContent().length() == 0) - logger.error("Image detected, ignoring it."); - } - - - - - } - }catch (Exception e) - { - if (e.getMessage()==null) { - logger.error("NullPointerException"); - } else { - logger.error(e.getMessage()); - } - } - - } -} diff --git a/src/net/borken/MainBot.java b/src/net/borken/MainBot.java deleted file mode 100644 index 02ffd00..0000000 --- a/src/net/borken/MainBot.java +++ /dev/null @@ -1,240 +0,0 @@ -package net.borken; - -import net.borken.Outils.CommandParser; -import net.borken.Outils.DayListener; -import net.borken.Outils.Redirection; -import net.borken.commandes.*; -import net.borken.commandes.Over18.*; -import net.dv8tion.jda.core.AccountType; -import net.dv8tion.jda.core.JDA; -import net.dv8tion.jda.core.JDABuilder; -import net.dv8tion.jda.core.OnlineStatus; -import net.dv8tion.jda.core.entities.ChannelType; -import net.dv8tion.jda.core.entities.Guild; -import net.dv8tion.jda.core.entities.Member; -import net.dv8tion.jda.core.events.message.MessageReceivedEvent; -import net.dv8tion.jda.core.exceptions.RateLimitedException; -import net.dv8tion.jda.core.managers.GuildManager; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import javax.security.auth.login.LoginException; -import java.io.IOException; -import java.util.*; - -/** - * Created by seb65 on 19/10/2016. - */ -public class MainBot { - - private static JDA jda; - public static final CommandParser parser =new CommandParser(); - public static HashMap commandes = new HashMap<>(); - public static boolean okInit=false; - public static HashMap historique =new HashMap<>(); - public static HashMap message_compteur =new HashMap<>(); - - public static Hashtable userMulti = new Hashtable(); - public static Hashtable minuteurStatut = new Hashtable<>(); - - public static ArrayList> privateUsableCommand = new ArrayList<>(); - - static Logger logger = LogManager.getLogger(); - - public static void main(String[] args) throws IOException { - logger.trace("trace"); - logger.debug("debug"); - logger.info("info"); - logger.warn("warn"); - logger.error("error"); - Stop stopTh=new Stop(); - stopTh.start(); - /**************************** - * Initialisation * - ****************************/ - logger.info("-------------------INITIALISATION-------------------"); - //Bot démarrer sans token - if (args.length < 1) { - logger.fatal("Veuilliez indiquer le token du bot en argument..."); - okInit=false; - } - else - { - //Token présent - try - { - - logger.info("Connection au serveur..."); - //connection au bot - jda = new JDABuilder(AccountType.BOT).addListener(new BotListener()).setToken(args[0]).setBulkDeleteSplittingEnabled(false).buildBlocking(); - jda.setAutoReconnect(true); - jda.addEventListener(); - jda.addEventListener(); - - okInit=true; - - } - catch (LoginException | InterruptedException | RateLimitedException e) - { - logger.catching(e); - okInit=false; - } - } - - //Connection reussi - if(okInit) - { - /************************************* - * Definition des commande * - *************************************/ - commandes.put("ping", new PingCommande()); - commandes.put("help",new Help()); - commandes.put("move", new Move()); - commandes.put("spam", new Spam()); - commandes.put("ass",new Ass()); - commandes.put("boobs",new Boobs()); - commandes.put("pipe",new Pipe()); - commandes.put("sm",new SM()); - commandes.put("madame",new Madame()); - commandes.put("cat",new Cat()); - - privateUsableCommand.add(Help.class); - privateUsableCommand.add(PingCommande.class); - - //On recupere le l'id serveur - Guild serveur = jda.getGuilds().get(0); - - //On recupere le serveur manageur - GuildManager guildManager = serveur.getManager(); - - //on recupere les utilisateur conecter - List utilisateurCo = serveur.getMembers(); - - logger.info("Utilisatieur connecté: "); - for (Member anUtilisateurCo : utilisateurCo) //= for(int i=0; i userAction = serveur.getUsersByName("Broken_Fire"); - new Move().exc(userAction.get(0),"Big Daddy",true,serveur,serveur.getManager());*/ - Redirection urlRedirect=new Redirection(); - - } - - } - - /*************************************** - * Traitement de la commande * - ***************************************/ - public static void handleCommand(CommandParser.CommandContainer cmd) - { - //On verifie que la commande existe - if (commandes.containsKey(cmd.commande)) - { - if(cmd.event.isFromType(ChannelType.PRIVATE) && privateUsableCommand.contains(commandes.get(cmd.commande).getClass())) - { - commandes.get(cmd.commande).action(cmd.args, cmd.event); - commandes.get(cmd.commande).executed(true, cmd.event); - } - else if (!cmd.event.isFromType(ChannelType.PRIVATE)) - { - commandes.get(cmd.commande).action(cmd.args, cmd.event); - commandes.get(cmd.commande).executed(true, cmd.event); - } - else - cmd.event.getPrivateChannel().sendMessage("\n:warning: **__Commande non disponible en priver!__** :warning:").queue(); - - - } - else - { - MessageReceivedEvent event = cmd.event; - if(event.isFromType(ChannelType.PRIVATE)) - event.getPrivateChannel().sendMessage("\n:warning: **__Commande inconnue!__** :warning:\n:arrow_right: Utilisez `//help` pour voirs les commandes disponible. ").queue(); - else - event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:warning: **__Commande inconnue!__** :warning:\n:arrow_right: Utilisez `//help` pour voirs les commandes disponible. ").queue(); - logger.info("Commande inconnue"); - } - - } - /******************************* - * RAZ Compteur Spam * - *******************************/ - public static class ModoTimer extends Thread{ - - - public ModoTimer() - { - - } - - - @Override - public void run() - { - while (true) - { - try { - sleep(5000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - //System.out.println("\n5sec Ecoulées !"); - for (Member unUser: message_compteur.keySet() ) //=for(int i=0; i saveRoleUser; - public Member user; - public Guild serveur; - public GuildManager serveurManager; - public GuildController guildController; - - /** - * - * @param user - * @param cible - * @param reset - * @param serveur - * @param serveurManager - * @return - */ - public boolean exc(Member user, Role cible , boolean reset, Guild serveur, GuildManager serveurManager) - { - guildController = new GuildController(serveur); - boolean erreur = false; - List allRoll = serveur.getRoles(); - - - - //On recupere les roles de l'utilisateur - - List roleUserList = user.getRoles(); - - logger.info("Roles de " + user.getEffectiveName() + ":"); - - //On les save - saveRoleUser = roleUserList; - - //Ajout du role cible - - //On transforme la le role a ajouter en une liste pour pouvoir l'utiliser dans modifyMemberRoles - Collection temp = new ArrayList<>(); - temp.add(cible); - - //on fait ensuite les modif - guildController.modifyMemberRoles(user,temp,saveRoleUser).queue(); - - logger.info("Role " + cible + " attribuer a " + user.getEffectiveName()); - - this.user=user; - this.serveur=serveur; - this.serveurManager=serveurManager; - return erreur; - } - - @Override - - public boolean called(String[] args, MessageReceivedEvent event) { - return false; - } - - /** - * - * @param args - * @param event - */ - public void action(String[] args, MessageReceivedEvent event) - { - if(!event.isFromType(ChannelType.PRIVATE)) - { - if(args.length>=2) - { - serveur=event.getGuild(); - List userL = event.getMessage().getMentionedUsers(); - List roleL = event.getMessage().getMentionedRoles(); - - if(userL.size()<1 ||roleL.size()<1) - { - logger.info("Mentionnement Incorect."); - event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:warning: **__Erreur de déplacement__** :warning:\n:arrow_right: Erreur, Utilisateur ou Role mal mentioner. `//help move` pour plus d'info ").queue(); - } - else - { - user = serveur.getMember(userL.get(0)); - Role roleCible = roleL.get(0); - serveur=event.getGuild(); - logger.info("Tentative de déplacement de "+user.getEffectiveName()+" vers "+roleCible.getName()+" par l'utilisateur "+event.getAuthor().getName()); - if(event.getMember().getRoles().contains(serveur.getRolesByName("Big_Daddy",false).get(0))) - { - - logger.info("Autorisation suffisante, deplacement autorisé"); - logger.info("Utilisateur trouvée"); - boolean erreur=this.exc(user,roleCible,true,serveur,serveur.getManager()); - if(erreur) - { - event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:warning: **__Erreur de déplacement.__** :warning:\n:arrow_right: Verifier le rôle cible. ").queue(); - } - else - { - event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:ok: **Déplacement de "+user.getEffectiveName()+" vers "+roleCible.getName()+" reussi.** :ok:").queue(); - } - } - else - { - logger.info("Autorisation insuffisante, deplacement refusé"); - event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:warning: **__Vous n'avez pas l'autorisation de faire ca!__**:warning: ").queue(); - - } - } - - } - else - { - logger.warn("Arguments maquant."); - event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:warning: **__Erreur de déplacement__** :warning:\n:arrow_right: Arguments manquant. `//help move` pour plus d'info ").queue(); - - } - } - else - event.getPrivateChannel().sendMessage("\n:warning: **__Commande non disponible en priver!__** :warning:"); - - - - - - - - - } - - /** - * - * @param args - * @return - */ - @Override - public String help(String[] args) { - return HELP; - } - - /** - * - * @param success - * @param event - */ - @Override - public void executed(boolean success, MessageReceivedEvent event) { - - } - -} diff --git a/src/net/borken/commandes/PingCommande.java b/src/net/borken/commandes/PingCommande.java deleted file mode 100644 index 8f66616..0000000 --- a/src/net/borken/commandes/PingCommande.java +++ /dev/null @@ -1,46 +0,0 @@ -package net.borken.commandes; - -import net.borken.Commande; -import net.dv8tion.jda.core.entities.ChannelType; -import net.dv8tion.jda.core.events.message.MessageReceivedEvent; -import org.apache.logging.log4j.LogManager; - -import java.sql.Timestamp; -import java.time.*; - - -/** - * Created by seb65 on 19/10/2016. - */ -public class PingCommande implements Commande { - - - private String HELP = "`//ping` \n :arrow_right:\t*Le bot vous répondra Pong!*"; - @Override - public boolean called(String[] args, MessageReceivedEvent event) { - return true; - } - - @Override - public void action(String[] args, MessageReceivedEvent event) { - long receivedTime = Timestamp.valueOf(LocalDateTime.ofInstant(event.getMessage().getCreationTime().toInstant(), ZoneId.systemDefault())).getTime(); - if(event.isFromType(ChannelType.PRIVATE)) - event.getPrivateChannel().sendMessage(":arrow_right: Pong! `"+((Timestamp.from(Instant.now()).getTime()-receivedTime))+"ms`").queue(); - else - event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:arrow_right: Pong! `"+((Timestamp.from(Instant.now()).getTime()-receivedTime))+"ms`").queue(); - LogManager.getLogger().info("pong"); - } - - @Override - public String help(String[] args) { - - return HELP; - } - - @Override - public void executed(boolean success, MessageReceivedEvent event) - { - return; - - } -} diff --git a/src/net/borken/log4j2.xml b/src/net/borken/log4j2.xml deleted file mode 100644 index efdbd28..0000000 --- a/src/net/borken/log4j2.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file