2018-02-15 02:02:35 +01:00
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 ;
2017-02-04 19:31:09 +01:00
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 ( ) {
2017-02-04 19:31:09 +01:00
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
}
2017-02-04 19:31:09 +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 " ) ;
}
2017-02-04 19:31:09 +01:00
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
// #-----------------------------------------------#
}
}
}