Resolving somme conflict

This commit is contained in:
BrokenFire 2017-03-20 21:01:49 +01:00
parent c466102448
commit 6986532c0e
20 changed files with 235 additions and 761 deletions

View File

@ -2,6 +2,7 @@ package net.Broken;
import net.Broken.Outils.AntiSpam; import net.Broken.Outils.AntiSpam;
import net.Broken.Outils.Moderateur; 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.Guild;
import net.dv8tion.jda.core.entities.Member; import net.dv8tion.jda.core.entities.Member;
import net.dv8tion.jda.core.events.ReadyEvent; import net.dv8tion.jda.core.events.ReadyEvent;
@ -34,6 +35,7 @@ public class BotListener extends ListenerAdapter {
// ----------------------Test pour eviter eco de commande------------------------- // ----------------------Test pour eviter eco de commande-------------------------
try try
{ {
if (event.getMessage().getContent().startsWith("//") && event.getMessage().getAuthor().getId() != event.getJDA().getSelfUser().getId()) { if (event.getMessage().getContent().startsWith("//") && event.getMessage().getAuthor().getId() != event.getJDA().getSelfUser().getId()) {
//On a detecter que c'etait une commande //On a detecter que c'etait une commande
//System.out.println(event.getMessage().getContent()); //System.out.println(event.getMessage().getContent());
@ -51,6 +53,8 @@ public class BotListener extends ListenerAdapter {
GuildManager guildManager = serveur.getManager(); GuildManager guildManager = serveur.getManager();
Member user = event.getMember(); Member user = event.getMember();
if(!event.isFromType(ChannelType.PRIVATE))
{
// appel de la methode d'analyse de message de "Moderateur" // appel de la methode d'analyse de message de "Moderateur"
if(!event.getAuthor().getName().equals("Aethex") && event.getMessage().getContent().length()>0) { if(!event.getAuthor().getName().equals("Aethex") && event.getMessage().getContent().length()>0) {
@ -60,6 +64,9 @@ public class BotListener extends ListenerAdapter {
} }
else if(event.getMessage().getContent().length() == 0) else if(event.getMessage().getContent().length() == 0)
logger.error("Image detected, ignoring it."); logger.error("Image detected, ignoring it.");
}
} }

View File

@ -1,4 +1,4 @@
package net.borken.commandes; package net.Broken.Commandes;
/** /**
* Created by sebastien on 13/03/17. * Created by sebastien on 13/03/17.

View File

@ -1,17 +1,15 @@
package net.Broken; package net.Broken;
import net.Broken.Commandes.Over18.*;
import net.Broken.Outils.CommandParser; import net.Broken.Outils.CommandParser;
import net.Broken.Outils.DayListener; import net.Broken.Outils.DayListener;
import net.Broken.Outils.Redirection; import net.Broken.Outils.Redirection;
import net.Broken.Commandes.*; import net.Broken.Commandes.*;
import net.Broken.Commandes.Over18.*;
import net.dv8tion.jda.core.AccountType; import net.dv8tion.jda.core.AccountType;
import net.dv8tion.jda.core.JDA; import net.dv8tion.jda.core.JDA;
import net.dv8tion.jda.core.JDABuilder; import net.dv8tion.jda.core.JDABuilder;
import net.dv8tion.jda.core.OnlineStatus; import net.dv8tion.jda.core.OnlineStatus;
import net.dv8tion.jda.core.entities.Game; import net.dv8tion.jda.core.entities.*;
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.events.message.MessageReceivedEvent;
import net.dv8tion.jda.core.exceptions.RateLimitedException; import net.dv8tion.jda.core.exceptions.RateLimitedException;
import net.dv8tion.jda.core.managers.GuildManager; import net.dv8tion.jda.core.managers.GuildManager;
@ -20,10 +18,7 @@ import org.apache.logging.log4j.Logger;
import javax.security.auth.login.LoginException; import javax.security.auth.login.LoginException;
import java.io.IOException; import java.io.IOException;
import java.util.HashMap; import java.util.*;
import java.util.Hashtable;
import java.util.List;
import java.util.Scanner;
/** /**
* Created by seb65 on 19/10/2016. * Created by seb65 on 19/10/2016.
@ -40,6 +35,8 @@ public class MainBot {
public static Hashtable<Member,Integer> userMulti = new Hashtable(); public static Hashtable<Member,Integer> userMulti = new Hashtable();
public static Hashtable<Member,Boolean> minuteurStatut = new Hashtable<>(); public static Hashtable<Member,Boolean> minuteurStatut = new Hashtable<>();
public static ArrayList<Class<?>> privateUsableCommand = new ArrayList<>();
static Logger logger = LogManager.getLogger(); static Logger logger = LogManager.getLogger();
public static void main(String[] args) throws IOException { 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 = new JDABuilder(AccountType.BOT).addListener(new BotListener()).setToken(args[0]).setBulkDeleteSplittingEnabled(false).buildBlocking();
jda.setAutoReconnect(true); jda.setAutoReconnect(true);
jda.addEventListener(); jda.addEventListener();
jda.addEventListener();
okInit=true; okInit=true;
@ -84,21 +82,29 @@ public class MainBot {
//Connection reussi //Connection reussi
if(okInit) if(okInit)
{ {
jda.getPresence().setGame(Game.of("Statut: Loading..."));
jda.getTextChannels().forEach(textChannel -> textChannel.sendTyping().queue());
/************************************* /*************************************
* Definition des commande * * Definition des commande *
*************************************/ *************************************/
jda.getPresence().setGame(Game.of("Statut: Loading..."));
jda.getTextChannels().forEach(MessageChannel::sendTyping);
commandes.put("ping", new PingCommande()); commandes.put("ping", new PingCommande());
commandes.put("help",new Help()); commandes.put("help",new Help());
commandes.put("move", new Move()); commandes.put("move", new Move());
commandes.put("spam", new Spam()); commandes.put("spam", new Spam());
jda.getTextChannels().forEach(MessageChannel::sendTyping);
commandes.put("ass",new Ass()); commandes.put("ass",new Ass());
jda.getTextChannels().forEach(MessageChannel::sendTyping);
commandes.put("boobs",new Boobs()); commandes.put("boobs",new Boobs());
jda.getTextChannels().forEach(MessageChannel::sendTyping);
commandes.put("pipe",new Pipe()); commandes.put("pipe",new Pipe());
jda.getTextChannels().forEach(MessageChannel::sendTyping);
commandes.put("sm",new SM()); commandes.put("sm",new SM());
commandes.put("madame",new Madame()); commandes.put("madame",new Madame());
commandes.put("cat",new Cat()); commandes.put("cat",new Cat());
privateUsableCommand.add(Help.class);
privateUsableCommand.add(PingCommande.class);
//On recupere le l'id serveur //On recupere le l'id serveur
Guild serveur = jda.getGuilds().get(0); Guild serveur = jda.getGuilds().get(0);
@ -135,8 +141,6 @@ public class MainBot {
/*List<User> userAction = serveur.getUsersByName("Broken_Fire"); /*List<User> userAction = serveur.getUsersByName("Broken_Fire");
new Move().exc(userAction.get(0),"Big Daddy",true,serveur,serveur.getManager());*/ new Move().exc(userAction.get(0),"Big Daddy",true,serveur,serveur.getManager());*/
Redirection urlRedirect=new Redirection(); Redirection urlRedirect=new Redirection();
jda.getPresence().setGame(Game.of("Statut: Ok"));
} }
@ -149,15 +153,29 @@ public class MainBot {
{ {
//On verifie que la commande existe //On verifie que la commande existe
if (commandes.containsKey(cmd.commande)) 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).action(cmd.args, cmd.event);
commandes.get(cmd.commande).executed(true, 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 else
{ {
MessageReceivedEvent event = cmd.event; 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"); logger.info("Commande inconnue");
} }

View File

@ -1,7 +1,9 @@
package net.Broken.commandes; package net.Broken.Commandes;
import net.Broken.Commande; import net.Broken.Commande;
import net.Broken.Outils.Redirection; import net.Broken.Outils.Redirection;
import net.dv8tion.jda.core.entities.ChannelType;
import net.dv8tion.jda.core.events.message.MessageReceivedEvent; import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
import java.io.BufferedReader; import java.io.BufferedReader;
@ -22,6 +24,8 @@ public class Cat implements Commande{
@Override @Override
public void action(String[] args, MessageReceivedEvent event) { public void action(String[] args, MessageReceivedEvent event) {
Redirection redirect= new Redirection(); Redirection redirect= new Redirection();
if(!event.isFromType(ChannelType.PRIVATE))
{
try { try {
String catLine=null; String catLine=null;
@ -54,6 +58,10 @@ public class Cat implements Commande{
e.printStackTrace(); e.printStackTrace();
} }
} }
else
event.getPrivateChannel().sendMessage("\n:warning: **__Commande non disponible en priver!__** :warning:");
}
@Override @Override
public String help(String[] args) { public String help(String[] args) {

View File

@ -1,4 +1,4 @@
package net.Broken.commandes; package net.Broken.Commandes;
import net.Broken.Commande; import net.Broken.Commande;
import net.Broken.MainBot; import net.Broken.MainBot;

View File

@ -1,10 +1,7 @@
package net.Broken.commandes; package net.Broken.Commandes;
import net.Broken.Commande; import net.Broken.Commande;
import net.dv8tion.jda.core.entities.Guild; import net.dv8tion.jda.core.entities.*;
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.events.message.MessageReceivedEvent; import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
import net.dv8tion.jda.core.managers.GuildController; import net.dv8tion.jda.core.managers.GuildController;
import net.dv8tion.jda.core.managers.GuildManager; import net.dv8tion.jda.core.managers.GuildManager;
@ -88,6 +85,8 @@ public class Move implements Commande {
* @param event * @param event
*/ */
public void action(String[] args, MessageReceivedEvent event) public void action(String[] args, MessageReceivedEvent event)
{
if(!event.isFromType(ChannelType.PRIVATE))
{ {
if(args.length>=2) if(args.length>=2)
{ {
@ -136,6 +135,10 @@ public class Move implements Commande {
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.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:");

View File

@ -1,4 +1,4 @@
package net.Broken.commandes; package net.Broken.Commandes;
import net.Broken.Commande; import net.Broken.Commande;
import net.Broken.Outils.LimitChecker; import net.Broken.Outils.LimitChecker;
import net.Broken.Outils.Redirection; import net.Broken.Outils.Redirection;
@ -7,6 +7,8 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import java.io.IOException; import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
/** /**
* Created by seb65 on 07/11/2016. * Created by seb65 on 07/11/2016.
@ -38,10 +40,12 @@ public abstract class NumberedCommande implements Commande{
@Override @Override
public void action(String[] args, MessageReceivedEvent event) { public void action(String[] args, MessageReceivedEvent event) {
if(args.length == 0)
{
if(event.getTextChannel().getName().equals("over18")) { if(event.getTextChannel().getName().equals("over18")) {
Redirection redirect= new Redirection(); Redirection redirect= new Redirection();
int randomResult = (int) (minNumber + (Math.random() * (maxNumber - minNumber))); int randomResult = (int) (minNumber + (Math.random() * (maxNumber - minNumber)));
event.getTextChannel().sendMessage(baseURL+randomResult+"-2/").queue(); event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n"+baseURL+randomResult+"-2/").queue();
} }
else else
{ {
@ -50,10 +54,71 @@ public abstract class NumberedCommande implements Commande{
logger.warn("Erreur chanel."); logger.warn("Erreur chanel.");
} }
} }
else
{
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();
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 @Override
public String help(String[] args) { 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 <numero>`\n:arrow_right: *Affiche l'image portant le numero donné*";
} }
@Override @Override

View File

@ -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; import org.apache.logging.log4j.LogManager;
/** /**
@ -11,4 +11,9 @@ public class Ass extends NumberedCommande {
public Ass() { public Ass() {
super(LogManager.getLogger(), "http://les400culs.com/"); super(LogManager.getLogger(), "http://les400culs.com/");
} }
@Override
public String toString() {
return "Ass";
}
} }

View File

@ -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; import org.apache.logging.log4j.LogManager;
/** /**
@ -11,4 +11,8 @@ public class Boobs extends NumberedCommande {
public Boobs() { public Boobs() {
super(LogManager.getLogger(), "http://lesaintdesseins.fr/"); super(LogManager.getLogger(), "http://lesaintdesseins.fr/");
} }
@Override
public String toString() {
return "Boobs";
}
} }

View File

@ -1,4 +1,4 @@
package net.Broken.commandes.Over18; package net.Broken.Commandes.Over18;
import net.Broken.Commande; import net.Broken.Commande;
import net.Broken.Outils.Redirection; import net.Broken.Outils.Redirection;

View File

@ -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; import org.apache.logging.log4j.LogManager;
/** /**
@ -45,4 +45,8 @@ public class Pipe extends NumberedCommande {
in.close(); in.close();
event.getTextChannel().sendMessage(redirect.get("http://feelation.com/random")).queue(); event.getTextChannel().sendMessage(redirect.get("http://feelation.com/random")).queue();
*/ */
@Override
public String toString() {
return "Pipe";
}
} }

View File

@ -1,4 +1,4 @@
package net.Broken.commandes.Over18; package net.Broken.Commandes.Over18;
import net.Broken.Commande; import net.Broken.Commande;
import net.Broken.Outils.Redirection; import net.Broken.Outils.Redirection;

View File

@ -1,9 +1,13 @@
package net.Broken.commandes; package net.Broken.Commandes;
import net.Broken.Commande; import net.Broken.Commande;
import net.dv8tion.jda.core.entities.ChannelType;
import net.dv8tion.jda.core.events.message.MessageReceivedEvent; import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import java.sql.Timestamp;
import java.time.*;
/** /**
* Created by seb65 on 19/10/2016. * Created by seb65 on 19/10/2016.
@ -19,8 +23,11 @@ public class PingCommande implements Commande {
@Override @Override
public void action(String[] args, MessageReceivedEvent event) { public void action(String[] args, MessageReceivedEvent event) {
long receivedTime = Timestamp.valueOf(LocalDateTime.ofInstant(event.getMessage().getCreationTime().toInstant(), ZoneId.systemDefault())).getTime();
event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+" Pong!").queue(); 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"); LogManager.getLogger().info("pong");
} }

View File

@ -1,4 +1,4 @@
package net.Broken.commandes; package net.Broken.Commandes;
import net.Broken.Commande; import net.Broken.Commande;
import net.Broken.MainBot; import net.Broken.MainBot;

View File

@ -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());
}
}
}
}

View File

@ -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<String, Commande> commandes = new HashMap<>();
public static boolean okInit=false;
public static HashMap<Member, String[]> historique =new HashMap<>();
public static HashMap<Member, Integer> message_compteur =new HashMap<>();
public static Hashtable<Member,Integer> userMulti = new Hashtable();
public static Hashtable<Member,Boolean> minuteurStatut = new Hashtable<>();
public static ArrayList<Class<?>> 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<Member> utilisateurCo = serveur.getMembers();
logger.info("Utilisatieur connecté: ");
for (Member anUtilisateurCo : utilisateurCo) //= for(int i=0; i<utilisateurCo.size(); i++)
{
if(anUtilisateurCo.getOnlineStatus().equals(OnlineStatus.ONLINE))
logger.info("\t*" + anUtilisateurCo.getEffectiveName()); //anUtilisateurCo = utilisateurCo.get(i)
}
logger.info("Utilisatieur absent: ");
for (Member anUtilisateurCo : utilisateurCo) //= for(int i=0; i<utilisateurCo.size(); i++)
{
if(anUtilisateurCo.getOnlineStatus().equals(OnlineStatus.DO_NOT_DISTURB))
logger.info("\t*" + anUtilisateurCo.getEffectiveName()); //anUtilisateurCo = utilisateurCo.get(i)
}
logger.info("Utilisatieur hors ligne: ");
for (Member anUtilisateurCo : utilisateurCo) //= for(int i=0; i<utilisateurCo.size(); i++)
{
if(anUtilisateurCo.getOnlineStatus().equals(OnlineStatus.OFFLINE))
logger.info("\t*" + anUtilisateurCo.getEffectiveName()); //anUtilisateurCo = utilisateurCo.get(i)
}
ModoTimer modotimer = new ModoTimer();
modotimer.start();
DayListener dayListener =new DayListener();
dayListener.start();
logger.info("-----------------FIN INITIALISATION-----------------");
/*List<User> 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.size(); i++)
{
MainBot.message_compteur.put(unUser, 0);
}
}
}
}
public static class Stop extends Thread
{
@Override
public void run() {
Scanner scanner = new Scanner(System.in);
String txtEntré = "";
while(!txtEntré.equals("o")&&!txtEntré.equals("O"))
{
while (!txtEntré.equals("stop"))
{
txtEntré = scanner.nextLine();
}
logger.warn("Etes-vous sur de vouloir arréter le Bot? (o/n)");
txtEntré = scanner.nextLine();
if(txtEntré.equals("n")||txtEntré.equals("N"))
{
logger.info("Arret du Bot annulé.");
}
}
Runtime.getRuntime().exit(0);
}
}
}

View File

@ -1,74 +0,0 @@
package net.borken.commandes;
import net.borken.Commande;
import net.borken.Outils.Redirection;
import net.dv8tion.jda.core.entities.ChannelType;
import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
/**
* Created by Seb on 06/02/2017.
*/
public class Cat implements Commande{
@Override
public boolean called(String[] args, MessageReceivedEvent event) {
return false;
}
@Override
public void action(String[] args, MessageReceivedEvent event) {
Redirection redirect= new Redirection();
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"))
{
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();
}
}
else
event.getPrivateChannel().sendMessage("\n:warning: **__Commande non disponible en priver!__** :warning:");
}
@Override
public String help(String[] args) {
return "";
}
@Override
public void executed(boolean success, MessageReceivedEvent event) {
}
}

View File

@ -1,171 +0,0 @@
package net.borken.commandes;
import net.borken.Commande;
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;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* Created by seb65 on 20/10/2016.
*/
/**
*
*/
public class Move implements Commande {
Logger logger = LogManager.getLogger();
private String HELP="`//move <@utilisateur> <@rôleCible>`\n:arrow_right:\t*Deplacement d'un utilisateur vers un rôle cible, attention à bien faire des montions.*";
public List<Role> 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<Role> allRoll = serveur.getRoles();
//On recupere les roles de l'utilisateur
List<Role> 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<Role> 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<User> userL = event.getMessage().getMentionedUsers();
List<Role> 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) {
}
}

View File

@ -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;
}
}

View File

@ -1,29 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="error">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%highlight{[%d{HH:mm:ss.SSS}][%-5level]%logger{36}: %msg%n}{FATAL=red blink, ERROR=red, WARN=bright yellow , INFO=blue, DEBUG=bright black, TRACE=cyan}" />
<!--{FATAL=red blink, ERROR=red, WARN=orange, INFO=yellow, DEBUG=green bold, TRACE=blue}-->
</Console>
<!--
<RollingFile name="RollingFile" fileName="/home/pi/Interface/logs/domo.log"
filePattern="/home/pi/Interface/logs/$${date:yyyy-MM}/domo-%d{yyyy-MM-dd-HH}-%i.log.gz">
<PatternLayout>
<Pattern>[%d{yyy-MM-dd ~ HH:mm:ss.SSS}][%-5level]%logger{36}: %msg%n</Pattern>
</PatternLayout>
<Policies>
<OnStartupTriggeringPolicy minSize="1B"/>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="250 MB"/>
</Policies>
</RollingFile>
-->
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="Console" level="trace"/>
<!-- <AppenderRef ref="RollingFile" level="info"/>-->
</Root>
</Loggers>
</Configuration>