diff --git a/src/main/java/net/Broken/Commands/ChannelsReview.java b/src/main/java/net/Broken/Commands/ChannelsReview.java index 090f2ae..da6b51a 100644 --- a/src/main/java/net/Broken/Commands/ChannelsReview.java +++ b/src/main/java/net/Broken/Commands/ChannelsReview.java @@ -10,7 +10,11 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.omg.CosNaming.NamingContextExtPackage.StringNameHelper; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.time.format.DateTimeFormatter; +import java.util.Date; import java.util.HashMap; import java.util.Locale; @@ -19,6 +23,57 @@ public class ChannelsReview implements Commande { @Override 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){ + try { + SendBackBefore(format.parse(args[0]), event, format ); + } catch (ParseException e) { + logger.warn("Can't parse date : " + e.getMessage()); + } + } + else{ + SendBack(event); + } + } + + + private void SendBackBefore(Date beforeDate,MessageReceivedEvent event,DateFormat format ){ + HashMap result = new HashMap<>(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy").withLocale(Locale.ENGLISH); + int charCtl = 0; + for (TextChannel textChannel : event.getGuild().getTextChannels()) { + if (textChannel.hasLatestMessage()) { + String lastMessageId = textChannel.getLatestMessageId(); + try { + Message lastMessage = textChannel.retrieveMessageById(lastMessageId).complete(); + 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(); + result.put(textChannel.getName(), date); + } + } catch (RuntimeException | ParseException e) { + logger.warn("Can't find message with id: " + lastMessageId); + result.put(textChannel.getName(), "ERROR"); + charCtl += textChannel.getName().length() + 5; + } + + } else { + result.put(textChannel.getName(), "No message or access denied."); + charCtl += textChannel.getName().length() + 30; + } + if (charCtl > 3000) { + event.getTextChannel().sendMessage(EmbedMessageUtils.getLastMessageFromTextChannel(result)).complete(); + result = new HashMap<>(); + charCtl = 0; + } + } + if (charCtl != 0) + event.getTextChannel().sendMessage(EmbedMessageUtils.getLastMessageFromTextChannel(result)).queue(); + } + + private void SendBack(MessageReceivedEvent event){ HashMap result = new HashMap<>(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd MMMM yyyy").withLocale(Locale.ENGLISH); int charCtl = 0; @@ -38,8 +93,6 @@ public class ChannelsReview implements Commande { charCtl += textChannel.getName().length() + 5; } - - } else { result.put(textChannel.getName(), "No message or access denied."); charCtl += textChannel.getName().length() + 30; diff --git a/src/main/resources/Help/ChannelsReview/en/main.md b/src/main/resources/Help/ChannelsReview/en/main.md index 45ec863..8c9f5d9 100644 --- a/src/main/resources/Help/ChannelsReview/en/main.md +++ b/src/main/resources/Help/ChannelsReview/en/main.md @@ -1,2 +1,5 @@ This command allow you to see which text channel is used by -returning the date from the last message sent in every text channel. \ No newline at end of file +returning the date from the last message sent in every text channel. + +You can add a date in the format "day.month.year" to return channels +that don't have new message since this date. \ No newline at end of file diff --git a/src/main/resources/Help/ChannelsReview/fr/main.md b/src/main/resources/Help/ChannelsReview/fr/main.md index e06d5e9..5bfae8b 100644 --- a/src/main/resources/Help/ChannelsReview/fr/main.md +++ b/src/main/resources/Help/ChannelsReview/fr/main.md @@ -1,3 +1,6 @@ Cette commande permet de verifier quels channels textes ne sont pas utilisés en remontant la date du dernier message envoyé -dans tout les channels. \ No newline at end of file +dans tout les channels. + +Vous pouvez ajouter une date au format "jour.mois.année" pour remonter les channels +qui n'ont pas eu de message depuis avant cette date. \ No newline at end of file