164 lines
6.3 KiB
Java
Raw Normal View History

package net.Broken.Tools;
2016-12-08 20:05:23 +01:00
2017-03-20 18:44:53 +01:00
import net.Broken.MainBot;
2018-01-12 12:50:12 +01:00
import net.Broken.Commands.Move;
2017-10-04 12:14:21 +02:00
import net.dv8tion.jda.core.entities.*;
2016-12-08 20:05:23 +01:00
import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
2017-09-27 12:08:57 +02:00
import net.dv8tion.jda.core.exceptions.HierarchyException;
2016-12-08 20:05:23 +01:00
import net.dv8tion.jda.core.managers.GuildManager;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
2016-12-08 20:05:23 +01:00
2017-10-04 12:14:21 +02:00
import java.util.ArrayList;
2016-12-08 20:05:23 +01:00
import java.util.List;
import static java.lang.Thread.sleep;
/**
2018-02-28 17:59:09 +01:00
* AntiSpam punishment system
2016-12-08 20:05:23 +01:00
*/
public class AntiSpam {
2018-02-28 17:59:09 +01:00
Logger logger = LogManager.getLogger();
public Move move = new Move();
2016-12-08 20:05:23 +01:00
public AntiSpam() {
}
2018-02-28 17:59:09 +01:00
/**
* Send user to Spam role
* @param user User to punish
* @param guild Guild
* @param guildManager GuildManager
* @param incrMulti True for increment punishment time
* @param event Message Received Event
*/
public void extermine(Member user, Guild guild, GuildManager guildManager, Boolean incrMulti, MessageReceivedEvent event){
2016-12-08 20:05:23 +01:00
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// On créer un nouvelle case dans le tableau des statuts si il n'y est pas
2018-04-26 17:32:38 +02:00
if(!MainBot.spamUtils.containsKey(user))
2016-12-08 20:05:23 +01:00
{
2017-10-04 12:14:21 +02:00
List<Message> messages = new ArrayList<>();
2018-04-26 17:32:38 +02:00
messages.addAll(MainBot.historique.get(user));
MainBot.spamUtils.put(user,new UserSpamUtils(user,messages));
2016-12-08 20:05:23 +01:00
}
// On verrifie que l'uttilisateur n'est pas deja en spam
2018-04-26 17:32:38 +02:00
if(!MainBot.spamUtils.get(user).isOnSpam())
2016-12-08 20:05:23 +01:00
{
//l'utilisateur n'est pas deja en spam
2018-04-26 17:32:38 +02:00
if(MainBot.spamUtils.get(user).getMultip() != 0)
2016-12-08 20:05:23 +01:00
{
2018-04-26 17:32:38 +02:00
if(MainBot.spamUtils.get(user).getMultip()<45 && incrMulti)
2016-12-08 20:05:23 +01:00
{
2018-04-26 17:32:38 +02:00
MainBot.spamUtils.get(user).setMultip(MainBot.spamUtils.get(user).getMultip()*2);
2016-12-08 20:05:23 +01:00
}
}
else
2018-04-26 17:32:38 +02:00
MainBot.spamUtils.get(user).setMultip(1);
2016-12-08 20:05:23 +01:00
2018-04-26 17:32:38 +02:00
logger.info("Punition de "+user.getEffectiveName()+" avec un multiplicateur de "+MainBot.spamUtils.get(user));
2016-12-08 20:05:23 +01:00
2018-04-26 17:32:38 +02:00
if(!MainBot.spamUtils.get(user).isOnSpam())
2016-12-08 20:05:23 +01:00
{
2018-04-26 17:32:38 +02:00
MainBot.spamUtils.get(user).setOnSpam(true);
2018-02-28 17:59:09 +01:00
List<Role> spm = guild.getRolesByName("Spammer", false);
2017-09-27 12:08:57 +02:00
try{
2018-02-28 17:59:09 +01:00
move.exc(user, spm, true, guild, guildManager);
2018-04-26 17:32:38 +02:00
MainBot.spamUtils.get(user).addMessage(event.getTextChannel().sendMessage(EmbedMessageUtils.getSpamExtermine(user,MainBot.spamUtils.get(user.getUser()).getMultip())).complete());
MainBot.spamUtils.get(user).setMinuteur(new Minuteur(MainBot.spamUtils.get(user).getMultip(), move.user, move.saveRoleUser, move.serveur, move.serveurManager,event));
MainBot.spamUtils.get(user).launchMinuteur();
2017-09-27 12:08:57 +02:00
}catch (HierarchyException e){
2017-10-16 17:03:17 +02:00
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getMoveError("Impossible de déplacer un "+user.getRoles().get(0).getAsMention())).complete();
List<Message> messages = new ArrayList<Message>(){{
add(rest);
add(event.getMessage());
}};
new MessageTimeOut(messages,MainBot.messageTimeOut).start();
2018-04-26 17:32:38 +02:00
MainBot.spamUtils.get(user).setOnSpam(false);
2017-09-27 12:08:57 +02:00
}
2016-12-08 20:05:23 +01:00
}
}
}
2018-02-28 17:59:09 +01:00
/**
* Timer to auto remove user from Spam role
*/
2016-12-08 20:05:23 +01:00
public class Minuteur extends Thread{
public TextChannel chanel;
public List<Role> saveRoleUser;
public Member user;
public Guild serveur;
public GuildManager serveurManager;
public int multip;
public MessageReceivedEvent event;
2017-09-05 02:13:27 +02:00
public int timeLeft;
2016-12-08 20:05:23 +01:00
public Minuteur(int multip, Member user, List<Role> saveRoleUser, Guild serveur, GuildManager serveurManager, MessageReceivedEvent event )
{
this.multip=multip;
this.user=user;
this.saveRoleUser=saveRoleUser;
this.serveur=serveur;
this.serveurManager=serveurManager;
this.event=event;
this.chanel=event.getTextChannel();
2017-09-05 02:13:27 +02:00
this.timeLeft = 60*multip;
2016-12-08 20:05:23 +01:00
}
@Override
public void run() {
logger.info("["+user.getEffectiveName()+"] Démarage pour "+multip+"min");
2017-09-05 02:13:27 +02:00
while (MainBot.spamUtils.get(user.getUser()).isOnSpam())
2016-12-08 20:05:23 +01:00
{
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
2017-09-05 02:13:27 +02:00
if(timeLeft<=0)
2016-12-08 20:05:23 +01:00
{
2017-09-05 02:13:27 +02:00
MainBot.spamUtils.get(user.getUser()).setOnSpam(false);
2016-12-08 20:05:23 +01:00
}
2017-09-05 02:13:27 +02:00
timeLeft--;
2016-12-08 20:05:23 +01:00
}
logger.info("["+user.getEffectiveName()+"] Fin de spam pour "+user.getEffectiveName()+" apres "+multip+"min.");
2017-09-27 12:08:57 +02:00
try {
2017-10-09 17:32:16 +02:00
move.exc(user, saveRoleUser, true, serveur, serveurManager); //aSaveroleUser=saveRoleUser.get(i)
2017-09-27 12:08:57 +02:00
}catch (HierarchyException e){
2017-10-16 17:03:17 +02:00
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getMoveError("Impossible de déplacer un "+user.getRoles().get(0).getAsMention())).complete();
List<Message> messages = new ArrayList<Message>(){{
add(rest);
add(event.getMessage());
}};
new MessageTimeOut(messages,MainBot.messageTimeOut).start();
2017-09-27 12:08:57 +02:00
logger.error("Hierarchy error");
}
logger.info("["+user.getEffectiveName()+"] Fin des "+multip+"min");
2017-10-04 12:14:21 +02:00
new MessageTimeOut(new ArrayList<>(MainBot.spamUtils.get(user.getUser()).getMessages()),0).start();
MainBot.spamUtils.get(user.getUser()).clearAndAdd(chanel.sendMessage(EmbedMessageUtils.getSpamPardon(user)).complete());
new MessageTimeOut(MainBot.spamUtils.get(user.getUser()).getMessages(),60).start();
2016-12-08 20:05:23 +01:00
// #-----------------------------------------------#
}
}
}