2017-03-20 18:44:53 +01:00
|
|
|
package net.Broken;
|
2016-12-08 20:05:23 +01:00
|
|
|
|
2018-01-12 12:50:12 +01:00
|
|
|
import net.Broken.Commands.Move;
|
|
|
|
import net.Broken.Commands.Music;
|
2018-04-28 22:57:48 +02:00
|
|
|
import net.Broken.DB.Entity.GuildPreferenceEntity;
|
|
|
|
import net.Broken.DB.Repository.GuildPreferenceRepository;
|
|
|
|
import net.Broken.DB.Repository.PlaylistRepository;
|
2018-02-15 02:02:35 +01:00
|
|
|
import net.Broken.Tools.AntiSpam;
|
2018-02-16 15:02:53 +01:00
|
|
|
import net.Broken.Tools.Command.CommandParser;
|
2018-02-26 11:39:13 +01:00
|
|
|
import net.Broken.Tools.EmbedMessageUtils;
|
2018-02-15 02:02:35 +01:00
|
|
|
import net.Broken.Tools.Moderateur;
|
2018-02-26 11:39:13 +01:00
|
|
|
import net.Broken.Tools.PrivateMessage;
|
2018-04-26 11:16:47 +02:00
|
|
|
import net.Broken.audio.AudioM;
|
2018-04-28 22:57:48 +02:00
|
|
|
import net.dv8tion.jda.core.entities.*;
|
2018-02-26 11:39:13 +01:00
|
|
|
import net.dv8tion.jda.core.events.ExceptionEvent;
|
2017-02-04 19:31:09 +01:00
|
|
|
import net.dv8tion.jda.core.events.ReadyEvent;
|
2017-09-04 18:36:23 +02:00
|
|
|
import net.dv8tion.jda.core.events.guild.member.GuildMemberJoinEvent;
|
2017-09-27 12:08:57 +02:00
|
|
|
import net.dv8tion.jda.core.events.guild.member.GuildMemberRoleRemoveEvent;
|
2017-11-04 18:27:18 +01:00
|
|
|
import net.dv8tion.jda.core.events.guild.voice.GuildVoiceLeaveEvent;
|
2016-12-08 20:05:23 +01:00
|
|
|
import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
|
|
|
|
import net.dv8tion.jda.core.hooks.ListenerAdapter;
|
|
|
|
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;
|
2018-04-28 22:57:48 +02:00
|
|
|
import org.springframework.context.ApplicationContext;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
2017-12-01 15:02:35 +01:00
|
|
|
|
2016-12-08 20:05:23 +01:00
|
|
|
|
|
|
|
/**
|
2018-02-28 17:59:09 +01:00
|
|
|
* Bot Listener
|
2016-12-08 20:05:23 +01:00
|
|
|
*/
|
|
|
|
public class BotListener extends ListenerAdapter {
|
2017-12-12 23:29:49 +01:00
|
|
|
private AntiSpam antispam=new AntiSpam();
|
|
|
|
private Moderateur modo = new Moderateur();
|
2018-04-28 22:57:48 +02:00
|
|
|
|
|
|
|
private GuildPreferenceRepository guildPreferenceRepository;
|
|
|
|
|
2017-12-12 23:29:49 +01:00
|
|
|
private Logger logger = LogManager.getLogger();
|
2017-02-04 19:31:09 +01:00
|
|
|
|
2018-04-28 22:57:48 +02:00
|
|
|
public BotListener() {
|
|
|
|
|
|
|
|
ApplicationContext context = SpringContext.getAppContext();
|
|
|
|
guildPreferenceRepository = (GuildPreferenceRepository) context.getBean("guildPreferenceRepository");
|
|
|
|
|
|
|
|
}
|
2017-02-04 19:31:09 +01:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onReady(ReadyEvent event) {
|
|
|
|
logger.info("Connection succees");
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2017-09-27 12:08:57 +02:00
|
|
|
@Override
|
|
|
|
public void onGuildMemberJoin(GuildMemberJoinEvent event) {
|
2018-04-28 22:57:48 +02:00
|
|
|
|
|
|
|
GuildPreferenceEntity guildPref = getPreference(event.getGuild());
|
|
|
|
|
|
|
|
if(guildPref.isDefaultRole()){
|
|
|
|
|
|
|
|
logger.info(event.getUser().getName()+ "join the guild, move it!");
|
|
|
|
|
|
|
|
List<Role> roles = new ArrayList<>();
|
|
|
|
roles.add(event.getGuild().getRoleById(guildPref.getDefaultRoleId()));
|
|
|
|
|
|
|
|
|
|
|
|
new Move().exc(event.getMember(), roles,false,event.getGuild(),event.getGuild().getManager());
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(guildPref.isWelcome()){
|
|
|
|
|
|
|
|
TextChannel chanel = event.getGuild().getTextChannelById(guildPref.getWelcomeChanelID());
|
|
|
|
if(chanel != null){
|
|
|
|
String message = guildPref.getWelcomeMessage();
|
|
|
|
message = message.replaceAll("@name", event.getMember().getAsMention());
|
|
|
|
logger.debug(message);
|
|
|
|
// "Salut "+event.getUser().getAsMention()+"! Ecris ton nom, prénom, ta promotion et ton groupe ici! Un admin te donnera accées a ton groupe!"
|
|
|
|
chanel.sendMessage(message).complete();
|
|
|
|
}
|
|
|
|
|
|
|
|
MainBot.roleFlag = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2017-09-27 12:08:57 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onGuildMemberRoleRemove(GuildMemberRoleRemoveEvent event) {
|
|
|
|
|
2018-04-28 22:57:48 +02:00
|
|
|
GuildPreferenceEntity guildPref = getPreference(event.getGuild());
|
|
|
|
if(guildPref.isDefaultRole()){
|
|
|
|
|
|
|
|
if(!MainBot.roleFlag){
|
|
|
|
|
|
|
|
if(event.getMember().getRoles().size() == 0){
|
|
|
|
|
|
|
|
logger.info(event.getUser().getName()+ "have no roles, move it!");
|
|
|
|
List<Role> roles = new ArrayList<>();
|
|
|
|
roles.add(event.getGuild().getRoleById(guildPref.getDefaultRoleId()));
|
|
|
|
|
|
|
|
|
|
|
|
new Move().exc(event.getMember(), roles,false,event.getGuild(),event.getGuild().getManager());
|
|
|
|
MainBot.roleFlag = false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
logger.debug("ignore it");
|
2017-09-27 12:08:57 +02:00
|
|
|
MainBot.roleFlag = false;
|
|
|
|
}
|
2018-04-28 22:57:48 +02:00
|
|
|
|
2017-09-27 12:08:57 +02:00
|
|
|
}
|
|
|
|
|
2018-04-28 22:57:48 +02:00
|
|
|
|
|
|
|
|
2017-09-27 12:08:57 +02:00
|
|
|
}
|
2017-02-04 19:31:09 +01:00
|
|
|
|
2017-11-06 16:22:15 +01:00
|
|
|
|
2017-11-04 18:27:18 +01:00
|
|
|
@Override
|
|
|
|
public void onGuildVoiceLeave(GuildVoiceLeaveEvent event) {
|
|
|
|
super.onGuildVoiceLeave(event);
|
2017-11-06 16:22:15 +01:00
|
|
|
if(event.getGuild().getAudioManager().isConnected())
|
2017-11-04 18:27:18 +01:00
|
|
|
{
|
|
|
|
logger.debug("User disconnected from voice channel.");
|
2017-11-06 16:22:15 +01:00
|
|
|
|
|
|
|
if(event.getGuild().getAudioManager().getConnectedChannel().getMembers().size() == 1){
|
2017-11-04 18:27:18 +01:00
|
|
|
logger.debug("I'm alone, close audio connection.");
|
2017-11-06 16:22:15 +01:00
|
|
|
|
2018-04-26 11:16:47 +02:00
|
|
|
AudioM.getInstance(event.getGuild()).stop();
|
2017-11-04 18:27:18 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-12-08 20:05:23 +01:00
|
|
|
@Override
|
|
|
|
public void onMessageReceived(MessageReceivedEvent event) {
|
2018-04-28 22:57:48 +02:00
|
|
|
// ----------------------Preference pour eviter eco de commande-------------------------
|
2017-03-20 21:01:49 +01:00
|
|
|
|
2017-12-01 15:02:35 +01:00
|
|
|
|
2018-02-26 11:39:13 +01:00
|
|
|
try{
|
2018-04-25 16:40:21 +02:00
|
|
|
if (event.getMessage().getContentRaw().startsWith("//") && !event.getMessage().getAuthor().getId().equals(event.getJDA().getSelfUser().getId())) {
|
2018-02-26 11:39:13 +01:00
|
|
|
//On a detecter que c'etait une commande
|
|
|
|
//System.out.println(event.getMessage().getContent());
|
2018-04-25 16:40:21 +02:00
|
|
|
MainBot.handleCommand(new CommandParser().parse(event.getMessage().getContentRaw(), event));
|
2017-09-27 12:08:57 +02:00
|
|
|
|
2018-02-26 11:39:13 +01:00
|
|
|
}
|
|
|
|
else if (!event.getMessage().getAuthor().getId().equals(event.getJDA().getSelfUser().getId()))
|
|
|
|
{
|
2017-09-04 18:36:23 +02:00
|
|
|
|
2018-02-26 11:39:13 +01:00
|
|
|
if(!event.isFromType(ChannelType.PRIVATE)) {
|
2017-09-04 18:36:23 +02:00
|
|
|
|
2017-09-27 12:08:57 +02:00
|
|
|
|
2018-02-26 11:39:13 +01:00
|
|
|
|
2018-04-28 22:57:48 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Guild serveur = event.getGuild();
|
|
|
|
GuildPreferenceEntity guildPref = getPreference(serveur);
|
|
|
|
|
|
|
|
if(!guildPref.isAntiSpam())
|
|
|
|
return;
|
|
|
|
|
|
|
|
GuildManager guildManager = serveur.getManager();
|
|
|
|
Member user = event.getMember();
|
|
|
|
|
|
|
|
// appel de la methode d'analyse de message de "Moderateur"
|
|
|
|
if (event.getMessage().getContentRaw().length() > 0) {
|
|
|
|
|
|
|
|
if (modo.analyse(user, serveur, guildManager, event) == 1) {
|
|
|
|
antispam.extermine(user, serveur, guildManager, true, event);
|
|
|
|
}
|
|
|
|
} else if (event.getMessage().getContentRaw().length() == 0)
|
|
|
|
logger.error("Image detected, ignoring it.");
|
2016-12-08 20:05:23 +01:00
|
|
|
}
|
2017-03-20 21:01:49 +01:00
|
|
|
|
|
|
|
|
2018-02-26 11:39:13 +01:00
|
|
|
}
|
|
|
|
}catch (Exception e){
|
|
|
|
logger.catching(e);
|
2016-12-08 20:05:23 +01:00
|
|
|
|
2018-02-26 11:39:13 +01:00
|
|
|
if(event.isFromType(ChannelType.PRIVATE))
|
|
|
|
PrivateMessage.send(event.getAuthor(), EmbedMessageUtils.getInternalError(), logger);
|
|
|
|
else
|
|
|
|
event.getTextChannel().sendMessage(EmbedMessageUtils.getInternalError()).queue();
|
|
|
|
}
|
2016-12-08 20:05:23 +01:00
|
|
|
|
2017-09-04 18:36:23 +02:00
|
|
|
|
2016-12-08 20:05:23 +01:00
|
|
|
|
|
|
|
}
|
2018-02-26 11:39:13 +01:00
|
|
|
|
2018-04-28 22:57:48 +02:00
|
|
|
|
|
|
|
|
|
|
|
private GuildPreferenceEntity getPreference(Guild guild){
|
|
|
|
List<GuildPreferenceEntity> guildPrefList = guildPreferenceRepository.findByGuildId(guild.getId());
|
|
|
|
GuildPreferenceEntity guildPref;
|
|
|
|
if(guildPrefList.isEmpty()){
|
|
|
|
logger.info("Generate default pref");
|
|
|
|
guildPref = GuildPreferenceEntity.getDefault(guild);
|
|
|
|
guildPreferenceRepository.save(guildPref);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
guildPref = guildPrefList.get(0);
|
|
|
|
return guildPref;
|
|
|
|
}
|
|
|
|
|
2016-12-08 20:05:23 +01:00
|
|
|
}
|