Format
This commit is contained in:
parent
12230218df
commit
9517a0a318
@ -9,31 +9,36 @@ import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
public interface Commande {
|
||||
/**
|
||||
* Main action of command
|
||||
* @param args Command args.
|
||||
*
|
||||
* @param args Command args.
|
||||
* @param event Command MessageReceivedEvent
|
||||
*/
|
||||
void action(String[] args, MessageReceivedEvent event);
|
||||
|
||||
/**
|
||||
* Determines if the command is usable whit private message
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
boolean isPrivateUsable();
|
||||
|
||||
/**
|
||||
* Determines if the command is usable only by admin user
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
boolean isAdminCmd();
|
||||
|
||||
/**
|
||||
* Determines if the command is usable only by bot level admin user
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
boolean isBotAdminCmd();
|
||||
|
||||
/**
|
||||
* Determines if the command is only usable on NSFW channels
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
boolean isNSFW();
|
||||
|
@ -20,8 +20,7 @@ public class Cat implements Commande {
|
||||
@Override
|
||||
public void action(String[] args, MessageReceivedEvent event) {
|
||||
|
||||
if(!event.isFromType(ChannelType.PRIVATE))
|
||||
{
|
||||
if (!event.isFromType(ChannelType.PRIVATE)) {
|
||||
try {
|
||||
URL urlC = new URL("http://aws.random.cat/meow");
|
||||
URLConnection yc = urlC.openConnection();
|
||||
@ -40,8 +39,7 @@ public class Cat implements Commande {
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
else
|
||||
} else
|
||||
event.getPrivateChannel().sendMessage("\n:warning: **__This command cannot be used there !__** :warning:").queue();
|
||||
|
||||
}
|
||||
|
@ -3,7 +3,6 @@ package net.Broken.Commands;
|
||||
import net.Broken.Commande;
|
||||
import net.Broken.Tools.EmbedMessageUtils;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import net.dv8tion.jda.api.entities.MessageHistory;
|
||||
import net.dv8tion.jda.api.entities.TextChannel;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
@ -24,20 +23,19 @@ public class ChannelsReview implements Commande {
|
||||
public void action(String[] args, MessageReceivedEvent event) {
|
||||
DateFormat format = new SimpleDateFormat("dd.MM.yyyy");
|
||||
event.getTextChannel().sendMessage("Number of channels found in total : " + event.getGuild().getTextChannels().size()).queue();
|
||||
if(args.length>=1){
|
||||
if (args.length >= 1) {
|
||||
try {
|
||||
SendBackBefore(format.parse(args[0]), event, format );
|
||||
SendBackBefore(format.parse(args[0]), event, format);
|
||||
} catch (ParseException e) {
|
||||
logger.warn("Can't parse date : " + e.getMessage());
|
||||
}
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
SendBack(event);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void SendBackBefore(Date beforeDate,MessageReceivedEvent event,DateFormat format ){
|
||||
private void SendBackBefore(Date beforeDate, MessageReceivedEvent event, DateFormat format) {
|
||||
HashMap<String, String> result = new HashMap<>();
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy").withLocale(Locale.ENGLISH);
|
||||
int charCtl = 0;
|
||||
@ -46,7 +44,7 @@ public class ChannelsReview implements Commande {
|
||||
String lastMessageId = textChannel.getLatestMessageId();
|
||||
try {
|
||||
Message lastMessage = textChannel.retrieveMessageById(lastMessageId).complete();
|
||||
if(beforeDate.compareTo(format.parse(lastMessage.getTimeCreated().format(formatter)))>0){
|
||||
if (beforeDate.compareTo(format.parse(lastMessage.getTimeCreated().format(formatter))) > 0) {
|
||||
logger.debug("Last message in channel " + textChannel.toString() + " is " + lastMessageId);
|
||||
String date = lastMessage.getTimeCreated().format(formatter);
|
||||
charCtl += textChannel.getName().length() + date.length();
|
||||
@ -72,7 +70,7 @@ public class ChannelsReview implements Commande {
|
||||
event.getTextChannel().sendMessage(EmbedMessageUtils.getLastMessageFromTextChannel(result)).queue();
|
||||
}
|
||||
|
||||
private void SendBack(MessageReceivedEvent event){
|
||||
private void SendBack(MessageReceivedEvent event) {
|
||||
HashMap<String, String> result = new HashMap<>();
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd MMMM yyyy").withLocale(Locale.ENGLISH);
|
||||
int charCtl = 0;
|
||||
|
@ -3,32 +3,22 @@ package net.Broken.Commands;
|
||||
import groovy.lang.Binding;
|
||||
import groovy.lang.GroovyShell;
|
||||
import net.Broken.Commande;
|
||||
import net.Broken.DB.Entity.UserEntity;
|
||||
import net.Broken.DB.Repository.GuildPreferenceRepository;
|
||||
import net.Broken.DB.Repository.UserRepository;
|
||||
import net.Broken.SpringContext;
|
||||
import net.Broken.Tools.EmbedMessageUtils;
|
||||
import net.Broken.Tools.MessageTimeOut;
|
||||
import net.Broken.Tools.PrivateMessage;
|
||||
import net.dv8tion.jda.api.EmbedBuilder;
|
||||
import net.dv8tion.jda.api.entities.ChannelType;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
|
||||
import java.awt.*;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
import java.util.List;
|
||||
|
||||
public class Code implements Commande {
|
||||
|
||||
private UserRepository userRepository;
|
||||
private Logger logger = LogManager.getLogger();
|
||||
|
||||
public Code (){
|
||||
public Code() {
|
||||
ApplicationContext context = SpringContext.getAppContext();
|
||||
userRepository = (UserRepository) context.getBean("userRepository");
|
||||
}
|
||||
@ -39,7 +29,7 @@ public class Code implements Commande {
|
||||
|
||||
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
for(String arg : args){
|
||||
for (String arg : args) {
|
||||
stringBuilder.append(arg);
|
||||
stringBuilder.append(" ");
|
||||
}
|
||||
@ -48,27 +38,26 @@ public class Code implements Commande {
|
||||
binding.setVariable("event", event);
|
||||
GroovyShell shell = new GroovyShell(binding);
|
||||
EmbedBuilder builder;
|
||||
try{
|
||||
try {
|
||||
Object value = shell.evaluate(stringBuilder.toString());
|
||||
StringBuilder stringResult = new StringBuilder();
|
||||
|
||||
if(value.getClass().isArray()){
|
||||
if (value.getClass().isArray()) {
|
||||
Object[] array = (Object[]) value;
|
||||
for(Object obj : array){
|
||||
if(stringResult.length() < 1800){
|
||||
for (Object obj : array) {
|
||||
if (stringResult.length() < 1800) {
|
||||
stringResult.append(obj.toString()).append("\n\n");
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
stringResult.append("\n...");
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}else{
|
||||
} else {
|
||||
stringResult.append(value.toString());
|
||||
}
|
||||
builder = new EmbedBuilder().setColor(Color.orange).setTitle(":hammer_pick: Compilation Successful :hammer_pick:").setDescription("```java\n" + stringResult.toString() + "```");
|
||||
}catch (Exception ex){
|
||||
} catch (Exception ex) {
|
||||
builder = new EmbedBuilder().setColor(Color.red).setTitle(":x: Compilation Failed :x:").setDescription("```java\n" + ex.toString() + "```");
|
||||
}
|
||||
|
||||
|
@ -10,12 +10,12 @@ import org.apache.logging.log4j.Logger;
|
||||
/**
|
||||
* Admin command to manually trigger daily action(s)
|
||||
*/
|
||||
public class DayTrigger implements Commande{
|
||||
public class DayTrigger implements Commande {
|
||||
Logger logger = LogManager.getLogger();
|
||||
|
||||
@Override
|
||||
public void action(String[] args, MessageReceivedEvent event) {
|
||||
if(!event.isFromType(ChannelType.PRIVATE))
|
||||
if (!event.isFromType(ChannelType.PRIVATE))
|
||||
event.getMessage().delete().queue();
|
||||
DayListener.getInstance().trigger();
|
||||
|
||||
|
@ -3,49 +3,40 @@ package net.Broken.Commands;
|
||||
import net.Broken.Commande;
|
||||
import net.Broken.Tools.EmbedMessageUtils;
|
||||
import net.dv8tion.jda.api.Permission;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import net.dv8tion.jda.api.entities.MessageChannel;
|
||||
import net.dv8tion.jda.api.entities.MessageHistory;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Command to flush X last message on channel.
|
||||
*/
|
||||
|
||||
public class Flush implements Commande{
|
||||
public class Flush implements Commande {
|
||||
Logger logger = LogManager.getLogger();
|
||||
|
||||
@Override
|
||||
public void action(String[] args, MessageReceivedEvent event) {
|
||||
if(args.length<1){
|
||||
if (args.length < 1) {
|
||||
event.getTextChannel().sendMessage(EmbedMessageUtils.getFlushError("Missing argument!")).queue();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
if(event.getMember().hasPermission(Permission.ADMINISTRATOR)){
|
||||
} else {
|
||||
if (event.getMember().hasPermission(Permission.ADMINISTRATOR)) {
|
||||
try {
|
||||
int limit = Integer.parseInt(args[0]) + 1;
|
||||
MessageChannel chanel = event.getChannel();
|
||||
|
||||
chanel.getIterableHistory().takeAsync(limit).thenAccept(chanel::purgeMessages);
|
||||
|
||||
|
||||
}catch (NumberFormatException e){
|
||||
|
||||
} catch (NumberFormatException e) {
|
||||
event.getTextChannel().sendMessage(EmbedMessageUtils.getFlushError("Argument unknown!")).queue();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
event.getTextChannel().sendMessage(EmbedMessageUtils.getFlushError("You are not a supreme being, you cannot do that !")).queue();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -31,18 +31,15 @@ public class Help implements Commande {
|
||||
|
||||
@Override
|
||||
public void action(String[] args, MessageReceivedEvent event) {
|
||||
if(args.length>=1)
|
||||
{
|
||||
if (args.length >= 1) {
|
||||
String argsString = args[0];
|
||||
//System.out.println(argsString);
|
||||
if (MainBot.commandes.containsKey(argsString))
|
||||
{
|
||||
if (MainBot.commandes.containsKey(argsString)) {
|
||||
|
||||
|
||||
Commande cmdObj = MainBot.commandes.get(argsString);
|
||||
if(!cmdObj.isAdminCmd() || isAdmin(event))
|
||||
{
|
||||
logger.debug("Help for "+argsString+" by "+event.getAuthor().getName());
|
||||
if (!cmdObj.isAdminCmd() || isAdmin(event)) {
|
||||
logger.debug("Help for " + argsString + " by " + event.getAuthor().getName());
|
||||
MessageEmbed messageEmbed;
|
||||
try {
|
||||
messageEmbed = EmbedMessageUtils.getHelp(argsString);
|
||||
@ -54,62 +51,55 @@ public class Help implements Commande {
|
||||
logger.catching(e1);
|
||||
}
|
||||
}
|
||||
if(!event.isFromType(ChannelType.PRIVATE)) {
|
||||
if (!event.isFromType(ChannelType.PRIVATE)) {
|
||||
event.getTextChannel().sendMessage(messageEmbed).queue();
|
||||
|
||||
} else{
|
||||
PrivateMessage.send(event.getAuthor(), messageEmbed,logger);
|
||||
} else {
|
||||
PrivateMessage.send(event.getAuthor(), messageEmbed, logger);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
logger.info("Help wanted for admin command, Denied!");
|
||||
if(!event.isFromType(ChannelType.PRIVATE)) {
|
||||
if (!event.isFromType(ChannelType.PRIVATE)) {
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getUnautorized()).complete();
|
||||
List<Message> messages = new ArrayList<Message>(){{
|
||||
List<Message> messages = new ArrayList<Message>() {{
|
||||
add(rest);
|
||||
add(event.getMessage());
|
||||
}};
|
||||
new MessageTimeOut(messages,MainBot.messageTimeOut).start();
|
||||
new MessageTimeOut(messages, MainBot.messageTimeOut).start();
|
||||
|
||||
} else{
|
||||
} else {
|
||||
PrivateMessage.send(event.getAuthor(), EmbedMessageUtils.getUnautorized(), logger);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!event.isFromType(ChannelType.PRIVATE)) {
|
||||
} else {
|
||||
if (!event.isFromType(ChannelType.PRIVATE)) {
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getUnknowCommand()).complete();
|
||||
List<Message> messages = new ArrayList<Message>(){{
|
||||
List<Message> messages = new ArrayList<Message>() {{
|
||||
add(rest);
|
||||
add(event.getMessage());
|
||||
}};
|
||||
new MessageTimeOut(messages,MainBot.messageTimeOut).start();
|
||||
} else{
|
||||
PrivateMessage.send(event.getAuthor(),EmbedMessageUtils.getUnknowCommand(),logger);
|
||||
new MessageTimeOut(messages, MainBot.messageTimeOut).start();
|
||||
} else {
|
||||
PrivateMessage.send(event.getAuthor(), EmbedMessageUtils.getUnknowCommand(), logger);
|
||||
}
|
||||
logger.debug("Unknown command!");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
TableRenderer table = new TableRenderer();
|
||||
table.setHeader("Command","PU");
|
||||
table.setHeader("Command", "PU");
|
||||
|
||||
TableRenderer nsfwTable = new TableRenderer();
|
||||
nsfwTable.setHeader("NSFW Only\u00A0", "PU");
|
||||
List<String> noPu = new ArrayList<>();
|
||||
|
||||
for (Map.Entry<String, Commande> e : MainBot.commandes.entrySet()) {
|
||||
if(!e.getValue().isAdminCmd() || isAdmin(event)){
|
||||
if(e.getValue().isPrivateUsable())
|
||||
if (!e.getValue().isAdminCmd() || isAdmin(event)) {
|
||||
if (e.getValue().isPrivateUsable())
|
||||
table.addRow(e.getKey(), "XX");
|
||||
else if(e.getValue().isNSFW())
|
||||
nsfwTable.addRow(e.getKey(),"");
|
||||
else if (e.getValue().isNSFW())
|
||||
nsfwTable.addRow(e.getKey(), "");
|
||||
else
|
||||
noPu.add(e.getKey());
|
||||
}
|
||||
@ -117,27 +107,27 @@ public class Help implements Commande {
|
||||
|
||||
}
|
||||
|
||||
for(String key : noPu)
|
||||
for (String key : noPu)
|
||||
table.addRow(key, "");
|
||||
|
||||
String txt = table.build();
|
||||
txt += "\n\n";
|
||||
txt += nsfwTable.build();
|
||||
|
||||
if(!event.isFromType(ChannelType.PRIVATE)){
|
||||
if (!event.isFromType(ChannelType.PRIVATE)) {
|
||||
Message rest = event.getTextChannel().sendMessage(new EmbedBuilder().setTitle("Commands sent by private message").setColor(Color.green).build()).complete();
|
||||
new MessageTimeOut(MainBot.messageTimeOut, rest, event.getMessage()).start();
|
||||
}
|
||||
|
||||
|
||||
String role;
|
||||
if(isAdmin(event))
|
||||
if (isAdmin(event))
|
||||
role = "Admin";
|
||||
else
|
||||
role = "No Admin";
|
||||
|
||||
try {
|
||||
PrivateMessage.send(event.getAuthor(), EmbedMessageUtils.getHelpList(role, txt),logger);
|
||||
PrivateMessage.send(event.getAuthor(), EmbedMessageUtils.getHelpList(role, txt), logger);
|
||||
} catch (FileNotFoundException e) {
|
||||
logger.catching(e);
|
||||
PrivateMessage.send(event.getAuthor(), EmbedMessageUtils.getInternalError(), logger);
|
||||
@ -176,19 +166,18 @@ public class Help implements Commande {
|
||||
}
|
||||
|
||||
|
||||
public boolean isAdmin(MessageReceivedEvent event){
|
||||
public boolean isAdmin(MessageReceivedEvent event) {
|
||||
|
||||
if(event.isFromType(ChannelType.PRIVATE)){
|
||||
if (event.isFromType(ChannelType.PRIVATE)) {
|
||||
List<Guild> guilds = event.getAuthor().getMutualGuilds();
|
||||
for(Guild iterator : guilds){
|
||||
if(iterator.getMember(event.getAuthor()).hasPermission(Permission.ADMINISTRATOR)){
|
||||
for (Guild iterator : guilds) {
|
||||
if (iterator.getMember(event.getAuthor()).hasPermission(Permission.ADMINISTRATOR)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
} else
|
||||
return event.getMember().hasPermission(Permission.ADMINISTRATOR);
|
||||
return false;
|
||||
}
|
||||
|
@ -5,14 +5,13 @@ import net.Broken.Tools.PrivateMessage;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
|
||||
public class Invite implements Commande{
|
||||
public class Invite implements Commande {
|
||||
@Override
|
||||
public void action(String[] args, MessageReceivedEvent event) {
|
||||
if(event.getChannelType().isGuild()){
|
||||
if (event.getChannelType().isGuild()) {
|
||||
event.getTextChannel().sendMessage("You can invite me whit this link:\nhttps://discordapp.com/oauth2/authorize?client_id=" + event.getJDA().getSelfUser().getId() + "&scope=bot&permissions=8").complete();
|
||||
}
|
||||
else {
|
||||
PrivateMessage.send(event.getAuthor(),"You can invite me whit this link:\nhttps://discordapp.com/oauth2/authorize?client_id=" + event.getJDA().getSelfUser().getId() + "&scope=bot&permissions=8",LogManager.getLogger());
|
||||
} else {
|
||||
PrivateMessage.send(event.getAuthor(), "You can invite me whit this link:\nhttps://discordapp.com/oauth2/authorize?client_id=" + event.getJDA().getSelfUser().getId() + "&scope=bot&permissions=8", LogManager.getLogger());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -13,8 +13,8 @@ public class ListRoles implements Commande {
|
||||
public void action(String[] args, MessageReceivedEvent event) {
|
||||
List<Role> roles = event.getGuild().getRoles();
|
||||
EmbedBuilder messageB = new EmbedBuilder();
|
||||
for (Role role : roles){
|
||||
messageB.addField(role.getName(),"```id: " + role.getId() + "```",false);
|
||||
for (Role role : roles) {
|
||||
messageB.addField(role.getName(), "```id: " + role.getId() + "```", false);
|
||||
}
|
||||
|
||||
messageB.setColor(Color.green);
|
||||
|
@ -11,7 +11,6 @@ import net.dv8tion.jda.api.managers.GuildManager;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@ -21,29 +20,29 @@ import java.util.List;
|
||||
*/
|
||||
public class Move implements Commande {
|
||||
|
||||
Logger logger = LogManager.getLogger();
|
||||
private String HELP="`//move <@user> <@Role>`\n:arrow_right:\t*Move a user to a specified role.*";
|
||||
public List<Role> saveRoleUser;
|
||||
public Member user;
|
||||
public Guild serveur;
|
||||
public GuildManager serveurManager;
|
||||
/** Perform a move (Reset is role and add target(s) role(s)
|
||||
Logger logger = LogManager.getLogger();
|
||||
private String HELP = "`//move <@user> <@Role>`\n:arrow_right:\t*Move a user to a specified role.*";
|
||||
|
||||
/**
|
||||
* Perform a move (Reset is role and add target(s) role(s)
|
||||
*
|
||||
* @param user User to move
|
||||
* @param cible Complete list of new role
|
||||
* @param user User to move
|
||||
* @param cible Complete list of new role
|
||||
* @param reset
|
||||
* @param serveur Guild
|
||||
* @param serveur Guild
|
||||
* @param serveurManager GuildManager
|
||||
* @return success
|
||||
*/
|
||||
public boolean exc(Member user, List<Role> cible , boolean reset, Guild serveur, GuildManager serveurManager) throws HierarchyException
|
||||
{
|
||||
public boolean exc(Member user, List<Role> cible, boolean reset, Guild serveur, GuildManager serveurManager) throws HierarchyException {
|
||||
MainBot.roleFlag = true;
|
||||
boolean erreur = false;
|
||||
List<Role> allRoll = serveur.getRoles();
|
||||
|
||||
|
||||
|
||||
//On recupere les roles de l'utilisateur
|
||||
|
||||
List<Role> roleUserList = user.getRoles();
|
||||
@ -59,71 +58,61 @@ public class Move implements Commande {
|
||||
|
||||
|
||||
//on fait ensuite les modif
|
||||
serveur.modifyMemberRoles(user,cible).complete();
|
||||
serveur.modifyMemberRoles(user, cible).complete();
|
||||
|
||||
logger.info("Give " + cible + " role to " + user.getEffectiveName());
|
||||
|
||||
this.user=user;
|
||||
this.serveur=serveur;
|
||||
this.serveurManager=serveurManager;
|
||||
this.user = user;
|
||||
this.serveur = serveur;
|
||||
this.serveurManager = serveurManager;
|
||||
return erreur;
|
||||
}
|
||||
|
||||
/** Command handler
|
||||
/**
|
||||
* Command handler
|
||||
*
|
||||
* @param args
|
||||
* @param event
|
||||
*/
|
||||
public void action(String[] args, MessageReceivedEvent event)
|
||||
{
|
||||
if(!event.isFromType(ChannelType.PRIVATE))
|
||||
{
|
||||
if(args.length>=2)
|
||||
{
|
||||
serveur=event.getGuild();
|
||||
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)
|
||||
{
|
||||
if (userL.size() < 1 || roleL.size() < 1) {
|
||||
logger.warn("Wrong mention.");
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getMoveError("Error, please check if the user and/or the role are existing.")).complete();
|
||||
List<Message> messages = new ArrayList<Message>(){{
|
||||
List<Message> messages = new ArrayList<Message>() {{
|
||||
add(rest);
|
||||
add(event.getMessage());
|
||||
}};
|
||||
new MessageTimeOut(messages,MainBot.messageTimeOut).start();
|
||||
}
|
||||
else
|
||||
{
|
||||
new MessageTimeOut(messages, MainBot.messageTimeOut).start();
|
||||
} else {
|
||||
user = serveur.getMember(userL.get(0));
|
||||
serveur=event.getGuild();
|
||||
logger.info("Attempting role assignement for "+user.getEffectiveName()+" to "+roleL+" by "+event.getAuthor().getName());
|
||||
serveur = event.getGuild();
|
||||
logger.info("Attempting role assignement for " + user.getEffectiveName() + " to " + roleL + " by " + event.getAuthor().getName());
|
||||
|
||||
logger.info("Permission granted, role assignement authorized");
|
||||
logger.debug("User found");
|
||||
try {
|
||||
boolean erreur=this.exc(user,roleL,true,serveur,serveur.getManager());
|
||||
if(erreur)
|
||||
{
|
||||
boolean erreur = this.exc(user, roleL, true, serveur, serveur.getManager());
|
||||
if (erreur) {
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getMoveError("Check the targeted role. ")).complete();
|
||||
List<Message> messages = new ArrayList<Message>(){{
|
||||
List<Message> messages = new ArrayList<Message>() {{
|
||||
add(rest);
|
||||
add(event.getMessage());
|
||||
}};
|
||||
new MessageTimeOut(messages,MainBot.messageTimeOut).start();
|
||||
}
|
||||
else
|
||||
{
|
||||
new MessageTimeOut(messages, MainBot.messageTimeOut).start();
|
||||
} else {
|
||||
StringBuilder roleStr = new StringBuilder("");
|
||||
boolean first = true;
|
||||
for( Role role : roleL)
|
||||
{
|
||||
for (Role role : roleL) {
|
||||
if (!first) {
|
||||
roleStr.append(", ");
|
||||
|
||||
}
|
||||
else
|
||||
} else
|
||||
first = false;
|
||||
roleStr.append("__");
|
||||
roleStr.append(role.getName());
|
||||
@ -131,49 +120,39 @@ public class Move implements Commande {
|
||||
}
|
||||
|
||||
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getMoveOk("User "+user.getEffectiveName()+" as been successfully moved to "+roleStr.toString())).complete();
|
||||
List<Message> messages = new ArrayList<Message>(){{
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getMoveOk("User " + user.getEffectiveName() + " as been successfully moved to " + roleStr.toString())).complete();
|
||||
List<Message> messages = new ArrayList<Message>() {{
|
||||
add(rest);
|
||||
add(event.getMessage());
|
||||
}};
|
||||
new MessageTimeOut(messages,MainBot.messageTimeOut).start();
|
||||
new MessageTimeOut(messages, MainBot.messageTimeOut).start();
|
||||
}
|
||||
}catch (HierarchyException e){
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getMoveError("You cannot move "+user.getRoles().get(0).getAsMention())).complete();
|
||||
List<Message> messages = new ArrayList<Message>(){{
|
||||
} catch (HierarchyException e) {
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getMoveError("You cannot move " + user.getRoles().get(0).getAsMention())).complete();
|
||||
List<Message> messages = new ArrayList<Message>() {{
|
||||
add(rest);
|
||||
add(event.getMessage());
|
||||
}};
|
||||
new MessageTimeOut(messages,MainBot.messageTimeOut).start();
|
||||
new MessageTimeOut(messages, MainBot.messageTimeOut).start();
|
||||
logger.error("Hierarchy error, please move bot's role on top!");
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
logger.warn("Missing argument.");
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getMoveError("Missing argument.")).complete();
|
||||
List<Message> messages = new ArrayList<Message>(){{
|
||||
List<Message> messages = new ArrayList<Message>() {{
|
||||
add(rest);
|
||||
add(event.getMessage());
|
||||
}};
|
||||
new MessageTimeOut(messages,MainBot.messageTimeOut).start();
|
||||
new MessageTimeOut(messages, MainBot.messageTimeOut).start();
|
||||
}
|
||||
}
|
||||
else
|
||||
} else
|
||||
event.getPrivateChannel().sendMessage(EmbedMessageUtils.getNoPrivate());
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,18 +1,14 @@
|
||||
package net.Broken.Commands;
|
||||
|
||||
import net.Broken.Commande;
|
||||
import net.Broken.MainBot;
|
||||
import net.Broken.Tools.MessageTimeOut;
|
||||
import net.dv8tion.jda.api.entities.ChannelType;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
|
||||
public class Ordre66 implements Commande {
|
||||
|
||||
@Override
|
||||
public void action(String[] args, MessageReceivedEvent event) {
|
||||
Message rest = event.getTextChannel().sendMessage("Très bien maître " + event.getAuthor().getAsMention()+". J'arrive ! ").complete();
|
||||
Message rest = event.getTextChannel().sendMessage("Très bien maître " + event.getAuthor().getAsMention() + ". J'arrive ! ").complete();
|
||||
Message reste = event.getTextChannel().sendMessage("https://media2.giphy.com/media/UfzTayIyH7g5hk2BA2/giphy.gif\n").complete();
|
||||
}
|
||||
|
||||
|
@ -9,10 +9,10 @@ import org.apache.logging.log4j.LogManager;
|
||||
*/
|
||||
|
||||
@NoDev()
|
||||
public class Ass extends NumberedCommande {
|
||||
public class Ass extends NumberedCommande {
|
||||
|
||||
public Ass() {
|
||||
super(LogManager.getLogger(), "http://les400culs.com/","-2/","featured-img","img");
|
||||
super(LogManager.getLogger(), "http://les400culs.com/", "-2/", "featured-img", "img");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -11,8 +11,9 @@ import org.apache.logging.log4j.LogManager;
|
||||
public class Boobs extends NumberedCommande {
|
||||
|
||||
public Boobs() {
|
||||
super(LogManager.getLogger(), "http://lesaintdesseins.fr/","-2/","featured-img","img");
|
||||
super(LogManager.getLogger(), "http://lesaintdesseins.fr/", "-2/", "featured-img", "img");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Boobs";
|
||||
|
@ -15,9 +15,9 @@ import java.io.IOException;
|
||||
*/
|
||||
@NoDev
|
||||
public class Madame extends NumberedCommande {
|
||||
public String HELP = "Yo really? Just type Madame to see some :cat:";
|
||||
Logger logger = LogManager.getLogger();
|
||||
MessageReceivedEvent event;
|
||||
public String HELP = "Yo really? Just type Madame to see some :cat:";
|
||||
|
||||
public Madame() {
|
||||
super(LogManager.getLogger(), "https://www.bonjourmadame.fr/page/", "/");
|
||||
@ -73,10 +73,10 @@ public class Madame extends NumberedCommande {
|
||||
return false;
|
||||
}
|
||||
|
||||
private String removeParams(String url){
|
||||
private String removeParams(String url) {
|
||||
int par = url.indexOf('?');
|
||||
if(par != -1){
|
||||
url = url.substring(0,par);
|
||||
if (par != -1) {
|
||||
url = url.substring(0, par);
|
||||
}
|
||||
return url;
|
||||
}
|
||||
@ -86,7 +86,7 @@ public class Madame extends NumberedCommande {
|
||||
public String poll() throws IOException {
|
||||
boolean success = false;
|
||||
String imgUrl = null;
|
||||
while (!success ) {
|
||||
while (!success) {
|
||||
|
||||
checkRandom();
|
||||
int randomResult = randomQueue.poll();
|
||||
|
@ -17,7 +17,7 @@ public class SM implements Commande {
|
||||
|
||||
@Override
|
||||
public void action(String[] args, MessageReceivedEvent event) {
|
||||
Redirection redirect= new Redirection();
|
||||
Redirection redirect = new Redirection();
|
||||
try {
|
||||
String redirectUrl = redirect.get("https://bonjourfetish.tumblr.com/random");
|
||||
logger.debug(redirectUrl);
|
||||
|
@ -1,7 +1,6 @@
|
||||
package net.Broken.Commands.Over18;
|
||||
|
||||
import net.Broken.Commande;
|
||||
import net.Broken.Tools.EmbedMessageUtils;
|
||||
import net.Broken.Tools.FindContentOnWebPage;
|
||||
import net.Broken.Tools.Redirection;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
@ -10,7 +9,7 @@ import org.apache.logging.log4j.Logger;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class Suicide implements Commande{
|
||||
public class Suicide implements Commande {
|
||||
|
||||
private Logger logger = LogManager.getLogger();
|
||||
|
||||
@ -25,16 +24,16 @@ public class Suicide implements Commande{
|
||||
|
||||
Boolean success = false;
|
||||
int tryCount = 0;
|
||||
while(!success && tryCount < 10 ){
|
||||
while (!success && tryCount < 10) {
|
||||
redirectUrl = redirection.get(base + "/random");
|
||||
|
||||
String img;
|
||||
try{
|
||||
try {
|
||||
img = FindContentOnWebPage.doYourJob(redirectUrl, "post photo_nav_caption", "img");
|
||||
event.getTextChannel().sendMessage(img).queue();
|
||||
success = true;
|
||||
|
||||
}catch (StringIndexOutOfBoundsException | IOException e){
|
||||
} catch (StringIndexOutOfBoundsException | IOException e) {
|
||||
logger.debug("Photo_nav not found try photoset");
|
||||
|
||||
try {
|
||||
@ -48,15 +47,13 @@ public class Suicide implements Commande{
|
||||
|
||||
|
||||
}
|
||||
tryCount ++;
|
||||
tryCount++;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
logger.catching(e);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -18,10 +18,10 @@ public class Ping implements Commande {
|
||||
public void action(String[] args, MessageReceivedEvent event) {
|
||||
long ping = event.getJDA().getGatewayPing();
|
||||
// long receivedTime = Timestamp.valueOf(LocalDateTime.ofInstant(event.getMessage().getCreationTime().toInstant(), ZoneId.systemDefault())).getTime();
|
||||
if(event.isFromType(ChannelType.PRIVATE))
|
||||
event.getPrivateChannel().sendMessage(":arrow_right: Pong! `" + ping+ "ms`").queue();
|
||||
if (event.isFromType(ChannelType.PRIVATE))
|
||||
event.getPrivateChannel().sendMessage(":arrow_right: Pong! `" + ping + "ms`").queue();
|
||||
else {
|
||||
Message rest = event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n:arrow_right: Pong! `" + ping + "ms`").complete();
|
||||
Message rest = event.getTextChannel().sendMessage(event.getAuthor().getAsMention() + "\n:arrow_right: Pong! `" + ping + "ms`").complete();
|
||||
new MessageTimeOut(MainBot.messageTimeOut, event.getMessage(), rest).start();
|
||||
}
|
||||
LogManager.getLogger().debug("pong");
|
||||
|
@ -3,10 +3,8 @@ package net.Broken.Commands;
|
||||
import net.Broken.Commande;
|
||||
import net.Broken.Tools.EmbedMessageUtils;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.requests.RestAction;
|
||||
import net.dv8tion.jda.api.requests.restaction.MessageAction;
|
||||
|
||||
|
||||
public class ReportUsers implements Commande {
|
||||
@ -28,7 +26,7 @@ public class ReportUsers implements Commande {
|
||||
}
|
||||
}
|
||||
}
|
||||
if(restAction!=null)
|
||||
if (restAction != null)
|
||||
restAction.queue();
|
||||
} else if (args.length == 0) {
|
||||
|
||||
|
@ -1,27 +1,17 @@
|
||||
package net.Broken.Commands;
|
||||
|
||||
import net.Broken.Commande;
|
||||
import net.Broken.DB.Entity.GuildPreferenceEntity;
|
||||
import net.Broken.DB.Repository.GuildPreferenceRepository;
|
||||
import net.Broken.MainBot;
|
||||
import net.Broken.SpringContext;
|
||||
import net.Broken.Tools.EmbedMessageUtils;
|
||||
import net.Broken.Tools.MessageTimeOut;
|
||||
import net.Broken.Tools.SettingsUtils;
|
||||
import net.Broken.audio.AudioM;
|
||||
import net.Broken.audio.NotConnectedException;
|
||||
import net.Broken.audio.NullMusicManager;
|
||||
import net.Broken.audio.Youtube.YoutubeTools;
|
||||
import net.dv8tion.jda.api.EmbedBuilder;
|
||||
import net.dv8tion.jda.api.entities.*;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
|
||||
import java.awt.*;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
public class Settings implements Commande {
|
||||
|
||||
@ -40,7 +30,7 @@ public class Settings implements Commande {
|
||||
|
||||
EmbedBuilder builder = new EmbedBuilder()
|
||||
.setTitle("Settings")
|
||||
.setDescription("You can do all the configuration on the web page in the \"Bot Settings\" menu.\nhttps://"+MainBot.url).setColor(Color.green);
|
||||
.setDescription("You can do all the configuration on the web page in the \"Bot Settings\" menu.\nhttps://" + MainBot.url).setColor(Color.green);
|
||||
event.getTextChannel().sendMessage(EmbedMessageUtils.buildStandar(builder)).queue();
|
||||
|
||||
|
||||
|
@ -15,7 +15,6 @@ import net.dv8tion.jda.api.exceptions.RateLimitedException;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
@ -30,13 +29,11 @@ public class Spam implements Commande {
|
||||
private Logger logger = LogManager.getLogger();
|
||||
|
||||
@Override
|
||||
public void action(String[] args, MessageReceivedEvent event)
|
||||
{
|
||||
public void action(String[] args, MessageReceivedEvent event) {
|
||||
/****************************
|
||||
* Verif argument *
|
||||
****************************/
|
||||
if(args.length>=1)
|
||||
{
|
||||
if (args.length >= 1) {
|
||||
|
||||
String commande = args[0];
|
||||
/****************************
|
||||
@ -45,12 +42,12 @@ public class Spam implements Commande {
|
||||
switch (commande) {
|
||||
|
||||
case "pardon":
|
||||
this.pardon(event,args);
|
||||
this.pardon(event, args);
|
||||
break;
|
||||
|
||||
case "extermine":
|
||||
try {
|
||||
this.extermine(event,args);
|
||||
this.extermine(event, args);
|
||||
} catch (RateLimitedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
@ -59,14 +56,13 @@ public class Spam implements Commande {
|
||||
|
||||
case "reset":
|
||||
try {
|
||||
this.reset(event,args);
|
||||
this.reset(event, args);
|
||||
} catch (RateLimitedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -98,14 +94,13 @@ public class Spam implements Commande {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void pardon(MessageReceivedEvent event, String[] args){
|
||||
public void pardon(MessageReceivedEvent event, String[] args) {
|
||||
|
||||
Guild serveur = event.getGuild();
|
||||
/****************************
|
||||
* verif argument *
|
||||
****************************/
|
||||
if (args.length >= 1)
|
||||
{
|
||||
if (args.length >= 1) {
|
||||
/****************************
|
||||
* On recupere l'utilisateur et le role cible
|
||||
****************************/
|
||||
@ -115,20 +110,18 @@ public class Spam implements Commande {
|
||||
/****************************
|
||||
* verif utilisteur trouver *
|
||||
****************************/
|
||||
if(userL.size()<1)
|
||||
{
|
||||
if (userL.size() < 1) {
|
||||
logger.error("User unknown.");
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getSpamError(":arrow_right: User not found. ","pardon")).complete();
|
||||
List<Message> messages = new ArrayList<Message>(){{
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getSpamError(":arrow_right: User not found. ", "pardon")).complete();
|
||||
List<Message> messages = new ArrayList<Message>() {{
|
||||
add(rest);
|
||||
add(event.getMessage());
|
||||
}};
|
||||
new MessageTimeOut(messages,MainBot.messageTimeOut).start();
|
||||
}
|
||||
else {
|
||||
new MessageTimeOut(messages, MainBot.messageTimeOut).start();
|
||||
} else {
|
||||
Member user = userL.get(0);
|
||||
logger.info("Attempt to forgive " + user.getEffectiveName() + " by " + event.getMember().getEffectiveName());
|
||||
/****************************
|
||||
/****************************
|
||||
* virif si en spammer *
|
||||
****************************/
|
||||
if (MainBot.spamUtils.containsKey(user)) {
|
||||
@ -136,35 +129,33 @@ public class Spam implements Commande {
|
||||
MainBot.spamUtils.get(user).setOnSpam(false);
|
||||
} else {
|
||||
logger.warn("User is not in spam.");
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getSpamError(":arrow_right: This user is not in spam.","pardon")).complete();
|
||||
List<Message> messages = new ArrayList<Message>(){{
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getSpamError(":arrow_right: This user is not in spam.", "pardon")).complete();
|
||||
List<Message> messages = new ArrayList<Message>() {{
|
||||
add(rest);
|
||||
add(event.getMessage());
|
||||
}};
|
||||
new MessageTimeOut(messages,MainBot.messageTimeOut).start();
|
||||
new MessageTimeOut(messages, MainBot.messageTimeOut).start();
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
logger.warn("User is not in spam.");
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getSpamError(":arrow_right: This user is not in spam.","pardon")).complete();
|
||||
List<Message> messages = new ArrayList<Message>(){{
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getSpamError(":arrow_right: This user is not in spam.", "pardon")).complete();
|
||||
List<Message> messages = new ArrayList<Message>() {{
|
||||
add(rest);
|
||||
add(event.getMessage());
|
||||
}};
|
||||
new MessageTimeOut(messages,MainBot.messageTimeOut).start();
|
||||
new MessageTimeOut(messages, MainBot.messageTimeOut).start();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
logger.warn("Missing argument.");
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getSpamError("Missing argument!","pardon")).complete();
|
||||
List<Message> messages = new ArrayList<Message>(){{
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getSpamError("Missing argument!", "pardon")).complete();
|
||||
List<Message> messages = new ArrayList<Message>() {{
|
||||
add(rest);
|
||||
add(event.getMessage());
|
||||
}};
|
||||
new MessageTimeOut(messages,MainBot.messageTimeOut).start();
|
||||
new MessageTimeOut(messages, MainBot.messageTimeOut).start();
|
||||
}
|
||||
|
||||
|
||||
@ -174,8 +165,7 @@ public class Spam implements Commande {
|
||||
/****************************
|
||||
* verif argument *
|
||||
****************************/
|
||||
if (args.length >= 3)
|
||||
{
|
||||
if (args.length >= 3) {
|
||||
/****************************
|
||||
* On recupere l'utilisateur et le role cible
|
||||
****************************/
|
||||
@ -185,70 +175,58 @@ public class Spam implements Commande {
|
||||
/****************************
|
||||
* verif utilisteur trouver *
|
||||
****************************/
|
||||
if(userL.size()<1)
|
||||
{
|
||||
if (userL.size() < 1) {
|
||||
logger.warn("Wrong mention (Spam).");
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getSpamError("Wrong mention. ","extermine")).complete();
|
||||
}
|
||||
else{
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getSpamError("Wrong mention. ", "extermine")).complete();
|
||||
} else {
|
||||
|
||||
|
||||
Guild serveur = event.getGuild();
|
||||
Member user = serveur.getMember(userL.get(0));
|
||||
logger.info("Starting protocol 66 on "+user.getEffectiveName()+" by the command of "+event.getAuthor().getName());
|
||||
logger.info("Starting protocol 66 on " + user.getEffectiveName() + " by the command of " + event.getAuthor().getName());
|
||||
|
||||
|
||||
String multiStr =args[2];
|
||||
String multiStr = args[2];
|
||||
|
||||
|
||||
/****************************
|
||||
* virif pas deja en spammer *
|
||||
****************************/
|
||||
if(MainBot.spamUtils.containsKey(user))
|
||||
{
|
||||
if(!MainBot.spamUtils.get(user).isOnSpam())
|
||||
{
|
||||
this.goSpam(user,multiStr,serveur,event);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (MainBot.spamUtils.containsKey(user)) {
|
||||
if (!MainBot.spamUtils.get(user).isOnSpam()) {
|
||||
this.goSpam(user, multiStr, serveur, event);
|
||||
} else {
|
||||
logger.warn("User already in spam.");
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getSpamError("User already in spam.","extermine")).complete();
|
||||
List<Message> messages = new ArrayList<Message>(){{
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getSpamError("User already in spam.", "extermine")).complete();
|
||||
List<Message> messages = new ArrayList<Message>() {{
|
||||
add(rest);
|
||||
add(event.getMessage());
|
||||
}};
|
||||
new MessageTimeOut(messages,MainBot.messageTimeOut).start();
|
||||
new MessageTimeOut(messages, MainBot.messageTimeOut).start();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
this.goSpam(user,multiStr,serveur,event);
|
||||
} else {
|
||||
this.goSpam(user, multiStr, serveur, event);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
logger.warn("Missing argument.");
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getSpamError("Missing argument!","extermine")).complete();
|
||||
List<Message> messages = new ArrayList<Message>(){{
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getSpamError("Missing argument!", "extermine")).complete();
|
||||
List<Message> messages = new ArrayList<Message>() {{
|
||||
add(rest);
|
||||
add(event.getMessage());
|
||||
}};
|
||||
new MessageTimeOut(messages,MainBot.messageTimeOut).start();
|
||||
new MessageTimeOut(messages, MainBot.messageTimeOut).start();
|
||||
}
|
||||
}
|
||||
|
||||
public void reset(MessageReceivedEvent event, String[] args) throws RateLimitedException {
|
||||
if(event!=null)
|
||||
{
|
||||
if(args.length>=2)
|
||||
{
|
||||
if (event != null) {
|
||||
if (args.length >= 2) {
|
||||
|
||||
Guild serveur = event.getGuild();
|
||||
/****************************
|
||||
@ -260,18 +238,16 @@ public class Spam implements Commande {
|
||||
/****************************
|
||||
* verif utilisteur trouver *
|
||||
****************************/
|
||||
if(userL.size()<1)
|
||||
{
|
||||
if (userL.size() < 1) {
|
||||
logger.warn("User not found.");
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getSpamError("User not found.","reset")).complete();
|
||||
List<Message> messages = new ArrayList<Message>(){{
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getSpamError("User not found.", "reset")).complete();
|
||||
List<Message> messages = new ArrayList<Message>() {{
|
||||
add(rest);
|
||||
add(event.getMessage());
|
||||
}};
|
||||
new MessageTimeOut(messages,MainBot.messageTimeOut).start();
|
||||
new MessageTimeOut(messages, MainBot.messageTimeOut).start();
|
||||
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
Member user = userL.get(0);
|
||||
logger.info("Attempt spam reset of " + user.getEffectiveName() + " by " + event.getMember().getEffectiveName());
|
||||
|
||||
@ -282,35 +258,29 @@ public class Spam implements Commande {
|
||||
if (MainBot.spamUtils.containsKey(user)) {
|
||||
logger.info("Multiplictor reset for " + user.getEffectiveName() + " done.");
|
||||
Message rest = event.getTextChannel().sendMessage(event.getAuthor().getAsMention() + "\n *The spam multiplicator of " + user.getEffectiveName() + " is now down to zero.*").complete();
|
||||
List<Message> messages = new ArrayList<Message>(){{
|
||||
List<Message> messages = new ArrayList<Message>() {{
|
||||
add(rest);
|
||||
add(event.getMessage());
|
||||
}};
|
||||
new MessageTimeOut(messages,MainBot.messageTimeOut).start();
|
||||
new MessageTimeOut(messages, MainBot.messageTimeOut).start();
|
||||
MainBot.spamUtils.remove(user);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
logger.warn("Missing argument.");
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getSpamError("Missing argument!","reset")).complete();
|
||||
List<Message> messages = new ArrayList<Message>(){{
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getSpamError("Missing argument!", "reset")).complete();
|
||||
List<Message> messages = new ArrayList<Message>() {{
|
||||
add(rest);
|
||||
add(event.getMessage());
|
||||
}};
|
||||
new MessageTimeOut(messages,MainBot.messageTimeOut).start();
|
||||
new MessageTimeOut(messages, MainBot.messageTimeOut).start();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (args[0].equals("all"))
|
||||
{
|
||||
} else {
|
||||
if (args[0].equals("all")) {
|
||||
logger.info("Multiplicator reseted automaticly.");
|
||||
for (Member unUser: MainBot.spamUtils.keySet())
|
||||
{
|
||||
for (Member unUser : MainBot.spamUtils.keySet()) {
|
||||
|
||||
MainBot.message_compteur.remove(unUser); //TODO resolve garbage collector error ????
|
||||
}
|
||||
@ -318,33 +288,23 @@ public class Spam implements Commande {
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void goSpam(Member user, String multiStr, Guild serveur, MessageReceivedEvent event) {
|
||||
if (Objects.equals(multiStr, "/")) {
|
||||
new AntiSpam().extermine(user, serveur, serveur.getManager(), true, event);
|
||||
|
||||
|
||||
public void goSpam(Member user, String multiStr, Guild serveur, MessageReceivedEvent event)
|
||||
{
|
||||
if(Objects.equals(multiStr, "/"))
|
||||
{
|
||||
new AntiSpam().extermine(user,serveur,serveur.getManager(),true,event);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
int multi = Integer.parseInt(multiStr);
|
||||
if(MainBot.spamUtils.containsKey(user))
|
||||
{
|
||||
if (MainBot.spamUtils.containsKey(user)) {
|
||||
MainBot.spamUtils.get(user).setMultip(multi);
|
||||
}
|
||||
else
|
||||
{
|
||||
MainBot.spamUtils.put(user,new UserSpamUtils(user,new ArrayList<>()));
|
||||
} else {
|
||||
MainBot.spamUtils.put(user, new UserSpamUtils(user, new ArrayList<>()));
|
||||
MainBot.spamUtils.get(user).setMultip(multi);
|
||||
}
|
||||
|
||||
new AntiSpam().extermine(user,serveur,serveur.getManager(),false,event);
|
||||
new AntiSpam().extermine(user, serveur, serveur.getManager(), false, event);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -10,7 +10,6 @@ import net.dv8tion.jda.api.EmbedBuilder;
|
||||
import net.dv8tion.jda.api.entities.ChannelType;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import net.dv8tion.jda.api.entities.User;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
@ -24,71 +23,61 @@ import java.util.concurrent.TimeUnit;
|
||||
/**
|
||||
* Spam Info Command
|
||||
*/
|
||||
public class SpamInfo implements Commande{
|
||||
private HashMap<Member,MessageUpdater> threadHashMap = new HashMap<>();
|
||||
|
||||
public class SpamInfo implements Commande {
|
||||
Logger logger = LogManager.getLogger();
|
||||
private HashMap<Member, MessageUpdater> threadHashMap = new HashMap<>();
|
||||
|
||||
@Override
|
||||
public void action(String[] args, MessageReceivedEvent event) {
|
||||
Member user;
|
||||
if(event.getMessage().getMentionedUsers().size() == 0){
|
||||
if (event.getMessage().getMentionedUsers().size() == 0) {
|
||||
user = event.getMember();
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
user = event.getMessage().getMentionedMembers().get(0);
|
||||
}
|
||||
|
||||
|
||||
Message message = null;
|
||||
if(!MainBot.spamUtils.containsKey(user)){
|
||||
if(!event.isFromType(ChannelType.PRIVATE))
|
||||
if (!MainBot.spamUtils.containsKey(user)) {
|
||||
if (!event.isFromType(ChannelType.PRIVATE))
|
||||
message = event.getTextChannel().sendMessage(EmbedMessageUtils.getSpamInfo(user.getEffectiveName() + ":\n\t- Multiplicator: `1`\n\t- In spam: `No`")).complete();
|
||||
else
|
||||
PrivateMessage.send(event.getAuthor(),EmbedMessageUtils.getSpamInfo(user.getEffectiveName()+":\n\t- Multiplicator: `1`\n\t- In spam: `No`"),logger);
|
||||
}
|
||||
else{
|
||||
PrivateMessage.send(event.getAuthor(), EmbedMessageUtils.getSpamInfo(user.getEffectiveName() + ":\n\t- Multiplicator: `1`\n\t- In spam: `No`"), logger);
|
||||
} else {
|
||||
UserSpamUtils util = MainBot.spamUtils.get(user);
|
||||
if(!util.isOnSpam()){
|
||||
if(!event.isFromType(ChannelType.PRIVATE))
|
||||
message = event.getTextChannel().sendMessage(EmbedMessageUtils.getSpamInfo(user.getEffectiveName()+"\n\t- Multiplicator: `"+util.getMultip()+"`\n\t- In spam: `No`")).complete();
|
||||
if (!util.isOnSpam()) {
|
||||
if (!event.isFromType(ChannelType.PRIVATE))
|
||||
message = event.getTextChannel().sendMessage(EmbedMessageUtils.getSpamInfo(user.getEffectiveName() + "\n\t- Multiplicator: `" + util.getMultip() + "`\n\t- In spam: `No`")).complete();
|
||||
else
|
||||
PrivateMessage.send(event.getAuthor(),EmbedMessageUtils.getSpamInfo(user.getEffectiveName()+":\n\t- Multiplicator: `"+util.getMultip()+"`\n\t- In spam: `No`"),logger);
|
||||
PrivateMessage.send(event.getAuthor(), EmbedMessageUtils.getSpamInfo(user.getEffectiveName() + ":\n\t- Multiplicator: `" + util.getMultip() + "`\n\t- In spam: `No`"), logger);
|
||||
} else {
|
||||
if (!event.isFromType(ChannelType.PRIVATE))
|
||||
message = event.getTextChannel().sendMessage(EmbedMessageUtils.getSpamInfo(user.getEffectiveName() + ":\n\t- Multiplicator: `" + util.getMultip() + "`\n\t- In spam: `Yes`\n\t- Time remaining: `" + formatSecond(util.getTimeLeft()) + "`")).complete();
|
||||
else
|
||||
message = PrivateMessage.send(event.getAuthor(), EmbedMessageUtils.getSpamInfo(user.getEffectiveName() + "\n\t- Multiplicator: `" + util.getMultip() + "`\n\t- In spam: `Yes`\n\t- Time remaining: `" + formatSecond(util.getTimeLeft()) + "`"), logger);
|
||||
}
|
||||
else{
|
||||
if(!event.isFromType(ChannelType.PRIVATE))
|
||||
message = event.getTextChannel().sendMessage(EmbedMessageUtils.getSpamInfo(user.getEffectiveName()+":\n\t- Multiplicator: `"+util.getMultip()+"`\n\t- In spam: `Yes`\n\t- Time remaining: `"+formatSecond(util.getTimeLeft())+"`")).complete();
|
||||
else
|
||||
message = PrivateMessage.send(event.getAuthor(),EmbedMessageUtils.getSpamInfo(user.getEffectiveName()+"\n\t- Multiplicator: `"+util.getMultip()+"`\n\t- In spam: `Yes`\n\t- Time remaining: `"+formatSecond(util.getTimeLeft())+"`"),logger);
|
||||
}
|
||||
}
|
||||
if(message != null){
|
||||
if(threadHashMap.containsKey(user)){
|
||||
if (message != null) {
|
||||
if (threadHashMap.containsKey(user)) {
|
||||
MessageUpdater startedThread = threadHashMap.get(user);
|
||||
if(!message.getChannelType().equals(startedThread.message.getChannelType())){
|
||||
MessageUpdater newThread = new MessageUpdater(message,event.getMessage(),MainBot.spamUtils.get(user),user);
|
||||
threadHashMap.put(user,newThread);
|
||||
if (!message.getChannelType().equals(startedThread.message.getChannelType())) {
|
||||
MessageUpdater newThread = new MessageUpdater(message, event.getMessage(), MainBot.spamUtils.get(user), user);
|
||||
threadHashMap.put(user, newThread);
|
||||
newThread.start();
|
||||
}
|
||||
else
|
||||
{
|
||||
threadHashMap.get(user).stop = true;
|
||||
MessageUpdater newThread = new MessageUpdater(message,event.getMessage(),MainBot.spamUtils.get(user),user);
|
||||
} else {
|
||||
threadHashMap.get(user).stop = true;
|
||||
MessageUpdater newThread = new MessageUpdater(message, event.getMessage(), MainBot.spamUtils.get(user), user);
|
||||
threadHashMap.replace(user, newThread);
|
||||
newThread.start();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageUpdater newThread = new MessageUpdater(message,event.getMessage(),MainBot.spamUtils.get(user),user);
|
||||
} else {
|
||||
MessageUpdater newThread = new MessageUpdater(message, event.getMessage(), MainBot.spamUtils.get(user), user);
|
||||
threadHashMap.put(user, newThread);
|
||||
newThread.start();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -116,7 +105,7 @@ public class SpamInfo implements Commande{
|
||||
return false;
|
||||
}
|
||||
|
||||
public String formatSecond(int second){
|
||||
public String formatSecond(int second) {
|
||||
long days = TimeUnit.SECONDS.toDays(second);
|
||||
second -= TimeUnit.DAYS.toSeconds(days);
|
||||
|
||||
@ -129,22 +118,22 @@ public class SpamInfo implements Commande{
|
||||
|
||||
long seconds = TimeUnit.SECONDS.toSeconds(second);
|
||||
|
||||
logger.debug(""+days+":"+hours+":"+minutes+":"+seconds);
|
||||
logger.debug("" + days + ":" + hours + ":" + minutes + ":" + seconds);
|
||||
String finalText = "";
|
||||
if(days!=0)
|
||||
finalText += days+" day(s) ";
|
||||
if(hours!=0)
|
||||
finalText += hours+"h ";
|
||||
if(minutes!=0)
|
||||
finalText += minutes+"min ";
|
||||
finalText += seconds+"s";
|
||||
if (days != 0)
|
||||
finalText += days + " day(s) ";
|
||||
if (hours != 0)
|
||||
finalText += hours + "h ";
|
||||
if (minutes != 0)
|
||||
finalText += minutes + "min ";
|
||||
finalText += seconds + "s";
|
||||
|
||||
return finalText;
|
||||
|
||||
}
|
||||
|
||||
|
||||
private class MessageUpdater extends Thread{
|
||||
private class MessageUpdater extends Thread {
|
||||
public Message message;
|
||||
public Message command;
|
||||
public UserSpamUtils util;
|
||||
@ -152,7 +141,7 @@ public class SpamInfo implements Commande{
|
||||
private int oldValue;
|
||||
private Member user;
|
||||
|
||||
public MessageUpdater(Message message,Message command, UserSpamUtils util, Member user) {
|
||||
public MessageUpdater(Message message, Message command, UserSpamUtils util, Member user) {
|
||||
this.message = message;
|
||||
this.util = util;
|
||||
this.user = user;
|
||||
@ -162,14 +151,14 @@ public class SpamInfo implements Commande{
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
logger.debug("Start "+user.getEffectiveName()+" theard!");
|
||||
if(util != null){
|
||||
logger.debug("Start " + user.getEffectiveName() + " theard!");
|
||||
if (util != null) {
|
||||
oldValue = util.getTimeLeft();
|
||||
while (util.getTimeLeft()!=0 && !stop && util.isOnSpam()){
|
||||
while (util.getTimeLeft() != 0 && !stop && util.isOnSpam()) {
|
||||
try {
|
||||
Thread.sleep(500);
|
||||
if(util.getTimeLeft()%5 == 0 && oldValue - util.getTimeLeft() >= 5){
|
||||
message.editMessage(EmbedMessageUtils.getSpamInfo(user.getEffectiveName()+":\n\t- Multiplicator: `"+util.getMultip()+"`\n\t- In spam: `Yes`\n\t- Time remaining: `"+formatSecond(util.getTimeLeft())+"`")).complete();
|
||||
if (util.getTimeLeft() % 5 == 0 && oldValue - util.getTimeLeft() >= 5) {
|
||||
message.editMessage(EmbedMessageUtils.getSpamInfo(user.getEffectiveName() + ":\n\t- Multiplicator: `" + util.getMultip() + "`\n\t- In spam: `Yes`\n\t- Time remaining: `" + formatSecond(util.getTimeLeft()) + "`")).complete();
|
||||
oldValue = util.getTimeLeft();
|
||||
}
|
||||
|
||||
@ -177,22 +166,19 @@ public class SpamInfo implements Commande{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
logger.debug("Kill "+user.getEffectiveName()+" theard!");
|
||||
if(stop)
|
||||
logger.debug("Kill " + user.getEffectiveName() + " theard!");
|
||||
if (stop)
|
||||
message.editMessage(new EmbedBuilder().setColor(Color.RED).setTitle("Aborted").build()).complete();
|
||||
else
|
||||
message.editMessage(EmbedMessageUtils.getSpamInfo(user.getEffectiveName()+"\n\t- Multiplicator: `"+util.getMultip()+"`\n\t- In spam: `No`")).complete();
|
||||
message.editMessage(EmbedMessageUtils.getSpamInfo(user.getEffectiveName() + "\n\t- Multiplicator: `" + util.getMultip() + "`\n\t- In spam: `No`")).complete();
|
||||
|
||||
}
|
||||
logger.debug("Timer for message deletion of "+user.getEffectiveName()+" stated...");
|
||||
logger.debug("Timer for message deletion of " + user.getEffectiveName() + " stated...");
|
||||
threadHashMap.remove(user);
|
||||
List<Message> messages = new ArrayList<>();
|
||||
messages.add(command);
|
||||
messages.add(message);
|
||||
new MessageTimeOut(messages,15).start();
|
||||
|
||||
|
||||
|
||||
new MessageTimeOut(messages, 15).start();
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,22 +1,17 @@
|
||||
package net.Broken.Commands;
|
||||
|
||||
import com.google.api.client.googleapis.json.GoogleJsonResponseException;
|
||||
import net.Broken.Commande;
|
||||
import net.Broken.MainBot;
|
||||
import net.Broken.Tools.EmbedMessageUtils;
|
||||
import net.Broken.Tools.MessageTimeOut;
|
||||
import net.Broken.audio.Youtube.SearchResult;
|
||||
import net.Broken.audio.Youtube.YoutubeSearchRework;
|
||||
import net.Broken.audio.Youtube.YoutubeTools;
|
||||
import net.dv8tion.jda.api.EmbedBuilder;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import net.dv8tion.jda.api.entities.MessageEmbed;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class YtSearch implements Commande {
|
||||
|
@ -1,11 +1,11 @@
|
||||
package net.Broken.DB.Entity;
|
||||
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import net.dv8tion.jda.api.entities.VoiceChannel;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.GenerationType;
|
||||
import javax.persistence.Id;
|
||||
|
||||
@Entity
|
||||
public class GuildPreferenceEntity {
|
||||
|
@ -8,7 +8,7 @@ import java.util.Date;
|
||||
@Entity
|
||||
public class PendingPwdResetEntity {
|
||||
@Id
|
||||
@GeneratedValue(strategy= GenerationType.AUTO)
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
@OneToOne
|
||||
@ -17,7 +17,7 @@ public class PendingPwdResetEntity {
|
||||
private Date expirationDate;
|
||||
|
||||
|
||||
public PendingPwdResetEntity(UserEntity userEntity,String token) {
|
||||
public PendingPwdResetEntity(UserEntity userEntity, String token) {
|
||||
this.userEntity = userEntity;
|
||||
this.securityToken = token;
|
||||
Calendar cal = Calendar.getInstance();
|
||||
@ -27,7 +27,8 @@ public class PendingPwdResetEntity {
|
||||
|
||||
}
|
||||
|
||||
public PendingPwdResetEntity() {}
|
||||
public PendingPwdResetEntity() {
|
||||
}
|
||||
|
||||
|
||||
public UserEntity getUserEntity() {
|
||||
|
@ -12,7 +12,7 @@ import javax.persistence.Id;
|
||||
@Entity
|
||||
public class PendingUserEntity {
|
||||
@Id
|
||||
@GeneratedValue(strategy= GenerationType.AUTO)
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
private String name;
|
||||
@ -34,7 +34,6 @@ public class PendingUserEntity {
|
||||
}
|
||||
|
||||
|
||||
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
@ -3,10 +3,7 @@ package net.Broken.DB.Entity;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import javax.persistence.*;
|
||||
import javax.sound.midi.Track;
|
||||
import java.lang.reflect.Array;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
@ -15,14 +12,14 @@ import java.util.List;
|
||||
public class PlaylistEntity {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy= GenerationType.AUTO)
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
private String name;
|
||||
|
||||
@JsonIgnore
|
||||
@ManyToOne
|
||||
@JoinColumn(name="userEntity_id", nullable=false)
|
||||
@JoinColumn(name = "userEntity_id", nullable = false)
|
||||
private UserEntity user;
|
||||
|
||||
|
||||
@ -71,9 +68,8 @@ public class PlaylistEntity {
|
||||
this.tracks = tracks;
|
||||
}
|
||||
|
||||
public void addTracks(TrackEntity... tracks )
|
||||
{
|
||||
if(this.tracks == null)
|
||||
public void addTracks(TrackEntity... tracks) {
|
||||
if (this.tracks == null)
|
||||
this.tracks = new ArrayList<>();
|
||||
|
||||
this.tracks.addAll(Arrays.asList(tracks));
|
||||
|
@ -9,7 +9,7 @@ import javax.persistence.*;
|
||||
public class TrackEntity {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy= GenerationType.AUTO)
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
private String title;
|
||||
@ -22,7 +22,7 @@ public class TrackEntity {
|
||||
|
||||
@JsonIgnore
|
||||
@ManyToOne
|
||||
@JoinColumn(name="playlistEntity_id", nullable=false)
|
||||
@JoinColumn(name = "playlistEntity_id", nullable = false)
|
||||
private PlaylistEntity playlist;
|
||||
|
||||
public TrackEntity() {
|
||||
@ -36,9 +36,9 @@ public class TrackEntity {
|
||||
this.pos = pos;
|
||||
}
|
||||
|
||||
public TrackEntity(TrackEntity trackEntity){
|
||||
public TrackEntity(TrackEntity trackEntity) {
|
||||
this.title = trackEntity.title;
|
||||
this.url = trackEntity.url;
|
||||
this.url = trackEntity.url;
|
||||
this.identifier = trackEntity.identifier;
|
||||
this.pos = trackEntity.pos;
|
||||
this.playlist = trackEntity.playlist;
|
||||
|
@ -16,7 +16,7 @@ import java.util.List;
|
||||
@Entity
|
||||
public class UserEntity {
|
||||
@Id
|
||||
@GeneratedValue(strategy= GenerationType.AUTO)
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
private String name;
|
||||
@ -49,14 +49,14 @@ public class UserEntity {
|
||||
this.apiToken = apiToken;
|
||||
}
|
||||
|
||||
public UserEntity(User user, PasswordEncoder passwordEncoder){
|
||||
public UserEntity(User user, PasswordEncoder passwordEncoder) {
|
||||
this.name = user.getName();
|
||||
this.jdaId = user.getId();
|
||||
this.apiToken = UserUtils.getInstance().generateApiToken();
|
||||
this.password = passwordEncoder.encode(UserUtils.getInstance().generateCheckToken());
|
||||
}
|
||||
|
||||
public UserEntity(String name, String id, PasswordEncoder passwordEncoder){
|
||||
public UserEntity(String name, String id, PasswordEncoder passwordEncoder) {
|
||||
this.name = name;
|
||||
this.jdaId = id;
|
||||
this.apiToken = UserUtils.getInstance().generateApiToken();
|
||||
@ -112,8 +112,8 @@ public class UserEntity {
|
||||
this.playlists = playlists;
|
||||
}
|
||||
|
||||
public void addPlaylist(PlaylistEntity... playlists){
|
||||
if(this.playlists == null)
|
||||
public void addPlaylist(PlaylistEntity... playlists) {
|
||||
if (this.playlists == null)
|
||||
this.playlists = new ArrayList<>();
|
||||
|
||||
this.playlists.addAll(Arrays.asList(playlists));
|
||||
|
@ -8,14 +8,14 @@ import javax.persistence.*;
|
||||
public class UserStats {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy= GenerationType.AUTO)
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
private Long id;
|
||||
|
||||
|
||||
private String guildId;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name="userEntity_id", nullable=false)
|
||||
@JoinColumn(name = "userEntity_id", nullable = false)
|
||||
private UserEntity user;
|
||||
|
||||
@ColumnDefault("0")
|
||||
@ -27,9 +27,10 @@ public class UserStats {
|
||||
@ColumnDefault("0")
|
||||
private Long apiCommandCount = 0L;
|
||||
|
||||
public UserStats(){}
|
||||
public UserStats() {
|
||||
}
|
||||
|
||||
public UserStats(String guildId, UserEntity user){
|
||||
public UserStats(String guildId, UserEntity user) {
|
||||
this.guildId = guildId;
|
||||
this.user = user;
|
||||
}
|
||||
|
@ -6,6 +6,6 @@ import org.springframework.data.repository.CrudRepository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface PendingPwdResetRepository extends CrudRepository<PendingPwdResetEntity,Integer>{
|
||||
public interface PendingPwdResetRepository extends CrudRepository<PendingPwdResetEntity, Integer> {
|
||||
List<PendingPwdResetEntity> findByUserEntity(UserEntity userEntity);
|
||||
}
|
||||
|
@ -9,8 +9,10 @@ import java.util.List;
|
||||
* Repository for UserEntity
|
||||
*/
|
||||
|
||||
public interface UserRepository extends CrudRepository<UserEntity, Integer>{
|
||||
public interface UserRepository extends CrudRepository<UserEntity, Integer> {
|
||||
List<UserEntity> findByName(String name);
|
||||
|
||||
List<UserEntity> findByJdaId(String jdaId);
|
||||
|
||||
List<UserEntity> findByApiToken(String apiToken);
|
||||
}
|
||||
|
@ -8,7 +8,9 @@ import java.util.List;
|
||||
|
||||
public interface UserStatsRepository extends CrudRepository<UserStats, Long> {
|
||||
List<UserStats> findByUser(UserEntity userEntity);
|
||||
|
||||
List<UserStats> findByGuildId(String guildId);
|
||||
|
||||
List<UserStats> findByUserAndGuildId(UserEntity user, String guildId);
|
||||
|
||||
}
|
||||
|
@ -9,7 +9,6 @@ import net.Broken.Tools.DayListener.DayListener;
|
||||
import net.Broken.Tools.DayListener.Listeners.DailyMadame;
|
||||
import net.Broken.Tools.DayListener.Listeners.ResetSpam;
|
||||
import net.Broken.Tools.UserManager.Stats.UserStatsUtils;
|
||||
import net.dv8tion.jda.api.AccountType;
|
||||
import net.dv8tion.jda.api.JDA;
|
||||
import net.dv8tion.jda.api.JDABuilder;
|
||||
import net.dv8tion.jda.api.OnlineStatus;
|
||||
|
@ -10,7 +10,6 @@ import net.dv8tion.jda.api.Permission;
|
||||
import net.dv8tion.jda.api.entities.ChannelType;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import net.dv8tion.jda.api.entities.User;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.springframework.boot.ExitCodeGenerator;
|
||||
@ -31,18 +30,16 @@ public class MainBot {
|
||||
|
||||
public static HashMap<String, Commande> commandes = new HashMap<>();
|
||||
public static HashMap<String, SlashCommand> slashCommands = new HashMap<>();
|
||||
public static HashMap<Member, ArrayList<Message>> historique =new HashMap<>();
|
||||
public static HashMap<Member, Integer> message_compteur =new HashMap<>();
|
||||
public static HashMap<String, Integer> mutualGuildCount =new HashMap<>();
|
||||
public static HashMap<Member, ArrayList<Message>> historique = new HashMap<>();
|
||||
public static HashMap<Member, Integer> message_compteur = new HashMap<>();
|
||||
public static HashMap<String, Integer> mutualGuildCount = new HashMap<>();
|
||||
public static boolean roleFlag = false;
|
||||
public static HashMap<Member, UserSpamUtils> spamUtils = new HashMap<>();
|
||||
public static JDA jda;
|
||||
public static boolean ready = false;
|
||||
public static boolean dev = false;
|
||||
|
||||
public static String url= "claptrapbot.com";
|
||||
|
||||
|
||||
public static String url = "claptrapbot.com";
|
||||
|
||||
|
||||
public static int messageTimeOut = 10;
|
||||
@ -54,13 +51,13 @@ public class MainBot {
|
||||
public static void main(String[] args) {
|
||||
|
||||
|
||||
if(!Init.checkEnv())
|
||||
if (!Init.checkEnv())
|
||||
System.exit(1);
|
||||
|
||||
logger.info("=======================================");
|
||||
logger.info("--------------Starting Bot-------------");
|
||||
logger.info("=======================================");
|
||||
if(System.getenv("DEV")!= null){
|
||||
if (System.getenv("DEV") != null) {
|
||||
dev = Boolean.parseBoolean(System.getenv("DEV"));
|
||||
}
|
||||
|
||||
@ -71,7 +68,7 @@ public class MainBot {
|
||||
|
||||
|
||||
ConfigurableApplicationContext ctx = SpringApplication.run(MainBot.class, args);
|
||||
if(jda == null) {
|
||||
if (jda == null) {
|
||||
System.exit(SpringApplication.exit(ctx, (ExitCodeGenerator) () -> {
|
||||
logger.fatal("Init error! Close application!");
|
||||
return 1;
|
||||
@ -85,62 +82,51 @@ public class MainBot {
|
||||
|
||||
/**
|
||||
* Perform test (admin, NSFW and private usable or not) and execute command or not
|
||||
*
|
||||
* @param cmd Container whit all command info
|
||||
*/
|
||||
public static void handleCommand(CommandParser.CommandContainer cmd, UserEntity user)
|
||||
{
|
||||
public static void handleCommand(CommandParser.CommandContainer cmd, UserEntity user) {
|
||||
|
||||
if(!ready){
|
||||
if (!ready) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (commandes.containsKey(cmd.commande)){
|
||||
if (commandes.containsKey(cmd.commande)) {
|
||||
Commande cmdObj = commandes.get(cmd.commande);
|
||||
boolean isAdmin;
|
||||
boolean isBotAdmin = user != null && user.isBotAdmin();
|
||||
if(cmd.event.isFromType(ChannelType.PRIVATE)){
|
||||
if (cmd.event.isFromType(ChannelType.PRIVATE)) {
|
||||
isAdmin = false;
|
||||
}
|
||||
else
|
||||
} else
|
||||
isAdmin = cmd.event.getMember().hasPermission(Permission.ADMINISTRATOR);
|
||||
|
||||
if((!cmdObj.isAdminCmd() || isAdmin) && (!cmdObj.isBotAdminCmd() || isBotAdmin)){
|
||||
if ((!cmdObj.isAdminCmd() || isAdmin) && (!cmdObj.isBotAdminCmd() || isBotAdmin)) {
|
||||
|
||||
if(cmd.event.isFromType(ChannelType.PRIVATE) && commandes.get(cmd.commande).isPrivateUsable())
|
||||
{
|
||||
if (cmd.event.isFromType(ChannelType.PRIVATE) && commandes.get(cmd.commande).isPrivateUsable()) {
|
||||
|
||||
commandes.get(cmd.commande).action(cmd.args, cmd.event);
|
||||
} else if (!cmd.event.isFromType(ChannelType.PRIVATE)) {
|
||||
if (!cmdObj.isNSFW() || cmd.event.getTextChannel().isNSFW()) {
|
||||
commandes.get(cmd.commande).action(cmd.args, cmd.event);
|
||||
} else {
|
||||
cmd.event.getMessage().delete().queue();
|
||||
}
|
||||
else if (!cmd.event.isFromType(ChannelType.PRIVATE))
|
||||
{
|
||||
if(!cmdObj.isNSFW() || cmd.event.getTextChannel().isNSFW()){
|
||||
commandes.get(cmd.commande).action(cmd.args, cmd.event);
|
||||
}
|
||||
else{
|
||||
cmd.event.getMessage().delete().queue();
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
cmd.event.getPrivateChannel().sendMessage(EmbedMessageUtils.getNoPrivate()).queue();
|
||||
} else
|
||||
cmd.event.getPrivateChannel().sendMessage(EmbedMessageUtils.getNoPrivate()).queue();
|
||||
|
||||
|
||||
|
||||
}
|
||||
else{
|
||||
if(cmd.event.isFromType(ChannelType.PRIVATE)){
|
||||
PrivateMessage.send(cmd.event.getAuthor(),EmbedMessageUtils.getUnautorized(), logger);
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
if (cmd.event.isFromType(ChannelType.PRIVATE)) {
|
||||
PrivateMessage.send(cmd.event.getAuthor(), EmbedMessageUtils.getUnautorized(), logger);
|
||||
} else {
|
||||
cmd.event.getTextChannel().sendMessage(EmbedMessageUtils.getUnautorized()).complete();
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
logger.debug("Unknown command : " + cmd.commande);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -12,7 +12,8 @@ import java.util.Set;
|
||||
public class ApiCommandLoader {
|
||||
public static HashMap<String, CommandInterface> apiCommands = new HashMap<>();
|
||||
private static Logger logger = LogManager.getLogger();
|
||||
public static void load(){
|
||||
|
||||
public static void load() {
|
||||
logger.info("Loading Api Command...");
|
||||
// Reflections reflections = new Reflections("net.Broken.RestApi.Command");
|
||||
Reflections reflections = new Reflections(new ConfigurationBuilder().setUrls(ClasspathHelper.forPackage(
|
||||
@ -27,7 +28,7 @@ public class ApiCommandLoader {
|
||||
|
||||
String reference = apiClass.getName();
|
||||
String[] splited = reference.split("\\.");
|
||||
String name = splited[splited.length-1].toUpperCase();
|
||||
String name = splited[splited.length - 1].toUpperCase();
|
||||
|
||||
logger.info("..." + name);
|
||||
|
||||
|
@ -13,9 +13,10 @@ import org.springframework.http.ResponseEntity;
|
||||
public interface CommandInterface {
|
||||
/**
|
||||
* Main action
|
||||
*
|
||||
* @param musicCommande Current guild music command
|
||||
* @param data Received data
|
||||
* @param user User who submit RestApi command
|
||||
* @param data Received data
|
||||
* @param user User who submit RestApi command
|
||||
* @param guild
|
||||
* @return HTTP Response
|
||||
*/
|
||||
|
@ -10,13 +10,13 @@ import net.dv8tion.jda.api.entities.User;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
|
||||
public class AutoFlowOff implements CommandInterface{
|
||||
public class AutoFlowOff implements CommandInterface {
|
||||
|
||||
@Override
|
||||
public ResponseEntity<CommandResponseData> action(CommandPostData data, User user, Guild guild) {
|
||||
AudioM audioM = AudioM.getInstance(guild);
|
||||
TrackScheduler scheduler = audioM.getGuildMusicManager().scheduler;
|
||||
scheduler.setAutoFlow(false);
|
||||
return new ResponseEntity<>(new CommandResponseData(data.command,"ok"), HttpStatus.OK);
|
||||
return new ResponseEntity<>(new CommandResponseData(data.command, "ok"), HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
@ -10,14 +10,14 @@ import net.dv8tion.jda.api.entities.User;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
|
||||
public class AutoFlowOn implements CommandInterface{
|
||||
public class AutoFlowOn implements CommandInterface {
|
||||
|
||||
@Override
|
||||
public ResponseEntity<CommandResponseData> action(CommandPostData data, User user, Guild guild) {
|
||||
AudioM audioM = AudioM.getInstance(guild);
|
||||
TrackScheduler scheduler = audioM.getGuildMusicManager().scheduler;
|
||||
scheduler.setAutoFlow(true);
|
||||
return new ResponseEntity<>(new CommandResponseData(data.command,"ok"), HttpStatus.OK);
|
||||
return new ResponseEntity<>(new CommandResponseData(data.command, "ok"), HttpStatus.OK);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -13,24 +13,25 @@ import org.springframework.http.ResponseEntity;
|
||||
/**
|
||||
* Connect to vocal channel RestApi command
|
||||
*/
|
||||
public class Connect implements CommandInterface{
|
||||
public class Connect implements CommandInterface {
|
||||
@Override
|
||||
public ResponseEntity<CommandResponseData> action(CommandPostData data, User user, Guild guild) {
|
||||
AudioM audioM = AudioM.getInstance(guild);
|
||||
if(data.chanelId == null)
|
||||
return new ResponseEntity<>(new CommandResponseData(data.command,"Missing chanelId"),HttpStatus.BAD_REQUEST);
|
||||
if (data.chanelId == null)
|
||||
return new ResponseEntity<>(new CommandResponseData(data.command, "Missing chanelId"), HttpStatus.BAD_REQUEST);
|
||||
VoiceChannel voiceChannel = null;
|
||||
try{
|
||||
try {
|
||||
voiceChannel = guild.getVoiceChannelById(data.chanelId);
|
||||
}catch (NumberFormatException ignored){}
|
||||
} catch (NumberFormatException ignored) {
|
||||
}
|
||||
|
||||
if(voiceChannel == null){
|
||||
return new ResponseEntity<>(new CommandResponseData(data.command,"Channel Not found"), HttpStatus.BAD_REQUEST);
|
||||
if (voiceChannel == null) {
|
||||
return new ResponseEntity<>(new CommandResponseData(data.command, "Channel Not found"), HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
|
||||
audioM.getGuildAudioPlayer();
|
||||
guild.getAudioManager().openAudioConnection(guild.getVoiceChannelById(data.chanelId));
|
||||
audioM.setPlayedChanel(voiceChannel);
|
||||
return new ResponseEntity<>(new CommandResponseData(data.command,"Accepted"),HttpStatus.OK);
|
||||
return new ResponseEntity<>(new CommandResponseData(data.command, "Accepted"), HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
@ -15,12 +15,11 @@ import org.springframework.http.ResponseEntity;
|
||||
public class Dell implements CommandInterface {
|
||||
@Override
|
||||
public ResponseEntity<CommandResponseData> action(CommandPostData data, User user, Guild guild) {
|
||||
if(data.url != null) {
|
||||
if(AudioM.getInstance(guild).getGuildMusicManager().scheduler.remove(data.url)){
|
||||
if (data.url != null) {
|
||||
if (AudioM.getInstance(guild).getGuildMusicManager().scheduler.remove(data.url)) {
|
||||
return new ResponseEntity<>(new CommandResponseData(data.command, "Accepted"), HttpStatus.OK);
|
||||
}
|
||||
else
|
||||
return new ResponseEntity<>(new CommandResponseData(data.command,"URL not found"), HttpStatus.NOT_FOUND);
|
||||
} else
|
||||
return new ResponseEntity<>(new CommandResponseData(data.command, "URL not found"), HttpStatus.NOT_FOUND);
|
||||
}
|
||||
return new ResponseEntity<>(new CommandResponseData(data.command, "Missing URL"), HttpStatus.NOT_ACCEPTABLE);
|
||||
|
||||
|
@ -12,11 +12,11 @@ import org.springframework.http.ResponseEntity;
|
||||
/**
|
||||
* Disconnect from vocal chanel RestApi Command
|
||||
*/
|
||||
public class Disconnect implements CommandInterface{
|
||||
public class Disconnect implements CommandInterface {
|
||||
@Override
|
||||
public ResponseEntity<CommandResponseData> action(CommandPostData data, User user, Guild guild) {
|
||||
AudioM.getInstance(guild).stop();
|
||||
return new ResponseEntity<>(new CommandResponseData(data.command,"Ok"), HttpStatus.OK);
|
||||
return new ResponseEntity<>(new CommandResponseData(data.command, "Ok"), HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ import org.springframework.http.ResponseEntity;
|
||||
public class Pause implements CommandInterface {
|
||||
@Override
|
||||
public ResponseEntity<CommandResponseData> action(CommandPostData data, User user, Guild guild) {
|
||||
AudioM.getInstance(guild).getGuildMusicManager().scheduler.pause();
|
||||
AudioM.getInstance(guild).getGuildMusicManager().scheduler.pause();
|
||||
return new ResponseEntity<>(new CommandResponseData(data.command, "Accepted"), HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package net.Broken.RestApi.Data;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
|
||||
/**
|
||||
* Data for JSON Parsing
|
||||
*/
|
||||
|
@ -1,10 +1,7 @@
|
||||
package net.Broken.RestApi.Data;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.sedmelluq.discord.lavaplayer.track.AudioTrackInfo;
|
||||
import com.sedmelluq.discord.lavaplayer.track.AudioTrackState;
|
||||
|
||||
/**
|
||||
* Data for JSON Parsing
|
||||
*/
|
||||
@ -34,7 +31,7 @@ public class CurrentMusicData {
|
||||
}
|
||||
|
||||
public String getState() {
|
||||
if(pause)
|
||||
if (pause)
|
||||
return "PAUSE";
|
||||
else
|
||||
return state;
|
||||
|
@ -2,7 +2,7 @@ package net.Broken.RestApi.Data.Playlist;
|
||||
|
||||
import net.Broken.RestApi.Data.CommandPostData;
|
||||
|
||||
public class AddToPlaylistData extends CommandPostData{
|
||||
public class AddToPlaylistData extends CommandPostData {
|
||||
|
||||
public int playlistId;
|
||||
|
||||
|
@ -13,6 +13,7 @@ public class PlaylistResponseData {
|
||||
this.message = message;
|
||||
this.playlist = playlist;
|
||||
}
|
||||
|
||||
public PlaylistResponseData(String message, String error) {
|
||||
this.message = message;
|
||||
this.error = error;
|
||||
|
@ -1,8 +1,7 @@
|
||||
package net.Broken.RestApi.Data;
|
||||
|
||||
import com.sedmelluq.discord.lavaplayer.track.AudioTrackInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Data for JSON Parsing
|
||||
*/
|
||||
|
@ -25,8 +25,8 @@ public class GetSettingsData {
|
||||
this.current = current;
|
||||
}
|
||||
|
||||
public enum TYPE{
|
||||
BOOL,LIST,STRING,SELECT_LIST
|
||||
public enum TYPE {
|
||||
BOOL, LIST, STRING, SELECT_LIST
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -12,6 +12,7 @@ public class Value {
|
||||
this.name = name;
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Value(String name, String id, boolean selected) {
|
||||
this.name = name;
|
||||
this.id = id;
|
||||
|
@ -2,6 +2,7 @@ package net.Broken.RestApi.Data;
|
||||
|
||||
import com.sedmelluq.discord.lavaplayer.track.AudioTrackInfo;
|
||||
import net.Broken.audio.UserAudioTrack;
|
||||
|
||||
/**
|
||||
* Data for JSON Parsing
|
||||
*/
|
||||
@ -14,7 +15,7 @@ public class UserAudioTrackData {
|
||||
this.audioTrackInfo = audioTrackInfo;
|
||||
}
|
||||
|
||||
public UserAudioTrackData(UserAudioTrack userAudioTrack){
|
||||
public UserAudioTrackData(UserAudioTrack userAudioTrack) {
|
||||
this.audioTrackInfo = userAudioTrack.getAudioTrack().getInfo();
|
||||
this.user = userAudioTrack.getSubmittedUser().getName();
|
||||
}
|
||||
|
@ -1,8 +1,5 @@
|
||||
package net.Broken.RestApi;
|
||||
|
||||
import net.Broken.DB.Entity.PlaylistEntity;
|
||||
import net.Broken.DB.Entity.TrackEntity;
|
||||
import net.Broken.DB.Entity.UserEntity;
|
||||
import net.Broken.DB.Repository.PlaylistRepository;
|
||||
import net.Broken.DB.Repository.TrackRepository;
|
||||
import net.Broken.DB.Repository.UserRepository;
|
||||
@ -10,14 +7,10 @@ import net.Broken.MainBot;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/")
|
||||
public class GeneralApiController {
|
||||
@ -39,12 +32,10 @@ public class GeneralApiController {
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/isReady", method = RequestMethod.GET)
|
||||
public ResponseEntity<String> isReady(){
|
||||
if(MainBot.ready){
|
||||
public ResponseEntity<String> isReady() {
|
||||
if (MainBot.ready) {
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
|
||||
}
|
||||
}
|
||||
|
@ -44,22 +44,22 @@ public class PlaylistAPIController {
|
||||
|
||||
|
||||
@RequestMapping("/myPlaylist")
|
||||
public List<PlaylistEntity> myPlaylist(@CookieValue(value = "token", defaultValue = "") String token){
|
||||
if(token.isEmpty())
|
||||
public List<PlaylistEntity> myPlaylist(@CookieValue(value = "token", defaultValue = "") String token) {
|
||||
if (token.isEmpty())
|
||||
return null;
|
||||
else{
|
||||
else {
|
||||
UserEntity user = userRepository.findByApiToken(token).get(0);
|
||||
return user.getPlaylists();
|
||||
return user.getPlaylists();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@RequestMapping("/createPlaylist")
|
||||
public ResponseEntity<PlaylistResponseData> createPlaylist(@CookieValue(value = "token", defaultValue = "") String token, @RequestBody CreatePlaylistData data){
|
||||
public ResponseEntity<PlaylistResponseData> createPlaylist(@CookieValue(value = "token", defaultValue = "") String token, @RequestBody CreatePlaylistData data) {
|
||||
|
||||
if(token.isEmpty())
|
||||
if (token.isEmpty())
|
||||
return new ResponseEntity<>(new PlaylistResponseData("Unknown Token!\nPlease Re-connect.", "token"), HttpStatus.UNAUTHORIZED);
|
||||
else{
|
||||
else {
|
||||
UserEntity user = userRepository.findByApiToken(token).get(0);
|
||||
PlaylistEntity playlistEntity = new PlaylistEntity(data.name, user);
|
||||
playlistEntity = playlistRepository.save(playlistEntity);
|
||||
@ -72,7 +72,7 @@ public class PlaylistAPIController {
|
||||
}
|
||||
|
||||
@RequestMapping("/addToPlaylist")
|
||||
public ResponseEntity<PlaylistResponseData> addToPlaylist(@CookieValue(value = "token", defaultValue = "") String token, @RequestBody AddToPlaylistData data){
|
||||
public ResponseEntity<PlaylistResponseData> addToPlaylist(@CookieValue(value = "token", defaultValue = "") String token, @RequestBody AddToPlaylistData data) {
|
||||
PlaylistManager playlistManager = PlaylistManager.getINSTANCE();
|
||||
|
||||
return playlistManager.addToPlaylist(token, data);
|
||||
@ -80,7 +80,7 @@ public class PlaylistAPIController {
|
||||
}
|
||||
|
||||
@RequestMapping("/dellTrack")
|
||||
public ResponseEntity<PlaylistResponseData> dellTrack(@CookieValue(value = "token", defaultValue = "") String token, @RequestBody DeleteTrackData data){
|
||||
public ResponseEntity<PlaylistResponseData> dellTrack(@CookieValue(value = "token", defaultValue = "") String token, @RequestBody DeleteTrackData data) {
|
||||
PlaylistManager playlistManager = PlaylistManager.getINSTANCE();
|
||||
|
||||
return playlistManager.removeTrack(token, data);
|
||||
@ -88,7 +88,7 @@ public class PlaylistAPIController {
|
||||
}
|
||||
|
||||
@RequestMapping("/moveTrack")
|
||||
public ResponseEntity<PlaylistResponseData> moveTrack(@CookieValue(value = "token", defaultValue = "") String token, @RequestBody MoveTrackData data){
|
||||
public ResponseEntity<PlaylistResponseData> moveTrack(@CookieValue(value = "token", defaultValue = "") String token, @RequestBody MoveTrackData data) {
|
||||
PlaylistManager playlistManager = PlaylistManager.getINSTANCE();
|
||||
|
||||
return playlistManager.moveTrack(token, data);
|
||||
@ -96,6 +96,4 @@ public class PlaylistAPIController {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,23 +1,14 @@
|
||||
package net.Broken.RestApi;
|
||||
|
||||
import net.Broken.DB.Entity.GuildPreferenceEntity;
|
||||
import net.Broken.DB.Entity.UserEntity;
|
||||
import net.Broken.DB.Repository.GuildPreferenceRepository;
|
||||
import net.Broken.DB.Repository.UserRepository;
|
||||
import net.Broken.MainBot;
|
||||
import net.Broken.RestApi.Data.Settings.GetSettingsData;
|
||||
import net.Broken.RestApi.Data.Settings.ListPostSetting;
|
||||
import net.Broken.RestApi.Data.Settings.PostSetSettings;
|
||||
import net.Broken.RestApi.Data.Settings.Value;
|
||||
import net.Broken.Tools.SettingsUtils;
|
||||
import net.Broken.Tools.UserManager.Exceptions.UnknownTokenException;
|
||||
import net.Broken.Tools.UserManager.UserUtils;
|
||||
import net.dv8tion.jda.api.JDA;
|
||||
import net.dv8tion.jda.api.Permission;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import net.dv8tion.jda.api.entities.Role;
|
||||
import net.dv8tion.jda.api.entities.TextChannel;
|
||||
import net.dv8tion.jda.api.entities.User;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -25,16 +16,14 @@ import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.RegEx;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api")
|
||||
public class SettingAPIController {
|
||||
private Logger logger = LogManager.getLogger();
|
||||
final
|
||||
UserRepository userRepository;
|
||||
private Logger logger = LogManager.getLogger();
|
||||
|
||||
@Autowired
|
||||
public SettingAPIController(UserRepository userRepository) {
|
||||
@ -43,45 +32,42 @@ public class SettingAPIController {
|
||||
|
||||
|
||||
@RequestMapping(value = "/settings", method = RequestMethod.GET)
|
||||
public ResponseEntity<ArrayList<GetSettingsData>> getSettings(@CookieValue("token") String token, @CookieValue("guild") String guild){
|
||||
public ResponseEntity<ArrayList<GetSettingsData>> getSettings(@CookieValue("token") String token, @CookieValue("guild") String guild) {
|
||||
SettingsUtils settingUtils = SettingsUtils.getInstance();
|
||||
if(settingUtils.checkPermission(token, guild)){
|
||||
if (settingUtils.checkPermission(token, guild)) {
|
||||
Guild jdaGuild = MainBot.jda.getGuildById(guild);
|
||||
return new ResponseEntity<>( settingUtils.extractSettings(jdaGuild), HttpStatus.OK);
|
||||
}
|
||||
else{
|
||||
return new ResponseEntity<>(HttpStatus.UNAUTHORIZED);
|
||||
return new ResponseEntity<>(settingUtils.extractSettings(jdaGuild), HttpStatus.OK);
|
||||
} else {
|
||||
return new ResponseEntity<>(HttpStatus.UNAUTHORIZED);
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/settings", method = RequestMethod.POST)
|
||||
public ResponseEntity<String> setSetting(@CookieValue("token") String token, @CookieValue("guild") String guild, @RequestBody ListPostSetting settings){
|
||||
public ResponseEntity<String> setSetting(@CookieValue("token") String token, @CookieValue("guild") String guild, @RequestBody ListPostSetting settings) {
|
||||
SettingsUtils settingUtils = SettingsUtils.getInstance();
|
||||
|
||||
if(settingUtils.checkPermission(token, guild)){
|
||||
if (settingUtils.checkPermission(token, guild)) {
|
||||
Guild jdaGuild = MainBot.jda.getGuildById(guild);
|
||||
try {
|
||||
UserEntity user = UserUtils.getInstance().getUserWithApiToken(userRepository,token);
|
||||
UserEntity user = UserUtils.getInstance().getUserWithApiToken(userRepository, token);
|
||||
logger.info(user.getName() + " change config of " + jdaGuild.getName());
|
||||
} catch (UnknownTokenException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if(settingUtils.setSettings(jdaGuild, settings.settings)){
|
||||
if (settingUtils.setSettings(jdaGuild, settings.settings)) {
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
|
||||
}else{
|
||||
} else {
|
||||
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
logger.warn("Try to change setting, UNAUTHORIZED. TOKEN: " + token + " GUILD: " + guild);
|
||||
return new ResponseEntity<>(HttpStatus.UNAUTHORIZED);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -5,7 +5,6 @@ import net.Broken.DB.Entity.UserEntity;
|
||||
import net.Broken.DB.Repository.PendingUserRepository;
|
||||
import net.Broken.DB.Repository.UserRepository;
|
||||
import net.Broken.MainBot;
|
||||
import net.Broken.RestApi.Data.CommandResponseData;
|
||||
import net.Broken.RestApi.Data.UserManager.*;
|
||||
import net.Broken.Tools.UserManager.Exceptions.*;
|
||||
import net.Broken.Tools.UserManager.Oauth;
|
||||
@ -15,7 +14,6 @@ import net.Broken.Tools.UserManager.UserUtils;
|
||||
import net.dv8tion.jda.api.Permission;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import net.dv8tion.jda.api.entities.User;
|
||||
import org.apache.http.HttpResponse;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -34,15 +32,12 @@ import java.util.List;
|
||||
@RestController
|
||||
@RequestMapping("/api/userManagement")
|
||||
public class UserManagerAPIController {
|
||||
Logger logger = LogManager.getLogger();
|
||||
final
|
||||
PendingUserRepository pendingUserRepository;
|
||||
|
||||
final
|
||||
UserRepository userRepository;
|
||||
|
||||
private final PasswordEncoder passwordEncoder;
|
||||
|
||||
Logger logger = LogManager.getLogger();
|
||||
UserUtils userUtils = UserUtils.getInstance();
|
||||
|
||||
@Autowired
|
||||
@ -54,65 +49,64 @@ public class UserManagerAPIController {
|
||||
|
||||
|
||||
@RequestMapping(value = "/preRegister", method = RequestMethod.POST)
|
||||
public ResponseEntity<CheckResposeData> command(@RequestBody UserInfoData data){
|
||||
if(data != null && data.name != null) {
|
||||
public ResponseEntity<CheckResposeData> command(@RequestBody UserInfoData data) {
|
||||
if (data != null && data.name != null) {
|
||||
try {
|
||||
String id = userUtils.sendCheckToken(pendingUserRepository, userRepository, passwordEncoder, data);
|
||||
return new ResponseEntity<>(new CheckResposeData(true, data.name, "Message sent", id), HttpStatus.OK);
|
||||
} catch (UserNotFoundException e) {
|
||||
logger.warn("User \"" + data.name + "\" not found!");
|
||||
return new ResponseEntity<>(new CheckResposeData(false, data.name, "User not found on server!",""), HttpStatus.NOT_FOUND);
|
||||
return new ResponseEntity<>(new CheckResposeData(false, data.name, "User not found on server!", ""), HttpStatus.NOT_FOUND);
|
||||
} catch (PasswordNotMatchException userAlreadyRegistered) {
|
||||
return new ResponseEntity<>(new CheckResposeData(false, data.name, "User already registered in pending database and password not match!",""), HttpStatus.NOT_ACCEPTABLE);
|
||||
return new ResponseEntity<>(new CheckResposeData(false, data.name, "User already registered in pending database and password not match!", ""), HttpStatus.NOT_ACCEPTABLE);
|
||||
|
||||
} catch (UserAlreadyRegistered userAlreadyRegistered) {
|
||||
return new ResponseEntity<>(new CheckResposeData(false, data.name, "User already registered in database!",""), HttpStatus.NOT_ACCEPTABLE);
|
||||
return new ResponseEntity<>(new CheckResposeData(false, data.name, "User already registered in database!", ""), HttpStatus.NOT_ACCEPTABLE);
|
||||
}
|
||||
}
|
||||
else{
|
||||
return new ResponseEntity<>(new CheckResposeData(false, "", "Missing parameter(s)",""), HttpStatus.BAD_REQUEST);
|
||||
} else {
|
||||
return new ResponseEntity<>(new CheckResposeData(false, "", "Missing parameter(s)", ""), HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/confirmAccount", method = RequestMethod.POST)
|
||||
public ResponseEntity<UserConnectionData> confirAccount(@RequestBody ConfirmData data){
|
||||
public ResponseEntity<UserConnectionData> confirAccount(@RequestBody ConfirmData data) {
|
||||
try {
|
||||
PendingUserEntity pUser = userUtils.confirmCheckToken(pendingUserRepository, Integer.parseInt(data.id), data.checkToken);
|
||||
UserEntity user = new UserEntity(pUser, userUtils.generateApiToken());
|
||||
userRepository.save(user);
|
||||
pendingUserRepository.delete(pUser);
|
||||
|
||||
return new ResponseEntity<>(new UserConnectionData(true, user.getName(), user.getApiToken(),""),HttpStatus.OK);
|
||||
return new ResponseEntity<>(new UserConnectionData(true, user.getName(), user.getApiToken(), ""), HttpStatus.OK);
|
||||
} catch (TokenNotMatch tokenNotMatch) {
|
||||
logger.warn("Pre token not match for "+data.id+"!");
|
||||
return new ResponseEntity<>(new UserConnectionData(false,"Token not match!","token"),HttpStatus.NOT_ACCEPTABLE);
|
||||
logger.warn("Pre token not match for " + data.id + "!");
|
||||
return new ResponseEntity<>(new UserConnectionData(false, "Token not match!", "token"), HttpStatus.NOT_ACCEPTABLE);
|
||||
} catch (UserNotFoundException e) {
|
||||
logger.warn("Id not found in DB ("+data.id+")");
|
||||
return new ResponseEntity<>(new UserConnectionData(false,"User not found on DB!", "user"),HttpStatus.NOT_ACCEPTABLE);
|
||||
logger.warn("Id not found in DB (" + data.id + ")");
|
||||
return new ResponseEntity<>(new UserConnectionData(false, "User not found on DB!", "user"), HttpStatus.NOT_ACCEPTABLE);
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/requestToken", method = RequestMethod.POST)
|
||||
public ResponseEntity<UserConnectionData> requestToken(@RequestBody UserInfoData data){
|
||||
public ResponseEntity<UserConnectionData> requestToken(@RequestBody UserInfoData data) {
|
||||
try {
|
||||
UserEntity user = userUtils.getUser(userRepository, passwordEncoder, data);
|
||||
return new ResponseEntity<>(new UserConnectionData(true, user.getName(), user.getApiToken(), ""), HttpStatus.OK);
|
||||
|
||||
} catch (UserNotFoundException e) {
|
||||
return new ResponseEntity<>(new UserConnectionData(false,"User not registered!", "user"),HttpStatus.NOT_ACCEPTABLE);
|
||||
return new ResponseEntity<>(new UserConnectionData(false, "User not registered!", "user"), HttpStatus.NOT_ACCEPTABLE);
|
||||
} catch (PasswordNotMatchException e) {
|
||||
return new ResponseEntity<>(new UserConnectionData(false,"Wrong user name or password!", "password"),HttpStatus.NOT_ACCEPTABLE);
|
||||
return new ResponseEntity<>(new UserConnectionData(false, "Wrong user name or password!", "password"), HttpStatus.NOT_ACCEPTABLE);
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/getGuilds", method = RequestMethod.GET)
|
||||
public ResponseEntity<List<GuildInfo>> getGuilds(@CookieValue("token") String token){
|
||||
public ResponseEntity<List<GuildInfo>> getGuilds(@CookieValue("token") String token) {
|
||||
try {
|
||||
UserEntity userE = userUtils.getUserWithApiToken(userRepository, token);
|
||||
User user = MainBot.jda.getUserById(userE.getJdaId());
|
||||
List<GuildInfo> temp = new ArrayList<>();
|
||||
if(user != null){
|
||||
for (Guild guild : user.getMutualGuilds()){
|
||||
if (user != null) {
|
||||
for (Guild guild : user.getMutualGuilds()) {
|
||||
|
||||
temp.add(new GuildInfo(guild.getName(), guild.getId(), guild.getMember(user).hasPermission(Permission.ADMINISTRATOR), guild.getIconUrl()));
|
||||
}
|
||||
@ -129,24 +123,21 @@ public class UserManagerAPIController {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@RequestMapping(value = "/oauthLogin", method = RequestMethod.POST)
|
||||
public ResponseEntity<UserConnectionData> oauthLogin(@RequestParam(value = "token") String discordToken){
|
||||
public ResponseEntity<UserConnectionData> oauthLogin(@RequestParam(value = "token") String discordToken) {
|
||||
logger.debug(discordToken);
|
||||
UserEntity user = Oauth.getInstance().getUserEntity(discordToken, userRepository, passwordEncoder);
|
||||
logger.info("OAuth login for " + user.getName());
|
||||
return new ResponseEntity<>(new UserConnectionData(true, user.getName(), user.getApiToken(), ""), HttpStatus.OK);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@RequestMapping(value = "/checkToken", method = RequestMethod.GET)
|
||||
public ResponseEntity checkToken(@CookieValue(value = "token") String token){
|
||||
try{
|
||||
userUtils.getUserWithApiToken(userRepository,token);
|
||||
public ResponseEntity checkToken(@CookieValue(value = "token") String token) {
|
||||
try {
|
||||
userUtils.getUserWithApiToken(userRepository, token);
|
||||
return new ResponseEntity(HttpStatus.OK);
|
||||
} catch (UnknownTokenException e) {
|
||||
logger.info("Token check fail");
|
||||
@ -155,11 +146,11 @@ public class UserManagerAPIController {
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/getStatsPack", method = RequestMethod.GET)
|
||||
public ResponseEntity<GuildStatsPack> getStatsPack(@CookieValue(value = "token") String token, @RequestParam(value = "guild") String guildID){
|
||||
try{
|
||||
public ResponseEntity<GuildStatsPack> getStatsPack(@CookieValue(value = "token") String token, @RequestParam(value = "guild") String guildID) {
|
||||
try {
|
||||
UserEntity user = userUtils.getUserWithApiToken(userRepository, token);
|
||||
Guild guild = MainBot.jda.getGuildById(guildID);
|
||||
if(guild == null ){
|
||||
if (guild == null) {
|
||||
logger.warn("Request whit no guild!");
|
||||
return new ResponseEntity(HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
@ -167,7 +158,6 @@ public class UserManagerAPIController {
|
||||
return new ResponseEntity<>(UserStatsUtils.getINSTANCE().getStatPack(user, guildID), HttpStatus.OK);
|
||||
|
||||
|
||||
|
||||
} catch (UnknownTokenException e) {
|
||||
logger.info("Token check fail");
|
||||
return new ResponseEntity(HttpStatus.UNAUTHORIZED);
|
||||
@ -175,7 +165,4 @@ public class UserManagerAPIController {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -28,7 +28,9 @@ import java.util.List;
|
||||
* Command that return a random picture of cat.
|
||||
*/
|
||||
public class Cat implements SlashCommand {
|
||||
private Logger logger = LogManager.getLogger();;
|
||||
private Logger logger = LogManager.getLogger();
|
||||
;
|
||||
|
||||
@Override
|
||||
public void action(SlashCommandEvent event) {
|
||||
try {
|
||||
|
@ -58,13 +58,12 @@ public class Music implements SlashCommand {
|
||||
case "add":
|
||||
OptionMapping url = event.getOption("url");
|
||||
boolean next = false;
|
||||
if(event.getOption("next") != null){
|
||||
if (event.getOption("next") != null) {
|
||||
next = event.getOption("next").getAsBoolean();
|
||||
}
|
||||
if(event.getOption("playlist-limit") == null){
|
||||
audio.add(event, url.getAsString(),30, next);
|
||||
}
|
||||
else{
|
||||
if (event.getOption("playlist-limit") == null) {
|
||||
audio.add(event, url.getAsString(), 30, next);
|
||||
} else {
|
||||
long limit = event.getOption("playlist-limit").getAsLong();
|
||||
audio.add(event, url.getAsString(), (int) limit, next);
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
package net.Broken.Tools;
|
||||
|
||||
import net.Broken.MainBot;
|
||||
import net.Broken.Commands.Move;
|
||||
import net.Broken.MainBot;
|
||||
import net.dv8tion.jda.api.entities.*;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.exceptions.HierarchyException;
|
||||
@ -9,8 +9,6 @@ import net.dv8tion.jda.api.managers.GuildManager;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@ -22,21 +20,23 @@ import static java.lang.Thread.sleep;
|
||||
*/
|
||||
public class AntiSpam {
|
||||
|
||||
Logger logger = LogManager.getLogger();
|
||||
public Move move = new Move();
|
||||
Logger logger = LogManager.getLogger();
|
||||
|
||||
public AntiSpam() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Send user to Spam role
|
||||
* @param user User to punish
|
||||
* @param guild Guild
|
||||
*
|
||||
* @param user User to punish
|
||||
* @param guild Guild
|
||||
* @param guildManager GuildManager
|
||||
* @param incrMulti True for increment punishment time
|
||||
* @param event Message Received Event
|
||||
* @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){
|
||||
public void extermine(Member user, Guild guild, GuildManager guildManager, Boolean incrMulti, MessageReceivedEvent event) {
|
||||
try {
|
||||
sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
@ -44,49 +44,42 @@ public class AntiSpam {
|
||||
}
|
||||
|
||||
// On créer un nouvelle case dans le tableau des statuts si il n'y est pas
|
||||
if(!MainBot.spamUtils.containsKey(user))
|
||||
{
|
||||
if (!MainBot.spamUtils.containsKey(user)) {
|
||||
List<Message> messages = new ArrayList<>();
|
||||
messages.addAll(MainBot.historique.get(user));
|
||||
MainBot.spamUtils.put(user,new UserSpamUtils(user,messages));
|
||||
MainBot.spamUtils.put(user, new UserSpamUtils(user, messages));
|
||||
}
|
||||
// On verrifie que l'uttilisateur n'est pas deja en spam
|
||||
if(!MainBot.spamUtils.get(user).isOnSpam())
|
||||
{
|
||||
if (!MainBot.spamUtils.get(user).isOnSpam()) {
|
||||
//l'utilisateur n'est pas deja en spam
|
||||
if(MainBot.spamUtils.get(user).getMultip() != 0)
|
||||
{
|
||||
if(MainBot.spamUtils.get(user).getMultip()<45 && incrMulti)
|
||||
{
|
||||
MainBot.spamUtils.get(user).setMultip(MainBot.spamUtils.get(user).getMultip()*2);
|
||||
if (MainBot.spamUtils.get(user).getMultip() != 0) {
|
||||
if (MainBot.spamUtils.get(user).getMultip() < 45 && incrMulti) {
|
||||
MainBot.spamUtils.get(user).setMultip(MainBot.spamUtils.get(user).getMultip() * 2);
|
||||
}
|
||||
}
|
||||
else
|
||||
} else
|
||||
MainBot.spamUtils.get(user).setMultip(1);
|
||||
|
||||
logger.info("Starting protocol 66 on "+user.getEffectiveName()+" with a multiplicator of "+MainBot.spamUtils.get(user));
|
||||
logger.info("Starting protocol 66 on " + user.getEffectiveName() + " with a multiplicator of " + MainBot.spamUtils.get(user));
|
||||
|
||||
if(!MainBot.spamUtils.get(user).isOnSpam())
|
||||
{
|
||||
if (!MainBot.spamUtils.get(user).isOnSpam()) {
|
||||
MainBot.spamUtils.get(user).setOnSpam(true);
|
||||
List<Role> spm = guild.getRolesByName("Spammer", false);
|
||||
if(spm.size() != 0){
|
||||
try{
|
||||
if (spm.size() != 0) {
|
||||
try {
|
||||
move.exc(user, spm, true, guild, guildManager);
|
||||
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).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();
|
||||
}catch (HierarchyException e){
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getMoveError("You cannot move a "+user.getRoles().get(0).getAsMention())).complete();
|
||||
List<Message> messages = new ArrayList<Message>(){{
|
||||
} catch (HierarchyException e) {
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getMoveError("You cannot move a " + user.getRoles().get(0).getAsMention())).complete();
|
||||
List<Message> messages = new ArrayList<Message>() {{
|
||||
add(rest);
|
||||
add(event.getMessage());
|
||||
}};
|
||||
new MessageTimeOut(messages,MainBot.messageTimeOut).start();
|
||||
new MessageTimeOut(messages, MainBot.messageTimeOut).start();
|
||||
MainBot.spamUtils.get(user).setOnSpam(false);
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
MessageEmbed msg = EmbedMessageUtils.buildStandar(EmbedMessageUtils.getError("\nSpam role not found, you need to create it!"));
|
||||
event.getTextChannel().sendMessage(msg).complete();
|
||||
}
|
||||
@ -96,14 +89,12 @@ public class AntiSpam {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Timer to auto remove user from Spam role
|
||||
*/
|
||||
public class Minuteur extends Thread{
|
||||
public class Minuteur extends Thread {
|
||||
public TextChannel chanel;
|
||||
public List<Role> saveRoleUser;
|
||||
public Member user;
|
||||
@ -114,51 +105,48 @@ public class AntiSpam {
|
||||
public int timeLeft;
|
||||
|
||||
|
||||
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();
|
||||
this.timeLeft = 60*multip;
|
||||
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();
|
||||
this.timeLeft = 60 * multip;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
logger.info("["+user.getEffectiveName()+"] Start for "+multip+"min");
|
||||
while (MainBot.spamUtils.get(user).isOnSpam())
|
||||
{
|
||||
logger.info("[" + user.getEffectiveName() + "] Start for " + multip + "min");
|
||||
while (MainBot.spamUtils.get(user).isOnSpam()) {
|
||||
try {
|
||||
sleep(1000);
|
||||
sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if(timeLeft<=0)
|
||||
{
|
||||
if (timeLeft <= 0) {
|
||||
MainBot.spamUtils.get(user.getUser()).setOnSpam(false);
|
||||
}
|
||||
timeLeft--;
|
||||
}
|
||||
logger.info("["+user.getEffectiveName()+"] End of spam for "+user.getEffectiveName()+" after "+multip+"min.");
|
||||
logger.info("[" + user.getEffectiveName() + "] End of spam for " + user.getEffectiveName() + " after " + multip + "min.");
|
||||
try {
|
||||
move.exc(user, saveRoleUser, true, serveur, serveurManager); //aSaveroleUser=saveRoleUser.get(i)
|
||||
}catch (HierarchyException e){
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getMoveError("You cannot move "+user.getRoles().get(0).getAsMention())).complete();
|
||||
List<Message> messages = new ArrayList<Message>(){{
|
||||
} catch (HierarchyException e) {
|
||||
Message rest = event.getTextChannel().sendMessage(EmbedMessageUtils.getMoveError("You cannot move " + user.getRoles().get(0).getAsMention())).complete();
|
||||
List<Message> messages = new ArrayList<Message>() {{
|
||||
add(rest);
|
||||
add(event.getMessage());
|
||||
}};
|
||||
new MessageTimeOut(messages,MainBot.messageTimeOut).start();
|
||||
new MessageTimeOut(messages, MainBot.messageTimeOut).start();
|
||||
logger.error("Hierarchy error");
|
||||
}
|
||||
logger.info("["+user.getEffectiveName()+"] End for "+multip+"min");
|
||||
new MessageTimeOut(new ArrayList<>(MainBot.spamUtils.get(user).getMessages()),0).start();
|
||||
logger.info("[" + user.getEffectiveName() + "] End for " + multip + "min");
|
||||
new MessageTimeOut(new ArrayList<>(MainBot.spamUtils.get(user).getMessages()), 0).start();
|
||||
MainBot.spamUtils.get(user).clearAndAdd(chanel.sendMessage(EmbedMessageUtils.getSpamPardon(user)).complete());
|
||||
new MessageTimeOut(MainBot.spamUtils.get(user).getMessages(),60).start();
|
||||
new MessageTimeOut(MainBot.spamUtils.get(user).getMessages(), 60).start();
|
||||
|
||||
// #-----------------------------------------------#
|
||||
|
||||
@ -167,7 +155,4 @@ public class AntiSpam {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -9,7 +9,10 @@ import net.dv8tion.jda.api.requests.RestAction;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import static net.Broken.MainBot.jda;
|
||||
|
||||
@ -20,6 +23,10 @@ public class AutoVoiceChannel {
|
||||
private final String guildID;
|
||||
private final HashMap<Integer, String> createdChannels = new HashMap<>();
|
||||
|
||||
public AutoVoiceChannel(Guild guild) {
|
||||
this.guildID = guild.getId();
|
||||
}
|
||||
|
||||
public static AutoVoiceChannel getInstance(Guild guild) {
|
||||
if (INSTANCE_MAP.get(guild.getId()) == null) {
|
||||
INSTANCE_MAP.put(guild.getId(), new AutoVoiceChannel(guild));
|
||||
@ -27,10 +34,6 @@ public class AutoVoiceChannel {
|
||||
return INSTANCE_MAP.get(guild.getId());
|
||||
}
|
||||
|
||||
public AutoVoiceChannel(Guild guild) {
|
||||
this.guildID = guild.getId();
|
||||
}
|
||||
|
||||
public void join(VoiceChannel voiceChannel) {
|
||||
Guild guild = jda.getGuildById(guildID);
|
||||
if (guild == null)
|
||||
@ -41,7 +44,7 @@ public class AutoVoiceChannel {
|
||||
VoiceChannel newChannel = voiceChannel.createCopy().complete();
|
||||
int next = getNextNumber();
|
||||
String title = pref.getAutoVoiceChannelTitle();
|
||||
if (title.isEmpty()){
|
||||
if (title.isEmpty()) {
|
||||
title = "Voice @count";
|
||||
}
|
||||
title = title.replace("@count", Integer.toString(next));
|
||||
|
@ -40,13 +40,13 @@ public class CommandLoader {
|
||||
|
||||
if (command.isAnnotationPresent(NoDev.class) && MainBot.dev) {
|
||||
logger.warn("Command disabled in dev mode");
|
||||
}else{
|
||||
} else {
|
||||
try {
|
||||
MainBot.commandes.put(name, command.newInstance());
|
||||
} catch (InstantiationException | IllegalAccessException e) {
|
||||
logger.error("Failed to load " + name + "!");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
|
@ -16,32 +16,31 @@ public class CommandParser {
|
||||
|
||||
/**
|
||||
* Parse raw received string.
|
||||
*
|
||||
* @param brt Raw command string.
|
||||
* @param e Event
|
||||
* @param e Event
|
||||
* @return Readable container that contain all useful data
|
||||
*/
|
||||
public CommandContainer parse(String brt, MessageReceivedEvent e)
|
||||
{
|
||||
ArrayList<String> split =new ArrayList<String>();
|
||||
String brut =brt;
|
||||
String sansTete = brut.replaceFirst("//","");
|
||||
public CommandContainer parse(String brt, MessageReceivedEvent e) {
|
||||
ArrayList<String> split = new ArrayList<String>();
|
||||
String brut = brt;
|
||||
String sansTete = brut.replaceFirst("//", "");
|
||||
String[] splitSansTete = sansTete.split(" ");
|
||||
|
||||
for(String s : splitSansTete){
|
||||
if(s.length()>0)
|
||||
for (String s : splitSansTete) {
|
||||
if (s.length() > 0)
|
||||
split.add(s);
|
||||
}
|
||||
|
||||
String commande = split.get(0);
|
||||
String[] args = new String[split.size()-1];
|
||||
split.subList(1,split.size()).toArray(args);
|
||||
String[] args = new String[split.size() - 1];
|
||||
split.subList(1, split.size()).toArray(args);
|
||||
|
||||
for(int i=0;i<args.length;i++)
|
||||
args[i]=args[i].replace('$',' ');
|
||||
for (int i = 0; i < args.length; i++)
|
||||
args[i] = args[i].replace('$', ' ');
|
||||
|
||||
|
||||
|
||||
logger.info("Author: "+e.getAuthor().getName()+", Command: "+commande+", args: "+ Arrays.toString(args));
|
||||
logger.info("Author: " + e.getAuthor().getName() + ", Command: " + commande + ", args: " + Arrays.toString(args));
|
||||
|
||||
return new CommandContainer(brut, sansTete, splitSansTete, commande, args, e);
|
||||
|
||||
@ -50,7 +49,7 @@ public class CommandParser {
|
||||
/**
|
||||
* Container
|
||||
*/
|
||||
public class CommandContainer{
|
||||
public class CommandContainer {
|
||||
public final String brut;
|
||||
public final String sansTete;
|
||||
public final String[] splitSansTete;
|
||||
@ -58,14 +57,13 @@ public class CommandParser {
|
||||
public final String[] args;
|
||||
public final MessageReceivedEvent event;
|
||||
|
||||
public CommandContainer(String brut, String sansTete, String[] splitSansTete, String commande, String[] args, MessageReceivedEvent e)
|
||||
{
|
||||
this.brut=brut;
|
||||
this.sansTete=sansTete;
|
||||
this.splitSansTete=splitSansTete;
|
||||
this.commande=commande;
|
||||
this.args=args;
|
||||
this.event= e;
|
||||
public CommandContainer(String brut, String sansTete, String[] splitSansTete, String commande, String[] args, MessageReceivedEvent e) {
|
||||
this.brut = brut;
|
||||
this.sansTete = sansTete;
|
||||
this.splitSansTete = splitSansTete;
|
||||
this.commande = commande;
|
||||
this.args = args;
|
||||
this.event = e;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
package net.Broken.Tools.Command;
|
||||
|
||||
import net.Broken.Commande;
|
||||
import net.Broken.Tools.FindContentOnWebPage;
|
||||
import net.Broken.Tools.LimitChecker;
|
||||
@ -11,15 +12,13 @@ import java.io.IOException;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Queue;
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
|
||||
/**
|
||||
* Abstact class used for all command that need to find the max number of page on a web site.
|
||||
*/
|
||||
@Ignore
|
||||
public abstract class NumberedCommande implements Commande{
|
||||
private Logger logger = LogManager.getLogger();
|
||||
public abstract class NumberedCommande implements Commande {
|
||||
protected int minNumber = 1;
|
||||
protected int maxNumber = -1;
|
||||
protected String baseURL;
|
||||
@ -27,11 +26,13 @@ public abstract class NumberedCommande implements Commande{
|
||||
protected String htmlType;
|
||||
protected String urlSuffix;
|
||||
protected LinkedBlockingQueue<Integer> randomQueue = new LinkedBlockingQueue<>();
|
||||
private Logger logger = LogManager.getLogger();
|
||||
|
||||
/**
|
||||
* Default constructor
|
||||
* @param logger Logger used for logs
|
||||
* @param baseURL WebSite base url
|
||||
*
|
||||
* @param logger Logger used for logs
|
||||
* @param baseURL WebSite base url
|
||||
* @param divClass DivClass to search to extract image
|
||||
* @param htmlType HTML tag to extract image (img)
|
||||
*/
|
||||
@ -44,29 +45,25 @@ public abstract class NumberedCommande implements Commande{
|
||||
try {
|
||||
logger.debug("Checking max...");
|
||||
maxNumber = LimitChecker.doYourJob(baseURL, 2, urlSuffix);
|
||||
logger.info("Limit is "+maxNumber);
|
||||
logger.info("Limit is " + maxNumber);
|
||||
} catch (IOException e) {
|
||||
logger.catching(e);
|
||||
}
|
||||
}
|
||||
|
||||
public NumberedCommande(Logger logger, String baseURL, String urlSuffix){
|
||||
public NumberedCommande(Logger logger, String baseURL, String urlSuffix) {
|
||||
this(logger, baseURL, urlSuffix, null, null);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void action(String[] args, MessageReceivedEvent event) {
|
||||
try
|
||||
{
|
||||
if(args.length == 0)
|
||||
{
|
||||
String result = poll();
|
||||
event.getTextChannel().sendMessage(event.getAuthor().getAsMention()+"\n"+result).queue();
|
||||
try {
|
||||
if (args.length == 0) {
|
||||
String result = poll();
|
||||
event.getTextChannel().sendMessage(event.getAuthor().getAsMention() + "\n" + result).queue();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
switch (args[0].toLowerCase()) {
|
||||
case "update":
|
||||
logger.info("update commande from " + event.getMessage().getAuthor().getName());
|
||||
@ -139,7 +136,7 @@ public abstract class NumberedCommande implements Commande{
|
||||
|
||||
protected void checkRandom() throws IOException {
|
||||
logger.trace("Queue size: " + randomQueue.size());
|
||||
if(randomQueue.isEmpty()){
|
||||
if (randomQueue.isEmpty()) {
|
||||
logger.debug("Queue empty, update it.");
|
||||
completeRandom();
|
||||
}
|
||||
|
@ -1,13 +1,11 @@
|
||||
package net.Broken.Tools.Command;
|
||||
|
||||
import net.Broken.Commande;
|
||||
import net.Broken.MainBot;
|
||||
import net.Broken.SlashCommand;
|
||||
import net.dv8tion.jda.api.interactions.commands.build.CommandData;
|
||||
import net.dv8tion.jda.api.requests.restaction.CommandListUpdateAction;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.jboss.jandex.Main;
|
||||
import org.reflections.Reflections;
|
||||
import org.reflections.util.ClasspathHelper;
|
||||
import org.reflections.util.ConfigurationBuilder;
|
||||
@ -45,10 +43,11 @@ public class SlashCommandLoader {
|
||||
|
||||
if (command.isAnnotationPresent(NoDev.class) && MainBot.dev) {
|
||||
logger.warn("Command disabled in dev mode");
|
||||
}else{
|
||||
} else {
|
||||
try {
|
||||
MainBot.slashCommands.put(name, command.getDeclaredConstructor().newInstance());
|
||||
} catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
|
||||
} catch (InstantiationException | IllegalAccessException | InvocationTargetException |
|
||||
NoSuchMethodException e) {
|
||||
logger.error("Failed to load " + name + "!");
|
||||
}
|
||||
|
||||
@ -61,12 +60,12 @@ public class SlashCommandLoader {
|
||||
}
|
||||
}
|
||||
|
||||
public static void registerSlashCommands(CommandListUpdateAction commandListUpdateAction){
|
||||
MainBot.slashCommands.forEach((k,v)->{
|
||||
public static void registerSlashCommands(CommandListUpdateAction commandListUpdateAction) {
|
||||
MainBot.slashCommands.forEach((k, v) -> {
|
||||
CommandData command = new CommandData(k, v.getDescription());
|
||||
if(v.getOptions() != null)
|
||||
if (v.getOptions() != null)
|
||||
command.addOptions(v.getOptions());
|
||||
if(v.getSubcommands() != null){
|
||||
if (v.getSubcommands() != null) {
|
||||
command.addSubcommands(v.getSubcommands());
|
||||
}
|
||||
commandListUpdateAction.addCommands(command);
|
||||
|
@ -1,6 +1,5 @@
|
||||
package net.Broken.Tools.DayListener;
|
||||
import net.Broken.Commands.Spam;
|
||||
import net.dv8tion.jda.api.exceptions.RateLimitedException;
|
||||
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
@ -12,15 +11,14 @@ import java.util.GregorianCalendar;
|
||||
* Day change listener
|
||||
*/
|
||||
public class DayListener extends Thread {
|
||||
private static DayListener INSTANCE = new DayListener();
|
||||
private Logger logger = LogManager.getLogger();
|
||||
private Calendar calendar;
|
||||
private int previousDay;
|
||||
|
||||
/**
|
||||
* List of listeners to need to be triggered
|
||||
*/
|
||||
private ArrayList<NewDayListener> listeners = new ArrayList<>();
|
||||
private static DayListener INSTANCE = new DayListener();
|
||||
|
||||
|
||||
/**
|
||||
@ -34,29 +32,30 @@ public class DayListener extends Thread {
|
||||
|
||||
/**
|
||||
* Singleton
|
||||
*
|
||||
* @return Unique DayListener instance.
|
||||
*/
|
||||
public static DayListener getInstance()
|
||||
{
|
||||
public static DayListener getInstance() {
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add Listener who will be triggered
|
||||
*
|
||||
* @param listener
|
||||
*/
|
||||
public void addListener(NewDayListener listener){
|
||||
public void addListener(NewDayListener listener) {
|
||||
listeners.add(listener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Trigger all listeners
|
||||
*/
|
||||
public void trigger(){
|
||||
for(NewDayListener listener : listeners){
|
||||
try{
|
||||
public void trigger() {
|
||||
for (NewDayListener listener : listeners) {
|
||||
try {
|
||||
listener.onNewDay();
|
||||
}catch (Exception ex){
|
||||
} catch (Exception ex) {
|
||||
logger.error("Fail to execute day change !");
|
||||
logger.catching(ex);
|
||||
}
|
||||
@ -69,11 +68,9 @@ public class DayListener extends Thread {
|
||||
*/
|
||||
@Override
|
||||
public void run() {
|
||||
while(true)
|
||||
{
|
||||
while (true) {
|
||||
calendar = Calendar.getInstance();
|
||||
if(calendar.get(GregorianCalendar.DAY_OF_MONTH) != previousDay)
|
||||
{
|
||||
if (calendar.get(GregorianCalendar.DAY_OF_MONTH) != previousDay) {
|
||||
LogManager.getLogger().info("New day triggered!");
|
||||
trigger();
|
||||
previousDay = calendar.get(GregorianCalendar.DAY_OF_MONTH);
|
||||
|
@ -7,7 +7,6 @@ import net.Broken.MainBot;
|
||||
import net.Broken.SpringContext;
|
||||
import net.Broken.Tools.DayListener.NewDayListener;
|
||||
import net.Broken.Tools.FindContentOnWebPage;
|
||||
import net.Broken.Tools.Redirection;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import net.dv8tion.jda.api.entities.TextChannel;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
@ -15,26 +14,24 @@ import org.apache.logging.log4j.Logger;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Daily Listener for DailyMadame
|
||||
*/
|
||||
public class DailyMadame implements NewDayListener{
|
||||
public class DailyMadame implements NewDayListener {
|
||||
|
||||
private GuildPreferenceRepository guildPreferenceRepository;
|
||||
private Logger logger = LogManager.getLogger();
|
||||
|
||||
public DailyMadame() {
|
||||
ApplicationContext context = SpringContext.getAppContext();
|
||||
guildPreferenceRepository = (GuildPreferenceRepository) context.getBean("guildPreferenceRepository");
|
||||
}
|
||||
|
||||
private Logger logger = LogManager.getLogger();
|
||||
@Override
|
||||
public void onNewDay() {
|
||||
|
||||
@ -43,7 +40,7 @@ public class DailyMadame implements NewDayListener{
|
||||
String imgUrl;
|
||||
try {
|
||||
int day = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
|
||||
if(day != Calendar.MONDAY && day != Calendar.SUNDAY){
|
||||
if (day != Calendar.MONDAY && day != Calendar.SUNDAY) {
|
||||
LocalDate now = LocalDate.now().minusDays(1);
|
||||
String date = DateTimeFormatter.ofPattern("yyyy/MM/dd").format(now);
|
||||
|
||||
@ -52,41 +49,37 @@ public class DailyMadame implements NewDayListener{
|
||||
imgUrl = FindContentOnWebPage.doYourJob(url, "post-content", "img");
|
||||
|
||||
|
||||
}else {
|
||||
} else {
|
||||
Madame command = (Madame) MainBot.commandes.get("madame");
|
||||
imgUrl = command.poll();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
for(Guild guild : guilds){
|
||||
for (Guild guild : guilds) {
|
||||
TextChannel chanel = null;
|
||||
logger.debug(guild.getName());
|
||||
List<GuildPreferenceEntity> guildPref = guildPreferenceRepository.findByGuildId(guild.getId());
|
||||
if( guildPref.size() > 0 && guildPref.get(0).isDailyMadame()){
|
||||
for(TextChannel iterator : guild.getTextChannels())
|
||||
{
|
||||
if(iterator.isNSFW() && iterator.canTalk()){
|
||||
if (guildPref.size() > 0 && guildPref.get(0).isDailyMadame()) {
|
||||
for (TextChannel iterator : guild.getTextChannels()) {
|
||||
if (iterator.isNSFW() && iterator.canTalk()) {
|
||||
chanel = iterator;
|
||||
logger.debug("break: " + chanel.getName());
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(chanel != null){
|
||||
if (chanel != null) {
|
||||
|
||||
chanel.sendMessage("Madame of the day :kissing_heart: \n" + imgUrl).queue();
|
||||
|
||||
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
logger.info("No NSFW chanel found for " + guild.getName() + ", ignoring it!");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}catch (IOException e) {
|
||||
} catch (IOException e) {
|
||||
logger.catching(e);
|
||||
}
|
||||
}
|
||||
|
@ -4,8 +4,6 @@ import net.Broken.Commands.Spam;
|
||||
import net.Broken.Tools.DayListener.NewDayListener;
|
||||
import net.dv8tion.jda.api.exceptions.RateLimitedException;
|
||||
|
||||
import java.util.GregorianCalendar;
|
||||
|
||||
/**
|
||||
* Daily spam reset
|
||||
*/
|
||||
@ -16,7 +14,7 @@ public class ResetSpam implements NewDayListener {
|
||||
String str[] = {"all"};
|
||||
|
||||
try {
|
||||
spam.reset(null,str);
|
||||
spam.reset(null, str);
|
||||
} catch (RateLimitedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
@ -1,9 +1,7 @@
|
||||
package net.Broken.Tools;
|
||||
|
||||
import net.Broken.DB.Entity.GuildPreferenceEntity;
|
||||
import net.Broken.MainBot;
|
||||
import net.Broken.audio.Youtube.SearchResult;
|
||||
import net.Broken.audio.Youtube.YoutubeTools;
|
||||
import net.dv8tion.jda.api.EmbedBuilder;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import net.dv8tion.jda.api.entities.MessageEmbed;
|
||||
@ -11,8 +9,6 @@ import net.dv8tion.jda.api.entities.MessageEmbed;
|
||||
import java.awt.*;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@ -32,13 +28,13 @@ public class EmbedMessageUtils {
|
||||
|
||||
}
|
||||
|
||||
public static MessageEmbed getNoPrivate(){
|
||||
public static MessageEmbed getNoPrivate() {
|
||||
EmbedBuilder temp = new EmbedBuilder().setTitle(":warning: Command not available in private :warning:").setDescription(":arrow_right: Use `//help` to see the available commands.").setColor(Color.red);
|
||||
return buildStandar(temp);
|
||||
}
|
||||
|
||||
public static MessageEmbed getMusicError(String message){
|
||||
return new EmbedBuilder().setTitle(":warning: Musique Error :warning:").setDescription(":arrow_right: "+message).setFooter("'//help music' for more info.",MainBot.jda.getSelfUser().getAvatarUrl()).setTimestamp(Instant.now()).setColor(Color.red).setFooter(MainBot.url, MainBot.jda.getSelfUser().getAvatarUrl()).build();
|
||||
public static MessageEmbed getMusicError(String message) {
|
||||
return new EmbedBuilder().setTitle(":warning: Musique Error :warning:").setDescription(":arrow_right: " + message).setFooter("'//help music' for more info.", MainBot.jda.getSelfUser().getAvatarUrl()).setTimestamp(Instant.now()).setColor(Color.red).setFooter(MainBot.url, MainBot.jda.getSelfUser().getAvatarUrl()).build();
|
||||
|
||||
}
|
||||
|
||||
@ -57,7 +53,7 @@ public class EmbedMessageUtils {
|
||||
|
||||
public static MessageEmbed getHelp(String command) throws FileNotFoundException {
|
||||
String name = command.substring(0, 1).toUpperCase() + command.substring(1).toLowerCase();
|
||||
String message = new ResourceLoader().getFile("Help/"+name+"/en/main.md");
|
||||
String message = new ResourceLoader().getFile("Help/" + name + "/en/main.md");
|
||||
EmbedBuilder temp = new EmbedBuilder().setTitle(":question: " + command.substring(0, 1).toUpperCase() + command.substring(1).toLowerCase() + " :question: ").setDescription(message).setColor(Color.green);
|
||||
return buildStandar(temp);
|
||||
}
|
||||
@ -76,7 +72,7 @@ public class EmbedMessageUtils {
|
||||
}
|
||||
|
||||
public static MessageEmbed getSpamError(String message, String sub) {
|
||||
return new EmbedBuilder().setTitle(":warning: Spam Error :warning: ").setDescription(message).setColor(Color.red).setFooter("'//help spam "+sub+"' for more info.", MainBot.jda.getSelfUser().getAvatarUrl()).setThumbnail(MainBot.jda.getSelfUser().getAvatarUrl()).setTimestamp(Instant.now()).build();
|
||||
return new EmbedBuilder().setTitle(":warning: Spam Error :warning: ").setDescription(message).setColor(Color.red).setFooter("'//help spam " + sub + "' for more info.", MainBot.jda.getSelfUser().getAvatarUrl()).setThumbnail(MainBot.jda.getSelfUser().getAvatarUrl()).setTimestamp(Instant.now()).build();
|
||||
}
|
||||
|
||||
public static MessageEmbed getSpamInfo(String message) {
|
||||
@ -92,49 +88,47 @@ public class EmbedMessageUtils {
|
||||
return buildStandar(new EmbedBuilder().setTitle(":pencil: Web Registration :pencil:").setDescription(message).setColor(Color.green));
|
||||
}
|
||||
|
||||
public static MessageEmbed getInternalError(){
|
||||
public static MessageEmbed getInternalError() {
|
||||
return buildStandar(getError("I... I... I don't feel so good ~~mr stark~~... :thermometer_face: \nPlease contact my developer!").setImage("https://i.imgur.com/anKv8U5.gif"));
|
||||
}
|
||||
|
||||
public static MessageEmbed buildStandar(EmbedBuilder embedBuilder){
|
||||
public static MessageEmbed buildStandar(EmbedBuilder embedBuilder) {
|
||||
return embedBuilder.setFooter(MainBot.url, MainBot.jda.getSelfUser().getAvatarUrl()).setThumbnail(MainBot.jda.getSelfUser().getAvatarUrl()).setTimestamp(Instant.now()).build();
|
||||
}
|
||||
|
||||
public static MessageEmbed getUnautorized(){
|
||||
public static MessageEmbed getUnautorized() {
|
||||
return buildStandar(getError("You're not powerful enough to do that slave !").setImage("https://i.imgur.com/0OSsdvW.gif"));
|
||||
}
|
||||
|
||||
public static MessageEmbed getHelpList(String role, String list) throws FileNotFoundException {
|
||||
String message = new ResourceLoader().getFile("Help/main.md");
|
||||
message = message.replace("@list", list);
|
||||
return new EmbedBuilder().setTitle("Bot Command ("+role+")").setDescription(message).setFooter("Use '//help <command>' for more info",MainBot.jda.getSelfUser().getAvatarUrl()).setTimestamp(Instant.now()).setColor(Color.green).setThumbnail(MainBot.jda.getSelfUser().getAvatarUrl()).build();
|
||||
return new EmbedBuilder().setTitle("Bot Command (" + role + ")").setDescription(message).setFooter("Use '//help <command>' for more info", MainBot.jda.getSelfUser().getAvatarUrl()).setTimestamp(Instant.now()).setColor(Color.green).setThumbnail(MainBot.jda.getSelfUser().getAvatarUrl()).build();
|
||||
}
|
||||
|
||||
public static MessageEmbed getLastMessageFromTextChannel(HashMap<String, String> message) {
|
||||
EmbedBuilder temp = new EmbedBuilder().setTitle("Channel uses checker").setDescription("Last message date for channels:").setColor(Color.green);
|
||||
for(Map.Entry<String, String> entry : message.entrySet()) {
|
||||
temp.addField(entry.getKey(),entry.getValue(), false);
|
||||
for (Map.Entry<String, String> entry : message.entrySet()) {
|
||||
temp.addField(entry.getKey(), entry.getValue(), false);
|
||||
}
|
||||
|
||||
return buildStandar(temp);
|
||||
}
|
||||
|
||||
public static MessageEmbed getReportUsersError(){
|
||||
public static MessageEmbed getReportUsersError() {
|
||||
return new EmbedBuilder().setTitle(":warning: Command error :warning: ").setDescription("").setColor(Color.red).setFooter("'//help move' for more info.", MainBot.jda.getSelfUser().getAvatarUrl()).setTimestamp(Instant.now()).build();
|
||||
}
|
||||
|
||||
public static MessageEmbed searchResult(SearchResult result){
|
||||
public static MessageEmbed searchResult(SearchResult result) {
|
||||
EmbedBuilder builder = new EmbedBuilder()
|
||||
.setColor(Color.CYAN)
|
||||
.setTitle(result.title)
|
||||
.setImage(result.imageUrl)
|
||||
.addField("Duration: ", result.duration, false)
|
||||
.addField("URL:","https://www.youtube.com/watch?v="+result.id,false)
|
||||
.addField("URL:", "https://www.youtube.com/watch?v=" + result.id, false)
|
||||
.addField("Chanel:", result.channelTittle, false);
|
||||
return buildStandar(builder);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
@ -6,10 +6,11 @@ import java.io.InputStreamReader;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
|
||||
public class FindContentOnWebPage {
|
||||
public class FindContentOnWebPage {
|
||||
/**
|
||||
* Find picture URL on webPage
|
||||
* @param url Web Page URL
|
||||
*
|
||||
* @param url Web Page URL
|
||||
* @param divClass Div class where the picture is
|
||||
* @param htmlType HTML tag of image (img)
|
||||
* @return Picture URL
|
||||
@ -18,13 +19,13 @@ public class FindContentOnWebPage {
|
||||
public static String doYourJob(String url, String divClass, String htmlType) throws IOException {
|
||||
// System.out.println(url);
|
||||
String source = getSourceUrl(url);
|
||||
int divIndex = source.indexOf("class=\""+divClass);
|
||||
int divIndex = source.indexOf("class=\"" + divClass);
|
||||
String sub = source.substring(divIndex);
|
||||
// System.out.println(sub);
|
||||
sub = sub.replace(divClass,"");
|
||||
sub = sub.replace(divClass, "");
|
||||
sub = sub.substring(sub.indexOf(htmlType));
|
||||
sub = sub.substring(sub.indexOf("src"));
|
||||
sub = sub.replace("src=\"","");
|
||||
sub = sub.replace("src=\"", "");
|
||||
String[] split = sub.split("\"");
|
||||
// System.out.println(split[0]);
|
||||
return split[0];
|
||||
@ -32,6 +33,7 @@ public class FindContentOnWebPage {
|
||||
|
||||
/**
|
||||
* Get source code of web page
|
||||
*
|
||||
* @param url Web page URL
|
||||
* @return Web page source as String
|
||||
* @throws IOException
|
||||
@ -39,7 +41,7 @@ public class FindContentOnWebPage {
|
||||
public static String getSourceUrl(String url) throws IOException {
|
||||
URL urlC = new URL(url);
|
||||
URLConnection yc = urlC.openConnection();
|
||||
yc.setRequestProperty("User-Agent","Googlebot/2.1 (+http://www.googlebot.com/bot.html)");
|
||||
yc.setRequestProperty("User-Agent", "Googlebot/2.1 (+http://www.googlebot.com/bot.html)");
|
||||
BufferedReader in = new BufferedReader(new InputStreamReader(
|
||||
yc.getInputStream(), "UTF-8"));
|
||||
String inputLine;
|
||||
|
@ -3,9 +3,7 @@ package net.Broken.Tools;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
|
||||
/**
|
||||
@ -17,7 +15,8 @@ public class LimitChecker {
|
||||
|
||||
/**
|
||||
* Check max page url for web site like baseURL.com/number-2/
|
||||
* @param baseURL Base url without numbers
|
||||
*
|
||||
* @param baseURL Base url without numbers
|
||||
* @param minNumber Start number
|
||||
* @return max Number
|
||||
* @throws IOException
|
||||
@ -28,57 +27,53 @@ public class LimitChecker {
|
||||
boolean redirected = false;
|
||||
Redirection redirection = new Redirection();
|
||||
|
||||
while(!redirected )
|
||||
{
|
||||
String origin = baseURL+number+suffix;
|
||||
while (!redirected) {
|
||||
String origin = baseURL + number + suffix;
|
||||
String newUrl = redirection.get(origin);
|
||||
logger.trace("Origin URL: "+origin+" Result: "+newUrl);
|
||||
if(newUrl.equals(origin))
|
||||
logger.trace("Origin URL: " + origin + " Result: " + newUrl);
|
||||
if (newUrl.equals(origin))
|
||||
number += 500;
|
||||
else
|
||||
redirected = true;
|
||||
}
|
||||
number-=400;
|
||||
number -= 400;
|
||||
redirected = false;
|
||||
logger.debug("First pass: "+number);
|
||||
while(!redirected )
|
||||
{
|
||||
String origin = baseURL+number+suffix;
|
||||
logger.debug("First pass: " + number);
|
||||
while (!redirected) {
|
||||
String origin = baseURL + number + suffix;
|
||||
String newUrl = redirection.get(origin);
|
||||
logger.trace("Origin URL: "+origin+" Result: "+newUrl);
|
||||
if(newUrl.equals(origin))
|
||||
logger.trace("Origin URL: " + origin + " Result: " + newUrl);
|
||||
if (newUrl.equals(origin))
|
||||
number += 100;
|
||||
else
|
||||
redirected = true;
|
||||
}
|
||||
number-=90;
|
||||
number -= 90;
|
||||
redirected = false;
|
||||
logger.debug("Second pass: "+number);
|
||||
while(!redirected )
|
||||
{
|
||||
String origin = baseURL+number+suffix;
|
||||
logger.debug("Second pass: " + number);
|
||||
while (!redirected) {
|
||||
String origin = baseURL + number + suffix;
|
||||
String newUrl = redirection.get(origin);
|
||||
logger.trace("Origin URL: "+origin+" Result: "+newUrl);
|
||||
if(newUrl.equals(origin))
|
||||
logger.trace("Origin URL: " + origin + " Result: " + newUrl);
|
||||
if (newUrl.equals(origin))
|
||||
number += 10;
|
||||
else
|
||||
redirected = true;
|
||||
}
|
||||
number-=9;
|
||||
number -= 9;
|
||||
redirected = false;
|
||||
logger.debug("Third pass: "+number);
|
||||
while(!redirected )
|
||||
{
|
||||
String origin = baseURL+number+suffix;
|
||||
logger.debug("Third pass: " + number);
|
||||
while (!redirected) {
|
||||
String origin = baseURL + number + suffix;
|
||||
String newUrl = redirection.get(origin);
|
||||
logger.trace("Origin URL: "+origin+" Result: "+newUrl);
|
||||
if(newUrl.equals(origin))
|
||||
logger.trace("Origin URL: " + origin + " Result: " + newUrl);
|
||||
if (newUrl.equals(origin))
|
||||
number += 1;
|
||||
else
|
||||
redirected = true;
|
||||
}
|
||||
number-=1;
|
||||
logger.debug("Final pass: "+number);
|
||||
number -= 1;
|
||||
logger.debug("Final pass: " + number);
|
||||
return number;
|
||||
|
||||
|
||||
|
@ -5,14 +5,13 @@ import net.dv8tion.jda.api.exceptions.ErrorResponseException;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Auto dell message util
|
||||
*/
|
||||
public class MessageTimeOut extends Thread{
|
||||
public class MessageTimeOut extends Thread {
|
||||
List<Message> messages;
|
||||
int second;
|
||||
Logger logger = LogManager.getLogger();
|
||||
@ -30,7 +29,7 @@ public class MessageTimeOut extends Thread{
|
||||
@Override
|
||||
public void run() {
|
||||
logger.debug("Timer for message deletion stated...");
|
||||
for(int i=0; i<second; i++){
|
||||
for (int i = 0; i < second; i++) {
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
@ -38,11 +37,10 @@ public class MessageTimeOut extends Thread{
|
||||
}
|
||||
}
|
||||
logger.debug("Time out! Deleting message!");
|
||||
for(Message aMessage: messages)
|
||||
{
|
||||
for (Message aMessage : messages) {
|
||||
try {
|
||||
aMessage.delete().queue();
|
||||
}catch (ErrorResponseException e){
|
||||
} catch (ErrorResponseException e) {
|
||||
logger.warn("Unknown Message");
|
||||
}
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
|
||||
package net.Broken.Tools;
|
||||
|
||||
import net.Broken.MainBot;
|
||||
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
@ -20,7 +18,8 @@ public class Moderateur {
|
||||
|
||||
Logger logger = LogManager.getLogger();
|
||||
|
||||
public Moderateur() {}
|
||||
public Moderateur() {
|
||||
}
|
||||
|
||||
// Cette méthode récupère le dernier message est le rajoute à "historique"
|
||||
// SI (spam) retourne 1 (si l'user spam)
|
||||
@ -28,27 +27,28 @@ public class Moderateur {
|
||||
|
||||
/**
|
||||
* Get last message and add it on history. After analyse for spam detection
|
||||
* @param user User
|
||||
* @param guild Guild
|
||||
*
|
||||
* @param user User
|
||||
* @param guild Guild
|
||||
* @param guildManager Guild manager
|
||||
* @param event Message received event
|
||||
* @param event Message received event
|
||||
* @return 1 if detected as spam, else 0
|
||||
*/
|
||||
public int analyse(Member user, Guild guild, GuildManager guildManager, MessageReceivedEvent event){
|
||||
public int analyse(Member user, Guild guild, GuildManager guildManager, MessageReceivedEvent event) {
|
||||
|
||||
ArrayList<Message> thisUserHistory = new ArrayList<>();//Creer tableau pour la copie
|
||||
int i = 0; // variable de parcours de "historique"
|
||||
int nbMessage = 3;
|
||||
int spam = 0;
|
||||
|
||||
if(MainBot.spamUtils.containsKey(user) && MainBot.spamUtils.get(user).isOnSpam()){
|
||||
if (MainBot.spamUtils.containsKey(user) && MainBot.spamUtils.get(user).isOnSpam()) {
|
||||
MainBot.spamUtils.get(user).addMessage(event.getMessage());
|
||||
}
|
||||
|
||||
/********************************************
|
||||
* si l'USER a deja envoyé un message *
|
||||
********************************************/
|
||||
if(MainBot.historique.containsKey(user))// Si le user a deja posté un message
|
||||
if (MainBot.historique.containsKey(user))// Si le user a deja posté un message
|
||||
{
|
||||
/********************************************
|
||||
* COPIE des infos d"historique" vers TOI[] *
|
||||
@ -58,8 +58,8 @@ public class Moderateur {
|
||||
/********************************************
|
||||
* Ajout dernier message recu + dans histo' *
|
||||
********************************************/
|
||||
thisUserHistory.add(0,event.getMessage());
|
||||
if(thisUserHistory.size()>nbMessage+1)
|
||||
thisUserHistory.add(0, event.getMessage());
|
||||
if (thisUserHistory.size() > nbMessage + 1)
|
||||
thisUserHistory.remove(4);
|
||||
MainBot.historique.put(user, thisUserHistory);// On ajoute dans l'historique TOI
|
||||
|
||||
@ -68,18 +68,17 @@ public class Moderateur {
|
||||
*****************************/
|
||||
int equalCont = 0;
|
||||
String oldMessage = "";
|
||||
for(Message aMessage : thisUserHistory){
|
||||
if(aMessage.getContentRaw().equals(oldMessage))
|
||||
for (Message aMessage : thisUserHistory) {
|
||||
if (aMessage.getContentRaw().equals(oldMessage))
|
||||
equalCont++;
|
||||
oldMessage = aMessage.getContentRaw();
|
||||
|
||||
}
|
||||
if(equalCont >= nbMessage){
|
||||
if (equalCont >= nbMessage) {
|
||||
spam = 1;
|
||||
logger.info("Spam detected for "+user.getEffectiveName()+"with 3 identical messages : ");
|
||||
for(Message aMessage : thisUserHistory)
|
||||
{
|
||||
logger.info("\t - "+aMessage.getContentRaw());
|
||||
logger.info("Spam detected for " + user.getEffectiveName() + "with 3 identical messages : ");
|
||||
for (Message aMessage : thisUserHistory) {
|
||||
logger.info("\t - " + aMessage.getContentRaw());
|
||||
}
|
||||
MainBot.historique.put(user, new ArrayList<Message>());
|
||||
}
|
||||
@ -90,7 +89,7 @@ public class Moderateur {
|
||||
********************************************/
|
||||
// si le user n'a pas encore posté de message
|
||||
// on ajoute le dernier message dans "historique"
|
||||
thisUserHistory.add(0,event.getMessage());
|
||||
thisUserHistory.add(0, event.getMessage());
|
||||
|
||||
MainBot.historique.put(user, thisUserHistory);
|
||||
}
|
||||
@ -99,28 +98,25 @@ public class Moderateur {
|
||||
**********************************/
|
||||
|
||||
|
||||
|
||||
|
||||
/********************************************
|
||||
* Comptage du nombre de message *
|
||||
********************************************/
|
||||
if(MainBot.message_compteur.containsKey(user))// Si le user a deja posté un message
|
||||
if (MainBot.message_compteur.containsKey(user))// Si le user a deja posté un message
|
||||
{
|
||||
int cpt = MainBot.message_compteur.get(user);
|
||||
cpt++;
|
||||
//System.out.println("compteur : "+cpt);
|
||||
MainBot.message_compteur.put(user, cpt);
|
||||
if(cpt > 5){
|
||||
MainBot.message_compteur.put(user,0);
|
||||
if (cpt > 5) {
|
||||
MainBot.message_compteur.put(user, 0);
|
||||
spam = 1;
|
||||
logger.info("Spam detected for "+user.getEffectiveName()+"with 5 messages in 5 secondes: ");
|
||||
logger.info("Spam detected for " + user.getEffectiveName() + "with 5 messages in 5 secondes: ");
|
||||
ArrayList<Message> histo = MainBot.historique.get(user);
|
||||
for (Message aMessage:histo )
|
||||
{
|
||||
for (Message aMessage : histo) {
|
||||
// logger.debug("\t*"+aMessage.getContent());
|
||||
}
|
||||
}
|
||||
}else{
|
||||
} else {
|
||||
MainBot.message_compteur.put(user, 1);
|
||||
}
|
||||
|
||||
|
@ -12,11 +12,12 @@ public class PrivateMessage {
|
||||
|
||||
/**
|
||||
* Auto open private channel and send message
|
||||
* @param user User to send message
|
||||
*
|
||||
* @param user User to send message
|
||||
* @param message Message to send
|
||||
* @param logger Logger
|
||||
* @param logger Logger
|
||||
*/
|
||||
public static void send(User user, String message, Logger logger){
|
||||
public static void send(User user, String message, Logger logger) {
|
||||
|
||||
user.openPrivateChannel().complete().sendMessage(message).queue();
|
||||
|
||||
@ -24,12 +25,13 @@ public class PrivateMessage {
|
||||
|
||||
/**
|
||||
* Auto open private channel and send message
|
||||
* @param user User to send message
|
||||
*
|
||||
* @param user User to send message
|
||||
* @param message Message to send
|
||||
* @param logger Logger
|
||||
* @param logger Logger
|
||||
* @return Sended Message
|
||||
*/
|
||||
public static Message send(User user, MessageEmbed message, Logger logger){
|
||||
public static Message send(User user, MessageEmbed message, Logger logger) {
|
||||
return user.openPrivateChannel().complete().sendMessage(message).complete();
|
||||
|
||||
}
|
||||
|
@ -4,34 +4,34 @@ import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
|
||||
/**
|
||||
* Redirection URL Util
|
||||
*/
|
||||
public class Redirection {
|
||||
|
||||
public Redirection(){
|
||||
public Redirection() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Return Redirected URL
|
||||
*
|
||||
* @param urlString Source URL
|
||||
* @return Redirected URL
|
||||
* @throws IOException
|
||||
*/
|
||||
public String get(String urlString) throws IOException {
|
||||
System.setProperty("http.agent","Googlebot");
|
||||
System.setProperty("http.agent", "Googlebot");
|
||||
HttpURLConnection con = (HttpURLConnection) new URL(urlString).openConnection();
|
||||
con.setRequestProperty("User-Agent","Googlebot/2.1 (+http://www.googlebot.com/bot.html)");
|
||||
con.setRequestProperty("User-Agent", "Googlebot/2.1 (+http://www.googlebot.com/bot.html)");
|
||||
//System.out.println( "orignal url: " + con.getURL() );
|
||||
con.connect();
|
||||
//System.out.println( "connected url: " + con.getURL() );
|
||||
InputStream is = null;
|
||||
if(con.getResponseCode() != 200)
|
||||
if (con.getResponseCode() != 200)
|
||||
return "";
|
||||
is = con.getInputStream();
|
||||
String urlReturn=con.getURL().toString();
|
||||
String urlReturn = con.getURL().toString();
|
||||
//System.out.println( "redirected url: " + con.getURL() );
|
||||
is.close();
|
||||
|
||||
@ -39,5 +39,4 @@ public class Redirection {
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -3,20 +3,18 @@ package net.Broken.Tools;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.Scanner;
|
||||
|
||||
|
||||
|
||||
public class ResourceLoader {
|
||||
|
||||
private Logger logger = LogManager.getLogger();
|
||||
|
||||
/**
|
||||
* Get file contents as string for resource folder
|
||||
*
|
||||
* @param fileName Requested file
|
||||
* @return File contents as string
|
||||
* @throws FileNotFoundException
|
||||
@ -28,7 +26,7 @@ public class ResourceLoader {
|
||||
//Get file from resources folder
|
||||
ClassLoader classLoader = getClass().getClassLoader();
|
||||
InputStream file = classLoader.getResourceAsStream(fileName);
|
||||
if(file == null)
|
||||
if (file == null)
|
||||
throw new FileNotFoundException();
|
||||
|
||||
try (Scanner scanner = new Scanner(file, "UTF-8")) {
|
||||
|
@ -17,22 +17,14 @@ import org.apache.logging.log4j.Logger;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class SettingsUtils {
|
||||
|
||||
private static SettingsUtils INSTANCE;
|
||||
private final Logger logger = LogManager.getLogger();
|
||||
|
||||
public static SettingsUtils getInstance() {
|
||||
return (INSTANCE == null) ? new SettingsUtils() : INSTANCE;
|
||||
}
|
||||
|
||||
private final GuildPreferenceRepository guildPreferenceRepository;
|
||||
private final UserRepository userRepository;
|
||||
|
||||
|
||||
private SettingsUtils() {
|
||||
ApplicationContext context = SpringContext.getAppContext();
|
||||
guildPreferenceRepository = (GuildPreferenceRepository) context.getBean("guildPreferenceRepository");
|
||||
@ -41,6 +33,10 @@ public class SettingsUtils {
|
||||
|
||||
}
|
||||
|
||||
public static SettingsUtils getInstance() {
|
||||
return (INSTANCE == null) ? new SettingsUtils() : INSTANCE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract all settings for displaying on webpage
|
||||
*
|
||||
|
@ -1,13 +1,13 @@
|
||||
package net.Broken.Tools;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
/**
|
||||
* Utils to render table in block code
|
||||
*/
|
||||
@ -25,6 +25,7 @@ public class TableRenderer {
|
||||
|
||||
/**
|
||||
* Set Table header(s)
|
||||
*
|
||||
* @param header Header(s) as String
|
||||
*/
|
||||
public void setHeader(Object... header) {
|
||||
@ -35,6 +36,7 @@ public class TableRenderer {
|
||||
|
||||
/**
|
||||
* Add row to table
|
||||
*
|
||||
* @param content Content(s) as string
|
||||
*/
|
||||
public void addRow(Object... content) {
|
||||
@ -46,6 +48,7 @@ public class TableRenderer {
|
||||
|
||||
/**
|
||||
* Change default empty string
|
||||
*
|
||||
* @param str
|
||||
*/
|
||||
public void setEmptyString(String str) {
|
||||
@ -72,7 +75,7 @@ public class TableRenderer {
|
||||
if (obj.size() > hIndex)
|
||||
normalized[vIndex][hIndex] = obj.get(hIndex).toString();
|
||||
else
|
||||
normalized[vIndex][hIndex] = this.empty+"s";
|
||||
normalized[vIndex][hIndex] = this.empty + "s";
|
||||
}
|
||||
vIndex++;
|
||||
}
|
||||
@ -86,7 +89,7 @@ public class TableRenderer {
|
||||
for (int hIndex = 0; hIndex < width; hIndex++)
|
||||
if (table[vIndex][hIndex].length() + padding > collums[hIndex])
|
||||
collums[hIndex] = table[vIndex][hIndex].length() + padding;
|
||||
collums[collums.length-1] -= padding;
|
||||
collums[collums.length - 1] -= padding;
|
||||
return collums;
|
||||
}
|
||||
|
||||
@ -102,7 +105,7 @@ public class TableRenderer {
|
||||
String line = IntStream.range(0, strings.length)
|
||||
.mapToObj((i) -> buildElement(strings[i], widths[i], " "))
|
||||
.collect(Collectors.joining("│ "));
|
||||
line = "│ "+ line + " │";
|
||||
line = "│ " + line + " │";
|
||||
if (header) {
|
||||
String seperator = IntStream.range(0, strings.length)
|
||||
.mapToObj((i) -> buildElement("", widths[i], "═"))
|
||||
@ -117,7 +120,7 @@ public class TableRenderer {
|
||||
String[][] table = normalizeTable();
|
||||
int[] widths = getCollumnWidths(table, 1);
|
||||
return IntStream.range(0, table.length)
|
||||
.mapToObj(i -> buildLine(table[i], widths, header != null && i==0))
|
||||
.mapToObj(i -> buildLine(table[i], widths, header != null && i == 0))
|
||||
.collect(Collectors.joining("\n"));
|
||||
}
|
||||
}
|
||||
|
@ -3,15 +3,12 @@ package net.Broken.Tools;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class TimeConvertor {
|
||||
static Logger logger = LogManager.getLogger();
|
||||
public static ArrayList<String> sToTime(long sec){
|
||||
|
||||
public static ArrayList<String> sToTime(long sec) {
|
||||
final int MINUTES_IN_AN_HOUR = 60;
|
||||
final int SECONDS_IN_A_MINUTE = 60;
|
||||
|
||||
|
@ -9,7 +9,6 @@ import org.apache.http.entity.StringEntity;
|
||||
import org.apache.http.impl.client.HttpClientBuilder;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.io.IOException;
|
||||
@ -20,19 +19,16 @@ import java.util.List;
|
||||
public class TrueRandom {
|
||||
|
||||
private static TrueRandom INSTANCE = new TrueRandom();
|
||||
private Logger logger = LogManager.getLogger();
|
||||
private String url = "https://api.random.org/json-rpc/2/invoke";
|
||||
private String apiKey = System.getenv("RANDOM_API_KEY");
|
||||
private TrueRandom() {
|
||||
}
|
||||
|
||||
public static TrueRandom getINSTANCE() {
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
private Logger logger = LogManager.getLogger();
|
||||
|
||||
private String url = "https://api.random.org/json-rpc/2/invoke";
|
||||
private String apiKey = System.getenv("RANDOM_API_KEY");
|
||||
|
||||
private TrueRandom() {
|
||||
}
|
||||
|
||||
public ArrayList<Integer> getNumbers(int min, int max) throws IOException {
|
||||
HttpClient httpClient = HttpClientBuilder.create().build();
|
||||
|
||||
@ -46,19 +42,18 @@ public class TrueRandom {
|
||||
int status = response.getStatusLine().getStatusCode();
|
||||
logger.debug("Status: " + status);
|
||||
|
||||
if(status != 200){
|
||||
if (status != 200) {
|
||||
logger.error("Request fail! Status: " + status);
|
||||
throw new IOException();
|
||||
}
|
||||
|
||||
|
||||
|
||||
InputStream responseIS = response.getEntity().getContent();
|
||||
String content = IOUtils.toString(responseIS, "UTF-8");
|
||||
logger.trace(content);
|
||||
|
||||
JSONObject json = new JSONObject(content);
|
||||
if(json.keySet().contains("error")){
|
||||
if (json.keySet().contains("error")) {
|
||||
logger.error("Request fail!");
|
||||
logger.error("Request : " + postVal);
|
||||
logger.error("Response : " + content);
|
||||
|
@ -1,4 +1,4 @@
|
||||
package net.Broken.Tools.UserManager.Exceptions;
|
||||
|
||||
public class PasswordNotMatchException extends Exception{
|
||||
public class PasswordNotMatchException extends Exception {
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package net.Broken.Tools.UserManager.Exceptions;
|
||||
|
||||
public class UnknownTokenException extends Exception{
|
||||
public class UnknownTokenException extends Exception {
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package net.Broken.Tools.UserManager.Exceptions;
|
||||
|
||||
public class UserNotFoundException extends Exception{
|
||||
public class UserNotFoundException extends Exception {
|
||||
}
|
||||
|
@ -18,21 +18,21 @@ import java.util.List;
|
||||
|
||||
public class Oauth {
|
||||
private static Oauth INSTANCE = new Oauth();
|
||||
public static Oauth getInstance(){ return INSTANCE; }
|
||||
|
||||
Logger logger = LogManager.getLogger();
|
||||
private String baseUrl = "https://discordapp.com/api";
|
||||
private String mePath = "/users/@me";
|
||||
|
||||
public static Oauth getInstance() {
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
|
||||
private JSONObject getUserId(String token){
|
||||
private JSONObject getUserId(String token) {
|
||||
StringBuffer content = new StringBuffer();
|
||||
try {
|
||||
String httpsURL = baseUrl+mePath;
|
||||
String httpsURL = baseUrl + mePath;
|
||||
URL myUrl = new URL(httpsURL);
|
||||
HttpURLConnection con = (HttpURLConnection)myUrl.openConnection();
|
||||
con.setRequestProperty("Authorization", "Bearer "+token);
|
||||
HttpURLConnection con = (HttpURLConnection) myUrl.openConnection();
|
||||
con.setRequestProperty("Authorization", "Bearer " + token);
|
||||
con.setRequestProperty("User-Agent", "DiscordBot (claptrapbot.com, 0.1)");
|
||||
con.setRequestMethod("GET");
|
||||
logger.debug("Response code: " + con.getResponseCode());
|
||||
@ -56,15 +56,15 @@ public class Oauth {
|
||||
}
|
||||
|
||||
|
||||
public UserEntity getUserEntity(String token, UserRepository userRepository, PasswordEncoder passwordEncoder){
|
||||
public UserEntity getUserEntity(String token, UserRepository userRepository, PasswordEncoder passwordEncoder) {
|
||||
JSONObject discorResponse = getUserId(token);
|
||||
List<UserEntity> userEntitys = userRepository.findByJdaId(discorResponse.getString("id"));
|
||||
if(userEntitys.size() != 0){
|
||||
if (userEntitys.size() != 0) {
|
||||
return userEntitys.get(0);
|
||||
}else{
|
||||
} else {
|
||||
User jdaUser = MainBot.jda.getUserById(discorResponse.getString("id"));
|
||||
UserEntity user;
|
||||
if( jdaUser == null)
|
||||
if (jdaUser == null)
|
||||
user = new UserEntity(discorResponse.getString("username"), discorResponse.getString("id"), passwordEncoder);
|
||||
else
|
||||
user = new UserEntity(MainBot.jda.getUserById(discorResponse.getString("id")), passwordEncoder);
|
||||
|
@ -15,17 +15,16 @@ import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import java.util.List;
|
||||
|
||||
public class PasswordResetUtils {
|
||||
private static PasswordResetUtils INSTANCE = new PasswordResetUtils();
|
||||
private Logger logger = LogManager.getLogger();
|
||||
private PasswordEncoder passwordEncoder;
|
||||
private PendingPwdResetRepository pendingPwdResetRepository;
|
||||
private UserRepository userRepository;
|
||||
|
||||
private static PasswordResetUtils INSTANCE = new PasswordResetUtils();
|
||||
|
||||
/**
|
||||
* Private default constructor
|
||||
*/
|
||||
private PasswordResetUtils(){
|
||||
private PasswordResetUtils() {
|
||||
ApplicationContext context = SpringContext.getAppContext();
|
||||
passwordEncoder = (PasswordEncoder) context.getBean("passwordEncoder");
|
||||
pendingPwdResetRepository = (PendingPwdResetRepository) context.getBean("pendingPwdResetRepository");
|
||||
@ -35,13 +34,14 @@ public class PasswordResetUtils {
|
||||
|
||||
/**
|
||||
* Singleton
|
||||
*
|
||||
* @return Unique PasswordResetUtils instance
|
||||
*/
|
||||
public static PasswordResetUtils getInstance(){
|
||||
public static PasswordResetUtils getInstance() {
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
public String resetRequest(UserEntity userEntity){
|
||||
public String resetRequest(UserEntity userEntity) {
|
||||
String token = UserUtils.getInstance().generateCheckToken();
|
||||
String encodedToken = passwordEncoder.encode(token);
|
||||
PendingPwdResetEntity entity = new PendingPwdResetEntity(userEntity, encodedToken);
|
||||
@ -51,10 +51,10 @@ public class PasswordResetUtils {
|
||||
|
||||
public void changePass(UserEntity userEntity, String token, String newPassword) throws UserNotFoundException, TokenNotMatch {
|
||||
List<PendingPwdResetEntity> dbResults = pendingPwdResetRepository.findByUserEntity(userEntity);
|
||||
if(dbResults.size() == 0)
|
||||
if (dbResults.size() == 0)
|
||||
throw new UserNotFoundException();
|
||||
PendingPwdResetEntity pendingPwdReset = dbResults.get(0);
|
||||
if(!passwordEncoder.matches(token, pendingPwdReset.getSecurityToken()))
|
||||
if (!passwordEncoder.matches(token, pendingPwdReset.getSecurityToken()))
|
||||
throw new TokenNotMatch();
|
||||
|
||||
userEntity.setPassword(passwordEncoder.encode(newPassword));
|
||||
|
@ -1,6 +1,6 @@
|
||||
package net.Broken.Tools.UserManager.Stats;
|
||||
|
||||
public class GuildStats{
|
||||
public class GuildStats {
|
||||
public String userName;
|
||||
public int rank;
|
||||
public String avatarUrl;
|
||||
|
@ -23,41 +23,43 @@ import java.util.UUID;
|
||||
|
||||
public class UserUtils {
|
||||
|
||||
private Logger logger = LogManager.getLogger();
|
||||
|
||||
private static UserUtils INSTANCE = new UserUtils();
|
||||
private Logger logger = LogManager.getLogger();
|
||||
|
||||
/**
|
||||
* Private default constructor
|
||||
*/
|
||||
private UserUtils(){}
|
||||
private UserUtils() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Singleton
|
||||
*
|
||||
* @return Unique UserUtils instance
|
||||
*/
|
||||
public static UserUtils getInstance(){
|
||||
public static UserUtils getInstance() {
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check if user exist on Guild, if exist, generate and send checkTocken, create entry on PendingUser DB
|
||||
*
|
||||
* @param pendingUserRepository Pending user DB interface
|
||||
* @param userRepository User DB interface
|
||||
* @param passwordEncoder Password encoder
|
||||
* @param userInfo Received data
|
||||
* @param userRepository User DB interface
|
||||
* @param passwordEncoder Password encoder
|
||||
* @param userInfo Received data
|
||||
* @return PendingUserEntity PK
|
||||
* @throws UserNotFoundException User not found in guild
|
||||
* @throws UserNotFoundException User not found in guild
|
||||
* @throws PasswordNotMatchException User already registered in PendingUser DB but password not match
|
||||
* @throws UserAlreadyRegistered User already registered in User DB
|
||||
* @throws UserAlreadyRegistered User already registered in User DB
|
||||
*/
|
||||
public String sendCheckToken(PendingUserRepository pendingUserRepository, UserRepository userRepository, PasswordEncoder passwordEncoder, UserInfoData userInfo) throws UserNotFoundException, PasswordNotMatchException, UserAlreadyRegistered {
|
||||
|
||||
logger.info("New registration for " + userInfo.name);
|
||||
|
||||
List<User> users = MainBot.jda.getUsersByName(userInfo.name,true);
|
||||
if(users.size() < 1)
|
||||
List<User> users = MainBot.jda.getUsersByName(userInfo.name, true);
|
||||
if (users.size() < 1)
|
||||
throw new UserNotFoundException();
|
||||
|
||||
User user = users.get(0);
|
||||
@ -67,36 +69,34 @@ public class UserUtils {
|
||||
String token = "";
|
||||
|
||||
//Preference if exist on register user
|
||||
if(userRepository.findByJdaId(user.getId()).size() > 0){
|
||||
if (userRepository.findByJdaId(user.getId()).size() > 0) {
|
||||
logger.warn("User already registered!");
|
||||
throw new UserAlreadyRegistered();
|
||||
}
|
||||
|
||||
|
||||
|
||||
//Check if exist in pading user Table
|
||||
List<PendingUserEntity> pendingUsers = pendingUserRepository.findByJdaId(user.getId());
|
||||
if(pendingUsers.size() != 0){
|
||||
if (pendingUsers.size() != 0) {
|
||||
PendingUserEntity thisUser = pendingUsers.get(0);
|
||||
if(passwordEncoder.matches(userInfo.password, thisUser.getPassword())){
|
||||
if (passwordEncoder.matches(userInfo.password, thisUser.getPassword())) {
|
||||
logger.info("Password matches");
|
||||
pendingUserEntity = thisUser;
|
||||
token = thisUser.getCheckToken();
|
||||
}else{
|
||||
} else {
|
||||
logger.warn("Password don't match!");
|
||||
throw new PasswordNotMatchException();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
logger.info("Generating check Token...");
|
||||
if(token.equals("")){
|
||||
if (token.equals("")) {
|
||||
token = generateCheckToken();
|
||||
}
|
||||
|
||||
logger.info("Token generated: " + token);
|
||||
if(pendingUserEntity == null) {
|
||||
if (pendingUserEntity == null) {
|
||||
pendingUserEntity = new PendingUserEntity(user.getName(), user.getId(), token, passwordEncoder.encode(userInfo.password));
|
||||
pendingUserEntity = pendingUserRepository.save(pendingUserEntity);
|
||||
}
|
||||
@ -108,35 +108,34 @@ public class UserUtils {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
message = message.replace("%code",token);
|
||||
message = message.replace("%code", token);
|
||||
|
||||
MessageEmbed ebM = EmbedMessageUtils.getRegister(message);
|
||||
PrivateMessage.send(user,ebM,logger);
|
||||
PrivateMessage.send(user, ebM, logger);
|
||||
return pendingUserEntity.getId().toString();
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Confirm user account
|
||||
*
|
||||
* @param pendingUserRepository Pending user DB interface
|
||||
* @param id UserPendingEntity PK to cofirm
|
||||
* @param checkToken received token
|
||||
* @param id UserPendingEntity PK to cofirm
|
||||
* @param checkToken received token
|
||||
* @return PendingUserEntity
|
||||
* @throws TokenNotMatch Given token not match
|
||||
* @throws TokenNotMatch Given token not match
|
||||
* @throws UserNotFoundException User not found in Pending user DB
|
||||
*/
|
||||
public PendingUserEntity confirmCheckToken(PendingUserRepository pendingUserRepository, int id, String checkToken ) throws TokenNotMatch, UserNotFoundException {
|
||||
public PendingUserEntity confirmCheckToken(PendingUserRepository pendingUserRepository, int id, String checkToken) throws TokenNotMatch, UserNotFoundException {
|
||||
PendingUserEntity pendingUser = pendingUserRepository.findById(id);
|
||||
if(pendingUser != null) {
|
||||
if(pendingUser.getCheckToken().equals(checkToken)){
|
||||
if (pendingUser != null) {
|
||||
if (pendingUser.getCheckToken().equals(checkToken)) {
|
||||
logger.info("Check Token match!");
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
logger.warn("Check token not match!");
|
||||
throw new TokenNotMatch();
|
||||
}
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
logger.warn("Id not Found!");
|
||||
throw new UserNotFoundException();
|
||||
}
|
||||
@ -145,27 +144,25 @@ public class UserUtils {
|
||||
|
||||
/**
|
||||
* Get user Entity
|
||||
* @param userRepository User DB interface
|
||||
*
|
||||
* @param userRepository User DB interface
|
||||
* @param passwordEncoder Password encoder
|
||||
* @param userInfoData Received data
|
||||
* @param userInfoData Received data
|
||||
* @return User Entity
|
||||
* @throws UserNotFoundException User not found in User DB
|
||||
* @throws UserNotFoundException User not found in User DB
|
||||
* @throws PasswordNotMatchException Given password not match
|
||||
*/
|
||||
public UserEntity getUser(UserRepository userRepository, PasswordEncoder passwordEncoder, UserInfoData userInfoData) throws UserNotFoundException, PasswordNotMatchException {
|
||||
List<UserEntity> users = userRepository.findByName(userInfoData.name);
|
||||
if(users.size()<1){
|
||||
if (users.size() < 1) {
|
||||
logger.warn("Login with unknown username: " + userInfoData.name);
|
||||
throw new UserNotFoundException();
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
UserEntity user = users.get(0);
|
||||
if(passwordEncoder.matches(userInfoData.password,user.getPassword())){
|
||||
if (passwordEncoder.matches(userInfoData.password, user.getPassword())) {
|
||||
logger.info("Login successful for " + user.getName());
|
||||
return user;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
logger.warn("Login fail for " + user.getName() + ", wrong password!");
|
||||
throw new PasswordNotMatchException();
|
||||
}
|
||||
@ -174,38 +171,40 @@ public class UserUtils {
|
||||
|
||||
/**
|
||||
* return token's UserEntity
|
||||
*
|
||||
* @param userRepository User DB interface
|
||||
* @param token Received token
|
||||
* @param token Received token
|
||||
* @return User Entity
|
||||
* @throws UnknownTokenException Can't find token on User DB
|
||||
*/
|
||||
public UserEntity getUserWithApiToken(UserRepository userRepository, String token) throws UnknownTokenException {
|
||||
List<UserEntity> users = userRepository.findByApiToken(token);
|
||||
if(users.size() > 0){
|
||||
if (users.size() > 0) {
|
||||
return users.get(0);
|
||||
}
|
||||
else
|
||||
} else
|
||||
throw new UnknownTokenException();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate API Token
|
||||
*
|
||||
* @return UUID String TODO Find something more secure
|
||||
*/
|
||||
public String generateApiToken(){
|
||||
public String generateApiToken() {
|
||||
return UUID.randomUUID().toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate short check token
|
||||
*
|
||||
* @return check token as string
|
||||
*/
|
||||
public String generateCheckToken(){
|
||||
public String generateCheckToken() {
|
||||
SecureRandom random = new SecureRandom();
|
||||
long longToken = Math.abs( random.nextLong() );
|
||||
String randomStr = Long.toString( longToken, 16 );
|
||||
randomStr = randomStr.substring(0,4);
|
||||
long longToken = Math.abs(random.nextLong());
|
||||
String randomStr = Long.toString(longToken, 16);
|
||||
randomStr = randomStr.substring(0, 4);
|
||||
randomStr = randomStr.toUpperCase();
|
||||
return randomStr;
|
||||
}
|
||||
|
@ -15,33 +15,31 @@ public class UserSpamUtils {
|
||||
private boolean onSpam = false;
|
||||
private List<Message> messages;
|
||||
|
||||
public int getTimeLeft(){
|
||||
return minuteur.timeLeft;
|
||||
}
|
||||
|
||||
public int getMultip()
|
||||
{
|
||||
return multip;
|
||||
}
|
||||
|
||||
public UserSpamUtils(Member user, List<Message> messages) {
|
||||
this.user = user;
|
||||
this.messages = messages;
|
||||
}
|
||||
|
||||
public int getTimeLeft() {
|
||||
return minuteur.timeLeft;
|
||||
}
|
||||
|
||||
public int getMultip() {
|
||||
return multip;
|
||||
}
|
||||
|
||||
public void setMultip(int multip) {
|
||||
this.multip = multip;
|
||||
}
|
||||
|
||||
public void setMinuteur(AntiSpam.Minuteur minuteur) {
|
||||
this.minuteur = minuteur;
|
||||
}
|
||||
|
||||
public void launchMinuteur(){
|
||||
public void launchMinuteur() {
|
||||
minuteur.start();
|
||||
}
|
||||
|
||||
public void setMultip(int multip) {
|
||||
this.multip = multip;
|
||||
}
|
||||
|
||||
public boolean isOnSpam() {
|
||||
return onSpam;
|
||||
}
|
||||
@ -54,7 +52,7 @@ public class UserSpamUtils {
|
||||
return user;
|
||||
}
|
||||
|
||||
public void addMessage(Message message){
|
||||
public void addMessage(Message message) {
|
||||
messages.add(message);
|
||||
}
|
||||
|
||||
@ -62,7 +60,7 @@ public class UserSpamUtils {
|
||||
return messages;
|
||||
}
|
||||
|
||||
public void clearAndAdd(Message message){
|
||||
public void clearAndAdd(Message message) {
|
||||
messages.clear();
|
||||
messages.add(message);
|
||||
}
|
||||
|
@ -17,7 +17,6 @@ import net.dv8tion.jda.api.entities.Message;
|
||||
import net.dv8tion.jda.api.entities.User;
|
||||
import net.dv8tion.jda.api.entities.VoiceChannel;
|
||||
import net.dv8tion.jda.api.events.interaction.SlashCommandEvent;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
@ -27,6 +26,7 @@ import java.util.List;
|
||||
|
||||
public class AudioM {
|
||||
|
||||
private static HashMap<Guild, AudioM> INSTANCES = new HashMap<>();
|
||||
/**
|
||||
* Music manager for this guild
|
||||
*/
|
||||
@ -53,7 +53,12 @@ public class AudioM {
|
||||
private Guild guild;
|
||||
private Logger logger = LogManager.getLogger();
|
||||
|
||||
private static HashMap<Guild, AudioM> INSTANCES = new HashMap<>();
|
||||
private AudioM(Guild guild) {
|
||||
this.playerManager = new DefaultAudioPlayerManager();
|
||||
AudioSourceManagers.registerRemoteSources(playerManager);
|
||||
AudioSourceManagers.registerLocalSource(playerManager);
|
||||
this.guild = guild;
|
||||
}
|
||||
|
||||
public static AudioM getInstance(Guild guild) {
|
||||
if (!INSTANCES.containsKey(guild)) {
|
||||
@ -63,14 +68,6 @@ public class AudioM {
|
||||
return INSTANCES.get(guild);
|
||||
}
|
||||
|
||||
|
||||
private AudioM(Guild guild) {
|
||||
this.playerManager = new DefaultAudioPlayerManager();
|
||||
AudioSourceManagers.registerRemoteSources(playerManager);
|
||||
AudioSourceManagers.registerLocalSource(playerManager);
|
||||
this.guild = guild;
|
||||
}
|
||||
|
||||
/**
|
||||
* Load audio track from url, connect to chanel if not connected
|
||||
*
|
||||
|
@ -1,7 +1,6 @@
|
||||
package net.Broken.audio;
|
||||
|
||||
import com.sedmelluq.discord.lavaplayer.player.AudioPlayer;
|
||||
import com.sedmelluq.discord.lavaplayer.track.playback.AudioFrame;
|
||||
import com.sedmelluq.discord.lavaplayer.track.playback.MutableAudioFrame;
|
||||
import net.dv8tion.jda.api.audio.AudioSendHandler;
|
||||
|
||||
|
@ -21,6 +21,7 @@ public class GuildMusicManager {
|
||||
|
||||
/**
|
||||
* Creates a player and a track scheduler.
|
||||
*
|
||||
* @param manager Audio player manager to use for creating the player.
|
||||
*/
|
||||
public GuildMusicManager(AudioPlayerManager manager, Guild guild) {
|
||||
|
@ -27,23 +27,14 @@ import java.util.List;
|
||||
|
||||
public class PlaylistManager {
|
||||
|
||||
private final ResponseEntity<PlaylistResponseData> TOKEN_ERROR = new ResponseEntity<>(new PlaylistResponseData("Unknown Token!\nPlease Re-connect.", "token"), HttpStatus.UNAUTHORIZED);
|
||||
|
||||
private final ResponseEntity<PlaylistResponseData> PLAYLIST_NOT_FOUND = new ResponseEntity<>(new PlaylistResponseData("Playlist not found", "playlist"), HttpStatus.NOT_FOUND);
|
||||
|
||||
private final ResponseEntity<PlaylistResponseData> TRACK_NOT_FOUND = new ResponseEntity<>(new PlaylistResponseData("Can't find media!", "track"), HttpStatus.NOT_FOUND);
|
||||
|
||||
|
||||
|
||||
private PlaylistRepository playlistRepository;
|
||||
|
||||
private TrackRepository trackRepository;
|
||||
|
||||
private UserRepository userRepository;
|
||||
|
||||
Logger logger = LogManager.getLogger();
|
||||
|
||||
private static PlaylistManager INSTANCE = new PlaylistManager();
|
||||
private final ResponseEntity<PlaylistResponseData> TOKEN_ERROR = new ResponseEntity<>(new PlaylistResponseData("Unknown Token!\nPlease Re-connect.", "token"), HttpStatus.UNAUTHORIZED);
|
||||
private final ResponseEntity<PlaylistResponseData> PLAYLIST_NOT_FOUND = new ResponseEntity<>(new PlaylistResponseData("Playlist not found", "playlist"), HttpStatus.NOT_FOUND);
|
||||
private final ResponseEntity<PlaylistResponseData> TRACK_NOT_FOUND = new ResponseEntity<>(new PlaylistResponseData("Can't find media!", "track"), HttpStatus.NOT_FOUND);
|
||||
Logger logger = LogManager.getLogger();
|
||||
private PlaylistRepository playlistRepository;
|
||||
private TrackRepository trackRepository;
|
||||
private UserRepository userRepository;
|
||||
|
||||
private PlaylistManager() {
|
||||
ApplicationContext context = SpringContext.getAppContext();
|
||||
@ -66,57 +57,52 @@ public class PlaylistManager {
|
||||
|
||||
User jdaUser = MainBot.jda.getUserById(user.getJdaId());
|
||||
|
||||
WebLoadUtils webLoadUtils = new WebLoadUtils(data, jdaUser, MainBot.jda.getGuilds().get(0) , false);
|
||||
WebLoadUtils webLoadUtils = new WebLoadUtils(data, jdaUser, MainBot.jda.getGuilds().get(0), false);
|
||||
webLoadUtils.getResponse();
|
||||
|
||||
if(webLoadUtils.userAudioTrack == null){
|
||||
if (webLoadUtils.userAudioTrack == null) {
|
||||
return TRACK_NOT_FOUND;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
TrackEntity trackEntity = new TrackEntity(webLoadUtils.userAudioTrack.getAudioTrack().getInfo(), data.pos, playlist);
|
||||
|
||||
playlist = insert(playlist, trackEntity);
|
||||
return new ResponseEntity<>(new PlaylistResponseData("Ok", playlist),HttpStatus.OK);
|
||||
return new ResponseEntity<>(new PlaylistResponseData("Ok", playlist), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
|
||||
} catch (UnknownTokenException e) {
|
||||
logger.warn("Unknown token: "+ token);
|
||||
logger.warn("Unknown token: " + token);
|
||||
return TOKEN_ERROR;
|
||||
} catch (PlaylistNotFoundException e) {
|
||||
logger.debug("Playlist not found: "+ data.playlistId);
|
||||
logger.debug("Playlist not found: " + data.playlistId);
|
||||
return PLAYLIST_NOT_FOUND;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public ResponseEntity<PlaylistResponseData> removeTrack(String token, DeleteTrackData data){
|
||||
public ResponseEntity<PlaylistResponseData> removeTrack(String token, DeleteTrackData data) {
|
||||
UserUtils userUtils = UserUtils.getInstance();
|
||||
try {
|
||||
UserEntity user = userUtils.getUserWithApiToken(userRepository, token);
|
||||
PlaylistEntity playlist = getPlaylist(data.playlistId);
|
||||
|
||||
|
||||
|
||||
TrackEntity toDelete = trackRepository.findById(data.id);
|
||||
|
||||
playlist = remove(playlist, toDelete);
|
||||
|
||||
if(playlist == null)
|
||||
{
|
||||
if (playlist == null) {
|
||||
logger.warn("Playlist: " + data.playlistId + " Track: " + data.id);
|
||||
return TRACK_NOT_FOUND;
|
||||
}
|
||||
|
||||
return new ResponseEntity<>(new PlaylistResponseData("Ok", playlist),HttpStatus.OK);
|
||||
return new ResponseEntity<>(new PlaylistResponseData("Ok", playlist), HttpStatus.OK);
|
||||
|
||||
} catch (UnknownTokenException e) {
|
||||
logger.warn("Unknown token: "+ token);
|
||||
logger.warn("Unknown token: " + token);
|
||||
return TOKEN_ERROR;
|
||||
} catch (PlaylistNotFoundException e) {
|
||||
logger.debug("Playlist not found: "+ data.playlistId);
|
||||
logger.debug("Playlist not found: " + data.playlistId);
|
||||
return PLAYLIST_NOT_FOUND;
|
||||
}
|
||||
}
|
||||
@ -128,15 +114,13 @@ public class PlaylistManager {
|
||||
PlaylistEntity playlist = getPlaylist(data.playlistId);
|
||||
|
||||
|
||||
|
||||
TrackEntity toMove = trackRepository.findById(data.id);
|
||||
|
||||
TrackEntity save = new TrackEntity(toMove);
|
||||
|
||||
playlist = remove(playlist, toMove);
|
||||
|
||||
if(playlist == null)
|
||||
{
|
||||
if (playlist == null) {
|
||||
logger.warn("Playlist: " + data.playlistId + " Track: " + data.id);
|
||||
return TRACK_NOT_FOUND;
|
||||
}
|
||||
@ -146,21 +130,20 @@ public class PlaylistManager {
|
||||
playlist = insert(playlist, save);
|
||||
|
||||
|
||||
|
||||
return new ResponseEntity<>(new PlaylistResponseData("Ok", playlist),HttpStatus.OK);
|
||||
return new ResponseEntity<>(new PlaylistResponseData("Ok", playlist), HttpStatus.OK);
|
||||
|
||||
} catch (UnknownTokenException e) {
|
||||
logger.warn("Unknown token: "+ token);
|
||||
logger.warn("Unknown token: " + token);
|
||||
return TOKEN_ERROR;
|
||||
} catch (PlaylistNotFoundException e) {
|
||||
logger.debug("Playlist not found: "+ data.playlistId);
|
||||
logger.debug("Playlist not found: " + data.playlistId);
|
||||
return PLAYLIST_NOT_FOUND;
|
||||
}
|
||||
}
|
||||
|
||||
private PlaylistEntity getPlaylist(int id) throws PlaylistNotFoundException{
|
||||
private PlaylistEntity getPlaylist(int id) throws PlaylistNotFoundException {
|
||||
PlaylistEntity playlist = playlistRepository.findById(id);
|
||||
if(playlist == null)
|
||||
if (playlist == null)
|
||||
throw new PlaylistNotFoundException();
|
||||
else
|
||||
return playlist;
|
||||
@ -168,26 +151,25 @@ public class PlaylistManager {
|
||||
}
|
||||
|
||||
|
||||
private PlaylistEntity insert(PlaylistEntity playlistEntity, TrackEntity trackEntity){
|
||||
private PlaylistEntity insert(PlaylistEntity playlistEntity, TrackEntity trackEntity) {
|
||||
List<TrackEntity> tracks = trackRepository.findDistinctByPlaylistOrderByPos(playlistEntity);
|
||||
|
||||
|
||||
boolean increase = false;
|
||||
for(TrackEntity track : tracks){
|
||||
if(track.getPos().equals(trackEntity.getPos())){
|
||||
for (TrackEntity track : tracks) {
|
||||
if (track.getPos().equals(trackEntity.getPos())) {
|
||||
logger.debug("Need re-organisation");
|
||||
increase = true;
|
||||
}
|
||||
|
||||
|
||||
if(increase){
|
||||
if (increase) {
|
||||
track.setPos(track.getPos() + 1);
|
||||
trackRepository.save(track);
|
||||
}
|
||||
}
|
||||
|
||||
if(!increase)
|
||||
{
|
||||
if (!increase) {
|
||||
trackEntity.setPos(tracks.size());
|
||||
}
|
||||
|
||||
@ -200,9 +182,9 @@ public class PlaylistManager {
|
||||
|
||||
}
|
||||
|
||||
private PlaylistEntity remove(PlaylistEntity playlistEntity, TrackEntity trackEntity){
|
||||
private PlaylistEntity remove(PlaylistEntity playlistEntity, TrackEntity trackEntity) {
|
||||
|
||||
if(trackEntity == null){
|
||||
if (trackEntity == null) {
|
||||
logger.warn("Track not found in DB!");
|
||||
return null;
|
||||
}
|
||||
@ -210,14 +192,14 @@ public class PlaylistManager {
|
||||
List<TrackEntity> tracks = trackRepository.findDistinctByPlaylistOrderByPos(playlistEntity);
|
||||
|
||||
int toDeleteIndex = tracks.indexOf(trackEntity);
|
||||
logger.debug("To delete index: " + toDeleteIndex);
|
||||
if(toDeleteIndex == -1){
|
||||
logger.debug("To delete index: " + toDeleteIndex);
|
||||
if (toDeleteIndex == -1) {
|
||||
logger.warn("Track not found in playlist");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
for(int i = toDeleteIndex + 1; i< tracks.size(); i++){
|
||||
for (int i = toDeleteIndex + 1; i < tracks.size(); i++) {
|
||||
tracks.get(i).setPos(tracks.get(i).getPos() - 1);
|
||||
trackRepository.save(tracks.get(i));
|
||||
}
|
||||
|
@ -205,12 +205,12 @@ public class TrackScheduler extends AudioEventAdapter {
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isAutoFlow() {
|
||||
return autoFlow;
|
||||
}
|
||||
|
||||
public void setAutoFlow(boolean autoFlow) {
|
||||
this.autoFlow = autoFlow;
|
||||
needAutoPlay();
|
||||
}
|
||||
|
||||
public boolean isAutoFlow() {
|
||||
return autoFlow;
|
||||
}
|
||||
}
|
||||
|
@ -6,7 +6,7 @@ import net.dv8tion.jda.api.entities.User;
|
||||
/**
|
||||
* Container that link AudioTrack to who submit it (User)
|
||||
*/
|
||||
public class UserAudioTrack{
|
||||
public class UserAudioTrack {
|
||||
private User user;
|
||||
private AudioTrack audioTrack;
|
||||
|
||||
|
@ -18,17 +18,18 @@ import org.springframework.http.ResponseEntity;
|
||||
* Interface between WebApi and Music bot for submitting track
|
||||
*/
|
||||
public class WebLoadUtils {
|
||||
public UserAudioTrack userAudioTrack;
|
||||
private ResponseEntity<CommandResponseData> response;
|
||||
private Logger logger = LogManager.getLogger();
|
||||
public UserAudioTrack userAudioTrack;
|
||||
|
||||
/**
|
||||
* Submit a track or playlist to Music bot
|
||||
* @param data Received data from API
|
||||
* @param user User who submit the track
|
||||
*
|
||||
* @param data Received data from API
|
||||
* @param user User who submit the track
|
||||
* @param guild
|
||||
*/
|
||||
public WebLoadUtils(CommandPostData data, User user, Guild guild, boolean submit){
|
||||
public WebLoadUtils(CommandPostData data, User user, Guild guild, boolean submit) {
|
||||
AudioPlayerManager playerM = AudioM.getInstance(guild).getPlayerManager();
|
||||
|
||||
try {
|
||||
@ -40,7 +41,7 @@ public class WebLoadUtils {
|
||||
logger.info("Single Track detected from web!");
|
||||
|
||||
userAudioTrack = new UserAudioTrack(user, track);
|
||||
if(submit)
|
||||
if (submit)
|
||||
audioM.play(audioM.getGuild(), audioM.getPlayedChanel(), audioM.getGuildMusicManager(), userAudioTrack, data.onHead);
|
||||
response = new ResponseEntity<>(new CommandResponseData("ADD", "Loaded"), HttpStatus.OK);
|
||||
|
||||
@ -49,13 +50,11 @@ public class WebLoadUtils {
|
||||
@Override
|
||||
public void playlistLoaded(AudioPlaylist playlist) {
|
||||
|
||||
if(submit)
|
||||
{
|
||||
if (submit) {
|
||||
logger.info("Playlist detected from web! Limit: " + data.playlistLimit);
|
||||
audioM.playListLoader(playlist, data.playlistLimit, user, data.onHead);
|
||||
response = new ResponseEntity<>(new CommandResponseData("ADD", "Loaded"), HttpStatus.OK);
|
||||
}else
|
||||
{
|
||||
} else {
|
||||
response = new ResponseEntity<>(new CommandResponseData("ADD", "Adding a list on saved playlist is currently not supported"), HttpStatus.NOT_ACCEPTABLE);
|
||||
|
||||
}
|
||||
@ -64,7 +63,7 @@ public class WebLoadUtils {
|
||||
|
||||
@Override
|
||||
public void noMatches() {
|
||||
logger.warn("Cant find media ! (web) url: "+ data.url);
|
||||
logger.warn("Cant find media ! (web) url: " + data.url);
|
||||
response = new ResponseEntity<>(new CommandResponseData("ADD", "Can't find media!"), HttpStatus.NOT_FOUND);
|
||||
|
||||
}
|
||||
@ -76,7 +75,7 @@ public class WebLoadUtils {
|
||||
|
||||
}
|
||||
});
|
||||
while(response == null)
|
||||
while (response == null)
|
||||
Thread.sleep(10);
|
||||
|
||||
} catch (InterruptedException nullMusicManager) {
|
||||
@ -86,10 +85,11 @@ public class WebLoadUtils {
|
||||
|
||||
/**
|
||||
* Wait for the end of submit process and return ResponseEntity
|
||||
*
|
||||
* @return HTTP Response
|
||||
*/
|
||||
public ResponseEntity<CommandResponseData> getResponse(){
|
||||
while(response == null) {
|
||||
public ResponseEntity<CommandResponseData> getResponse() {
|
||||
while (response == null) {
|
||||
try {
|
||||
Thread.sleep(10);
|
||||
} catch (InterruptedException e) {
|
||||
|
@ -10,8 +10,8 @@ public class SearchResult {
|
||||
public String imageUrl;
|
||||
public String duration;
|
||||
|
||||
public SearchResult(com.google.api.services.youtube.model.SearchResult result, String duration){
|
||||
if(result.getId().getVideoId() == null)
|
||||
public SearchResult(com.google.api.services.youtube.model.SearchResult result, String duration) {
|
||||
if (result.getId().getVideoId() == null)
|
||||
id = result.getId().getPlaylistId();
|
||||
else
|
||||
id = result.getId().getVideoId();
|
||||
|
@ -2,7 +2,6 @@ package net.Broken.audio.Youtube;
|
||||
|
||||
import com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack;
|
||||
import com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeSearchProvider;
|
||||
import com.sedmelluq.discord.lavaplayer.track.AudioItem;
|
||||
import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
|
||||
import com.sedmelluq.discord.lavaplayer.track.BasicAudioPlaylist;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
@ -21,9 +20,8 @@ import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class YoutubeSearchRework {
|
||||
|
||||
private Logger logger = LogManager.getLogger();
|
||||
|
||||
private static YoutubeSearchRework INSTANCE;
|
||||
private Logger logger = LogManager.getLogger();
|
||||
|
||||
public static YoutubeSearchRework getInstance() {
|
||||
if (INSTANCE == null) {
|
||||
|
@ -3,8 +3,8 @@ package net.Broken.audio.Youtube;
|
||||
import com.google.api.client.http.javanet.NetHttpTransport;
|
||||
import com.google.api.client.json.gson.GsonFactory;
|
||||
import com.google.api.services.youtube.YouTube;
|
||||
import com.google.api.services.youtube.model.*;
|
||||
import com.google.api.services.youtube.model.SearchResult;
|
||||
import com.google.api.services.youtube.model.*;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
@ -13,15 +13,12 @@ import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
|
||||
import static org.hibernate.engine.jdbc.Size.LobMultiplier.M;
|
||||
|
||||
public class YoutubeTools {
|
||||
|
||||
private static YoutubeTools INSTANCE;
|
||||
private Logger logger = LogManager.getLogger();
|
||||
private String apiKey = System.getenv("GOOGLE_API_KEY");
|
||||
|
||||
private static YoutubeTools INSTANCE;
|
||||
|
||||
private YoutubeTools() {
|
||||
|
||||
}
|
||||
@ -49,8 +46,6 @@ public class YoutubeTools {
|
||||
YouTube youtube = getYoutubeService();
|
||||
|
||||
|
||||
|
||||
|
||||
YouTube.Search.List searchListRelatedVideosRequest = youtube.search().list(Collections.singletonList("snippet"));
|
||||
searchListRelatedVideosRequest.setRelatedToVideoId(videoId);
|
||||
searchListRelatedVideosRequest.setType(Collections.singletonList("video"));
|
||||
@ -61,7 +56,7 @@ public class YoutubeTools {
|
||||
|
||||
for (SearchResult item : response.getItems()) {
|
||||
if (!history.contains(item.getId().getVideoId())) {
|
||||
if(item.getSnippet() != null)
|
||||
if (item.getSnippet() != null)
|
||||
return item.getId().getVideoId();
|
||||
} else
|
||||
logger.debug("ID already on history");
|
||||
@ -76,7 +71,7 @@ public class YoutubeTools {
|
||||
public ArrayList<net.Broken.audio.Youtube.SearchResult> search(String query, long max, boolean playlist) throws IOException {
|
||||
YouTube youTube = getYoutubeService();
|
||||
YouTube.Search.List searchList = youTube.search().list(Collections.singletonList("snippet"));
|
||||
if(playlist)
|
||||
if (playlist)
|
||||
searchList.setType(Collections.singletonList("playlist"));
|
||||
else
|
||||
searchList.setType(Collections.singletonList("video"));
|
||||
@ -91,8 +86,8 @@ public class YoutubeTools {
|
||||
StringBuilder idString = new StringBuilder();
|
||||
|
||||
|
||||
if(playlist){
|
||||
for(SearchResult item : response.getItems()){
|
||||
if (playlist) {
|
||||
for (SearchResult item : response.getItems()) {
|
||||
idString.append(item.getId().getPlaylistId()).append(",");
|
||||
}
|
||||
HashMap<String, Playlist> playlistHashMap = new HashMap<>();
|
||||
@ -100,19 +95,18 @@ public class YoutubeTools {
|
||||
list.setId(Collections.singletonList(idString.toString()));
|
||||
list.setKey(apiKey);
|
||||
PlaylistListResponse playlistResponse = list.execute();
|
||||
for( Playlist item : playlistResponse.getItems()){
|
||||
for (Playlist item : playlistResponse.getItems()) {
|
||||
playlistHashMap.put(item.getId(), item);
|
||||
}
|
||||
ArrayList<net.Broken.audio.Youtube.SearchResult> finalResult = new ArrayList<>();
|
||||
for(SearchResult item : response.getItems()){
|
||||
for (SearchResult item : response.getItems()) {
|
||||
logger.trace(item.getSnippet().getTitle());
|
||||
finalResult.add(new net.Broken.audio.Youtube.SearchResult(item, playlistHashMap.get(item.getId().getPlaylistId()).getContentDetails().getItemCount().toString()+ " Video(s)"));
|
||||
finalResult.add(new net.Broken.audio.Youtube.SearchResult(item, playlistHashMap.get(item.getId().getPlaylistId()).getContentDetails().getItemCount().toString() + " Video(s)"));
|
||||
|
||||
}
|
||||
return finalResult;
|
||||
}
|
||||
else{
|
||||
for(SearchResult item : response.getItems()){
|
||||
} else {
|
||||
for (SearchResult item : response.getItems()) {
|
||||
idString.append(item.getId().getVideoId()).append(",");
|
||||
}
|
||||
HashMap<String, Video> videoHashMap = new HashMap<>();
|
||||
@ -120,11 +114,11 @@ public class YoutubeTools {
|
||||
video.setId(Collections.singletonList(idString.toString()));
|
||||
video.setKey(apiKey);
|
||||
VideoListResponse videoResponse = video.execute();
|
||||
for(Video item : videoResponse.getItems()){
|
||||
for (Video item : videoResponse.getItems()) {
|
||||
videoHashMap.put(item.getId(), item);
|
||||
}
|
||||
ArrayList<net.Broken.audio.Youtube.SearchResult> finalResult = new ArrayList<>();
|
||||
for(SearchResult item : response.getItems()){
|
||||
for (SearchResult item : response.getItems()) {
|
||||
logger.trace(item.getSnippet().getTitle());
|
||||
finalResult.add(new net.Broken.audio.Youtube.SearchResult(item, videoHashMap.get(item.getId().getVideoId()).getContentDetails().getDuration()));
|
||||
}
|
||||
@ -132,50 +126,40 @@ public class YoutubeTools {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
public String ytTimeToString(String time){
|
||||
public String ytTimeToString(String time) {
|
||||
int hours;
|
||||
int minutes;
|
||||
int seconds;
|
||||
if(time.equals("PT0S"))
|
||||
if (time.equals("PT0S"))
|
||||
return ":red_circle: LIVE";
|
||||
|
||||
time = time.replace("PT","");
|
||||
if(time.contains("H")) {
|
||||
time = time.replace("PT", "");
|
||||
if (time.contains("H")) {
|
||||
|
||||
String matched = time.substring(0, time.indexOf("H")+1);
|
||||
time = time.replace(matched,"");
|
||||
String matched = time.substring(0, time.indexOf("H") + 1);
|
||||
time = time.replace(matched, "");
|
||||
hours = Integer.parseInt(matched.replace("H", ""));
|
||||
}
|
||||
else
|
||||
} else
|
||||
hours = 0;
|
||||
logger.trace(time);
|
||||
|
||||
if(time.contains("M")) {
|
||||
if (time.contains("M")) {
|
||||
|
||||
String matched = time.substring(0, time.indexOf("M")+1);
|
||||
time = time.replace(matched,"");
|
||||
String matched = time.substring(0, time.indexOf("M") + 1);
|
||||
time = time.replace(matched, "");
|
||||
minutes = Integer.parseInt(matched.replace("M", ""));
|
||||
}
|
||||
else
|
||||
} else
|
||||
minutes = 0;
|
||||
logger.trace(time);
|
||||
if(time.contains("S")) {
|
||||
if (time.contains("S")) {
|
||||
|
||||
String matched = time.substring(0, time.indexOf("S")+1);
|
||||
time = time.replace(matched,"");
|
||||
String matched = time.substring(0, time.indexOf("S") + 1);
|
||||
time = time.replace(matched, "");
|
||||
seconds = Integer.parseInt(matched.replace("S", ""));
|
||||
}
|
||||
else
|
||||
} else
|
||||
seconds = 0;
|
||||
logger.trace(time);
|
||||
|
||||
|
@ -3,8 +3,8 @@ package net.Broken.webView;
|
||||
import net.Broken.MainBot;
|
||||
|
||||
public class CheckPage {
|
||||
public static String getPageIfReady(String page){
|
||||
if(MainBot.ready)
|
||||
public static String getPageIfReady(String page) {
|
||||
if (MainBot.ready)
|
||||
return page;
|
||||
else
|
||||
return "loading";
|
||||
|
@ -22,7 +22,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.ResponseStatus;
|
||||
|
||||
|
||||
import javax.servlet.http.Cookie;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
@ -46,12 +45,32 @@ public class GeneralWebView {
|
||||
this.userRepository = userRepository;
|
||||
}
|
||||
|
||||
public static Model addGuildAndRedirect(Model model, String token, String guildId, User user) {
|
||||
List<Guild> mutualGuilds = user.getMutualGuilds();
|
||||
Integer lastCount = MainBot.mutualGuildCount.get(user.getId());
|
||||
if (lastCount == null || lastCount != mutualGuilds.size()) {
|
||||
LogManager.getLogger().debug("Guild miss match, re-cache users...");
|
||||
CacheTools.loadAllGuildMembers();
|
||||
mutualGuilds = user.getMutualGuilds();
|
||||
MainBot.mutualGuildCount.put(user.getId(), mutualGuilds.size());
|
||||
}
|
||||
|
||||
@ResponseStatus(HttpStatus.FORBIDDEN)
|
||||
public class ForbiddenException extends RuntimeException {
|
||||
Guild guild = MainBot.jda.getGuildById(guildId);
|
||||
if (guild != null) {
|
||||
model.addAttribute("guild_name", guild.getName());
|
||||
model.addAttribute("guild_id", guild.getId());
|
||||
model.addAttribute("guild_icon", guild.getIconUrl() == null ? "https://discordapp.com/assets/dd4dbc0016779df1378e7812eabaa04d.png" : guild.getIconUrl());
|
||||
model.addAttribute("mutual_guilds", mutualGuilds);
|
||||
model.addAttribute("isAdmin", SettingsUtils.getInstance().checkPermission(token, guildId));
|
||||
} else {
|
||||
model.addAttribute("guild_name", "");
|
||||
model.addAttribute("guild_icon", "");
|
||||
}
|
||||
|
||||
model.addAttribute("redirect_url", System.getenv("OAUTH_URL"));
|
||||
return model;
|
||||
}
|
||||
|
||||
|
||||
@RequestMapping("/")
|
||||
public String music(Model model, HttpServletResponse response, HttpServletRequest request, @CookieValue(value = "guild", defaultValue = "1") String guildId, @CookieValue(value = "token", defaultValue = "") String token) {
|
||||
if (token.equals("")) {
|
||||
@ -180,31 +199,8 @@ public class GeneralWebView {
|
||||
|
||||
}
|
||||
|
||||
|
||||
public static Model addGuildAndRedirect(Model model, String token, String guildId, User user) {
|
||||
List<Guild> mutualGuilds = user.getMutualGuilds();
|
||||
Integer lastCount = MainBot.mutualGuildCount.get(user.getId());
|
||||
if (lastCount == null || lastCount != mutualGuilds.size()) {
|
||||
LogManager.getLogger().debug("Guild miss match, re-cache users...");
|
||||
CacheTools.loadAllGuildMembers();
|
||||
mutualGuilds = user.getMutualGuilds();
|
||||
MainBot.mutualGuildCount.put(user.getId(), mutualGuilds.size());
|
||||
}
|
||||
|
||||
Guild guild = MainBot.jda.getGuildById(guildId);
|
||||
if (guild != null) {
|
||||
model.addAttribute("guild_name", guild.getName());
|
||||
model.addAttribute("guild_id", guild.getId());
|
||||
model.addAttribute("guild_icon", guild.getIconUrl() == null ? "https://discordapp.com/assets/dd4dbc0016779df1378e7812eabaa04d.png" : guild.getIconUrl());
|
||||
model.addAttribute("mutual_guilds", mutualGuilds);
|
||||
model.addAttribute("isAdmin", SettingsUtils.getInstance().checkPermission(token, guildId));
|
||||
} else {
|
||||
model.addAttribute("guild_name", "");
|
||||
model.addAttribute("guild_icon", "");
|
||||
}
|
||||
|
||||
model.addAttribute("redirect_url", System.getenv("OAUTH_URL"));
|
||||
return model;
|
||||
@ResponseStatus(HttpStatus.FORBIDDEN)
|
||||
public class ForbiddenException extends RuntimeException {
|
||||
}
|
||||
|
||||
|
||||
|
@ -37,17 +37,16 @@ public class MusicWebView {
|
||||
}
|
||||
|
||||
|
||||
|
||||
@RequestMapping("/music")
|
||||
public String music(Model model, HttpServletResponse response, HttpServletRequest request, @CookieValue(value = "guild", defaultValue = "1") String guildId, @CookieValue(value = "token", defaultValue = "") String token){
|
||||
if(token.equals("")){
|
||||
public String music(Model model, HttpServletResponse response, HttpServletRequest request, @CookieValue(value = "guild", defaultValue = "1") String guildId, @CookieValue(value = "token", defaultValue = "") String token) {
|
||||
if (token.equals("")) {
|
||||
model.addAttribute("redirect_url", System.getenv("OAUTH_URL"));
|
||||
return "login";
|
||||
}
|
||||
try {
|
||||
UserEntity userE = userUtils.getUserWithApiToken(userRepository, token);
|
||||
User user = MainBot.jda.getUserById(userE.getJdaId());
|
||||
if(user == null)
|
||||
if (user == null)
|
||||
return "redirect:/";
|
||||
GeneralWebView.addGuildAndRedirect(model, token, guildId, user);
|
||||
return CheckPage.getPageIfReady("music");
|
||||
@ -64,7 +63,7 @@ public class MusicWebView {
|
||||
model.addAttribute("redirect_url", System.getenv("OAUTH_URL"));
|
||||
return "login";
|
||||
|
||||
} catch (NumberFormatException e){
|
||||
} catch (NumberFormatException e) {
|
||||
logger.debug("Unknown guild, flush cookies");
|
||||
Cookie cookie = new Cookie("guild", null); // Not necessary, but saves bandwidth.
|
||||
cookie.setPath("/");
|
||||
@ -75,6 +74,5 @@ public class MusicWebView {
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -25,6 +25,7 @@ public class MvcApplication implements WebMvcConfigurer {
|
||||
.resourceChain(true)
|
||||
.addResolver(versionResourceResolver);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ResourceUrlEncodingFilter resourceUrlEncodingFilter() {
|
||||
return new ResourceUrlEncodingFilter();
|
||||
|
@ -16,9 +16,9 @@ import javax.servlet.http.HttpServletRequest;
|
||||
public class MyErrorController implements ErrorController {
|
||||
|
||||
@RequestMapping("/error")
|
||||
public String handleError(HttpServletRequest request, Model model, @CookieValue(value = "guild", defaultValue = "1") String guildId){
|
||||
public String handleError(HttpServletRequest request, Model model, @CookieValue(value = "guild", defaultValue = "1") String guildId) {
|
||||
Guild guild = MainBot.jda.getGuildById(guildId);
|
||||
if(guild != null)
|
||||
if (guild != null)
|
||||
model.addAttribute("guild_name", guild.getName());
|
||||
else
|
||||
model.addAttribute("guild_name", "");
|
||||
@ -27,13 +27,11 @@ public class MyErrorController implements ErrorController {
|
||||
if (status != null) {
|
||||
Integer statusCode = Integer.valueOf(status.toString());
|
||||
|
||||
if(statusCode == HttpStatus.NOT_FOUND.value()) {
|
||||
if (statusCode == HttpStatus.NOT_FOUND.value()) {
|
||||
return "error/404";
|
||||
}
|
||||
else if(statusCode == HttpStatus.FORBIDDEN.value()){
|
||||
} else if (statusCode == HttpStatus.FORBIDDEN.value()) {
|
||||
return "error/403";
|
||||
}
|
||||
else if(statusCode == HttpStatus.INTERNAL_SERVER_ERROR.value()){
|
||||
} else if (statusCode == HttpStatus.INTERNAL_SERVER_ERROR.value()) {
|
||||
return "error/500";
|
||||
}
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user