(Terminé)
Refonte complète du système de jukebox et de menu.
This commit is contained in:
5
.idea/jarRepositories.xml
generated
5
.idea/jarRepositories.xml
generated
@@ -21,5 +21,10 @@
|
|||||||
<option name="name" value="BintrayJCenter" />
|
<option name="name" value="BintrayJCenter" />
|
||||||
<option name="url" value="https://jcenter.bintray.com/" />
|
<option name="url" value="https://jcenter.bintray.com/" />
|
||||||
</remote-repository>
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="maven" />
|
||||||
|
<option name="name" value="maven" />
|
||||||
|
<option name="url" value="https://m2.dv8tion.net/releases" />
|
||||||
|
</remote-repository>
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
14
build.gradle
14
build.gradle
@@ -14,13 +14,15 @@ plugins {
|
|||||||
id 'application'
|
id 'application'
|
||||||
|
|
||||||
// Shadow plugin to make uberJars
|
// Shadow plugin to make uberJars
|
||||||
id 'com.github.johnrengelman.shadow' version '6.1.0'
|
id 'com.github.johnrengelman.shadow' version '7.1.0'
|
||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
// Use jcenter for resolving dependencies.
|
mavenCentral()
|
||||||
// You can declare any Maven/Ivy/file repository here.
|
|
||||||
jcenter()
|
maven {
|
||||||
|
url 'https://m2.dv8tion.net/releases'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
@@ -34,8 +36,8 @@ dependencies {
|
|||||||
|
|
||||||
implementation 'ws.schild:jave-all-deps:2.7.3'
|
implementation 'ws.schild:jave-all-deps:2.7.3'
|
||||||
implementation 'org.apache.commons:commons-lang3:3.0'
|
implementation 'org.apache.commons:commons-lang3:3.0'
|
||||||
implementation 'com.sedmelluq:lavaplayer:1.3.67'
|
implementation 'com.sedmelluq:lavaplayer:1.3.75'
|
||||||
implementation 'net.dv8tion:JDA:4.2.0_227'
|
implementation 'net.dv8tion:JDA:4.2.1_253'
|
||||||
|
|
||||||
// Use JUnit test framework
|
// Use JUnit test framework
|
||||||
testImplementation 'junit:junit:4.12'
|
testImplementation 'junit:junit:4.12'
|
||||||
|
|||||||
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,5 +1,5 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|||||||
@@ -28,9 +28,15 @@ public class JdrBot {
|
|||||||
public static void main(String args[]) {
|
public static void main(String args[]) {
|
||||||
try {
|
try {
|
||||||
basedate = LocalDateTime.now();
|
basedate = LocalDateTime.now();
|
||||||
jda = JDABuilder.createDefault("MTY5OTMzMzgxMDMzOTE4NDY0.DerlJg.m7BdNv_OMHlYa-f4T3O0jJ9LldM")
|
/*jda = JDABuilder.createDefault("MTY5OTMzMzgxMDMzOTE4NDY0.DerlJg.m7BdNv_OMHlYa-f4T3O0jJ9LldM")
|
||||||
.setActivity(Activity.playing("un jeu de rôle"))
|
.setActivity(Activity.playing("un jeu de rôle"))
|
||||||
.enableCache(CacheFlag.VOICE_STATE).build();
|
.enableCache(CacheFlag.VOICE_STATE).build();
|
||||||
|
*/
|
||||||
|
|
||||||
|
jda = JDABuilder.createDefault("ODk0ODc0Nzk5Nzg3MTE0NTA2.YVwXGg.JfIsIIQHIXbVsjoGGv2SfejnT9s")
|
||||||
|
.setActivity(Activity.playing("un jeu de rôle"))
|
||||||
|
.enableCache(CacheFlag.VOICE_STATE).build();
|
||||||
|
|
||||||
jda.awaitReady();
|
jda.awaitReady();
|
||||||
commandList = new ArrayList<Command>();
|
commandList = new ArrayList<Command>();
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ public class JdrBotListener extends ListenerAdapter {
|
|||||||
|
|
||||||
if (isACommand(e.getMessage().getContentRaw(), "yay"))
|
if (isACommand(e.getMessage().getContentRaw(), "yay"))
|
||||||
{
|
{
|
||||||
e.getChannel().sendMessage("Bien joue! Tu as su surpasse toutes les epreuves pour en arriver la! Je suis fier de toi!").queue();
|
e.getChannel().sendMessage("Bien joue! Tu as su surpasse toutes les epreuves pour en arriver la! Woo !").queue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
18
src/main/java/fr/Skydust/JdrBot/cmds/AddSong.java
Normal file
18
src/main/java/fr/Skydust/JdrBot/cmds/AddSong.java
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
package fr.Skydust.JdrBot.cmds;
|
||||||
|
|
||||||
|
import fr.Skydust.JdrBot.stock.Command;
|
||||||
|
import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
|
||||||
|
|
||||||
|
public class AddSong extends Command {
|
||||||
|
public AddSong() {
|
||||||
|
SetName("addsong");
|
||||||
|
SetUsage("[Chemin] [URL]");
|
||||||
|
SetDesc("(Admin) Ajoute une musique au jukebox");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void call(GuildMessageReceivedEvent e) {
|
||||||
|
|
||||||
|
//TODO: Chemin sans le chemin initial
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -12,7 +12,7 @@ import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
|
|||||||
import net.dv8tion.jda.api.events.user.update.UserUpdateOnlineStatusEvent;
|
import net.dv8tion.jda.api.events.user.update.UserUpdateOnlineStatusEvent;
|
||||||
|
|
||||||
public class LastTimeOnline extends Command {
|
public class LastTimeOnline extends Command {
|
||||||
static HashMap<String, LocalDateTime> AllUsers = new HashMap<>();
|
static HashMap<Long, LocalDateTime> AllUsers = new HashMap<>();
|
||||||
|
|
||||||
public LastTimeOnline() {
|
public LastTimeOnline() {
|
||||||
SetName("lasttimeonline|lto");
|
SetName("lasttimeonline|lto");
|
||||||
@@ -27,12 +27,14 @@ public class LastTimeOnline extends Command {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
User u = e.getMessage().getMentionedUsers().get(0);
|
User u = e.getMessage().getMentionedUsers().get(0);
|
||||||
if(AllUsers.get(u.getId()) == null) {
|
if(AllUsers.get(u.getIdLong()) == null) {
|
||||||
e.getChannel().sendMessage(u.getAsMention()+" n'a pas change d'etat entre le demarrage du bot et maintenant").queue();
|
e.getChannel().sendMessage(u.getAsMention()+" n'a pas change d'etat entre le demarrage du bot et maintenant").queue();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
OnlineStatus status = e.getGuild().getMember(u).getOnlineStatus();
|
OnlineStatus status = e.getGuild().getMember(u).getOnlineStatus();
|
||||||
LocalDateTime UserDate = AllUsers.get(e.getMessage().getMentionedUsers().get(0).getId());
|
LocalDateTime UserDate = AllUsers.get(e.getMessage().getMentionedUsers().get(0).getIdLong());
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
if(status.equals(OnlineStatus.INVISIBLE) || status.equals(OnlineStatus.OFFLINE)) {
|
if(status.equals(OnlineStatus.INVISIBLE) || status.equals(OnlineStatus.OFFLINE)) {
|
||||||
sb.append(u.getAsMention()+" est en hors-ligne depuis ");
|
sb.append(u.getAsMention()+" est en hors-ligne depuis ");
|
||||||
@@ -40,6 +42,7 @@ public class LastTimeOnline extends Command {
|
|||||||
sb.append(u.getAsMention()+" est en ligne depuis ");
|
sb.append(u.getAsMention()+" est en ligne depuis ");
|
||||||
}
|
}
|
||||||
sb.append(Utils.formatDurationSmooth(Duration.between(UserDate, LocalDateTime.now())));
|
sb.append(Utils.formatDurationSmooth(Duration.between(UserDate, LocalDateTime.now())));
|
||||||
|
|
||||||
e.getChannel().sendMessage(sb.toString()).queue();
|
e.getChannel().sendMessage(sb.toString()).queue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,10 +50,10 @@ public class LastTimeOnline extends Command {
|
|||||||
public static void onUserUpdateOnlineStatus(UserUpdateOnlineStatusEvent e) {
|
public static void onUserUpdateOnlineStatus(UserUpdateOnlineStatusEvent e) {
|
||||||
if(e.getOldOnlineStatus().equals(OnlineStatus.OFFLINE)) {
|
if(e.getOldOnlineStatus().equals(OnlineStatus.OFFLINE)) {
|
||||||
//Si il est en ligne
|
//Si il est en ligne
|
||||||
AllUsers.put(e.getUser().getId(), LocalDateTime.now());
|
AllUsers.put(e.getUser().getIdLong(), LocalDateTime.now());
|
||||||
} else if(!e.getOldOnlineStatus().equals(OnlineStatus.ONLINE) && !e.getOldOnlineStatus().equals(OnlineStatus.DO_NOT_DISTURB) && !e.getOldOnlineStatus().equals(OnlineStatus.IDLE)) {
|
} else if(!e.getOldOnlineStatus().equals(OnlineStatus.ONLINE) && !e.getOldOnlineStatus().equals(OnlineStatus.DO_NOT_DISTURB) && !e.getOldOnlineStatus().equals(OnlineStatus.IDLE)) {
|
||||||
//Si il est hors-ligne
|
//Si il est hors-ligne
|
||||||
AllUsers.put(e.getUser().getId(), LocalDateTime.now());
|
AllUsers.put(e.getUser().getIdLong(), LocalDateTime.now());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ public class PlayMusic extends Command {
|
|||||||
private static final AudioPlayerManager playerManager = new DefaultAudioPlayerManager();
|
private static final AudioPlayerManager playerManager = new DefaultAudioPlayerManager();
|
||||||
static Map<Long, GuildMusicManager> musicManagers;
|
static Map<Long, GuildMusicManager> musicManagers;
|
||||||
|
|
||||||
public static Map<Long, JukeboxSystem> jukeboxSystems;
|
public static HashMap<Long, JukeboxSystem> jukeboxSystems = new HashMap<>();
|
||||||
|
|
||||||
public PlayMusic() {
|
public PlayMusic() {
|
||||||
musicManagers = new HashMap<>();
|
musicManagers = new HashMap<>();
|
||||||
@@ -46,9 +46,17 @@ public class PlayMusic extends Command {
|
|||||||
e.getChannel().sendMessage("/!\\ Le lecteur audio est deja present ici ! Pour l'arreter, tapez \"!stopmusic\" !").queue();
|
e.getChannel().sendMessage("/!\\ Le lecteur audio est deja present ici ! Pour l'arreter, tapez \"!stopmusic\" !").queue();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!e.getMember().getVoiceState().inVoiceChannel()) {
|
||||||
|
e.getChannel().sendMessage("/!\\ Vous devez être dans un channel vocal").queue();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
//TODO: WHILE LOADING, CAN CALL AGAIN
|
//TODO: WHILE LOADING, CAN CALL AGAIN
|
||||||
|
|
||||||
// Creates a message to be edited by the jukebox system
|
// Creates a message to be edited by the jukebox system
|
||||||
e.getChannel().sendMessage("Loading...").queue(msg -> jukeboxSystems.put(e.getGuild().getIdLong(), new JukeboxSystem(msg)));
|
e.getGuild().getAudioManager().openAudioConnection(e.getMember().getVoiceState().getChannel());
|
||||||
|
e.getChannel().sendMessage("Chargement...").queue(msg -> jukeboxSystems.put(e.getGuild().getIdLong(), new JukeboxSystem(msg)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static JukeboxSystem getGuildsJukebox(Guild guild) {
|
public static JukeboxSystem getGuildsJukebox(Guild guild) {
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ public class StopMusic extends Command {
|
|||||||
JukeboxSystem jukebox = PlayMusic.getGuildsJukebox(g);
|
JukeboxSystem jukebox = PlayMusic.getGuildsJukebox(g);
|
||||||
|
|
||||||
if(jukebox != null) {
|
if(jukebox != null) {
|
||||||
|
System.out.println("JukeboxMessageIDStop:"+jukebox.jukeboxMessage.getId());
|
||||||
jukebox.jukeboxMessage.delete().queue();
|
jukebox.jukeboxMessage.delete().queue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import fr.Skydust.JdrBot.cmds.playmusic.StopMusic;
|
|||||||
import fr.Skydust.JdrBot.menu.Menu;
|
import fr.Skydust.JdrBot.menu.Menu;
|
||||||
import fr.Skydust.JdrBot.menu.MenuSystem;
|
import fr.Skydust.JdrBot.menu.MenuSystem;
|
||||||
import fr.Skydust.JdrBot.utils.Utils;
|
import fr.Skydust.JdrBot.utils.Utils;
|
||||||
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
import net.dv8tion.jda.api.entities.Message;
|
import net.dv8tion.jda.api.entities.Message;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@@ -17,7 +18,7 @@ public class JukeboxSystem {
|
|||||||
|
|
||||||
// Dyn
|
// Dyn
|
||||||
// Keeping track of the song currently played to update menus accordingly
|
// Keeping track of the song currently played to update menus accordingly
|
||||||
// Example : "Songs/Spell Temps/Temps ville 2"
|
// Example : "Songs/Spell Temps/2"
|
||||||
public String songPlayedPath = "";
|
public String songPlayedPath = "";
|
||||||
|
|
||||||
private final HashMap<String, Menu> linkedPath = new HashMap<>();
|
private final HashMap<String, Menu> linkedPath = new HashMap<>();
|
||||||
@@ -40,7 +41,11 @@ public class JukeboxSystem {
|
|||||||
List<String> items = new ArrayList<>();
|
List<String> items = new ArrayList<>();
|
||||||
File[] files = new File(currentFolder).listFiles();
|
File[] files = new File(currentFolder).listFiles();
|
||||||
|
|
||||||
if(files.length != 0) {
|
// If it isn't the root folder, place the return button
|
||||||
|
if(!isInRootFolder()) {
|
||||||
|
items.add(Utils.ReturnUnicode + " Retour");
|
||||||
|
}
|
||||||
|
if(files != null) {
|
||||||
// Sort files by alphabetical order with directories first
|
// Sort files by alphabetical order with directories first
|
||||||
Arrays.sort(files, sortItemsComp);
|
Arrays.sort(files, sortItemsComp);
|
||||||
|
|
||||||
@@ -51,11 +56,10 @@ public class JukeboxSystem {
|
|||||||
* 2️⃣ 🔉 Played Song
|
* 2️⃣ 🔉 Played Song
|
||||||
*/
|
*/
|
||||||
for (File file : files) {
|
for (File file : files) {
|
||||||
|
if(!file.getName().startsWith(".")) { // Ignore Unix hidden files
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
sb.append(Utils.CharsUnicodeArray[items.size()]).append(" ");
|
if (file.isDirectory())
|
||||||
|
|
||||||
if(file.isDirectory())
|
|
||||||
sb.append(Utils.FolderUnicode);
|
sb.append(Utils.FolderUnicode);
|
||||||
else
|
else
|
||||||
sb.append(Utils.SongUnicode);
|
sb.append(Utils.SongUnicode);
|
||||||
@@ -65,16 +69,15 @@ public class JukeboxSystem {
|
|||||||
|
|
||||||
items.add(sb.toString());
|
items.add(sb.toString());
|
||||||
}
|
}
|
||||||
// If it isn't the root folder, place the return button
|
|
||||||
if(!currentFolder.equals(initialFolder)) {
|
|
||||||
items.add(Utils.ReturnUnicode + Utils.CharsUnicodeArray[items.size()] + " Retour");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
menu = linkedPath.put(currentFolder,
|
menu = new Menu("Music Player 4000", "Choisis la musique :", musicPlayerThumbnail, items.toArray(new String[0])) {
|
||||||
new Menu("Music Player 4000", "Choisis la musique :", musicPlayerThumbnail, (String[]) items.toArray()) {
|
|
||||||
@Override
|
@Override
|
||||||
public void onButtonClicked(Message msg, int itemId) {
|
public void onButtonClicked(Member member, Message msg, int itemId) {
|
||||||
|
if(itemId >= items.length)
|
||||||
|
return;
|
||||||
|
|
||||||
String str = items[itemId];
|
String str = items[itemId];
|
||||||
|
|
||||||
// Loop back to open a subfolder
|
// Loop back to open a subfolder
|
||||||
@@ -84,9 +87,10 @@ public class JukeboxSystem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Return button
|
// Return button
|
||||||
if (itemId == items.length - 1) {
|
if (!isInRootFolder() && itemId == 0) {
|
||||||
// Back one menu
|
// Back one menu
|
||||||
String subFolder = currentFolder.substring(0, currentFolder.lastIndexOf("/"));
|
String subFolder = currentFolder.substring(0, currentFolder.lastIndexOf("/"));
|
||||||
|
currentFolder = subFolder;
|
||||||
MenuSystem.changeMenu(msg, linkedPath.get(subFolder));
|
MenuSystem.changeMenu(msg, linkedPath.get(subFolder));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -95,45 +99,54 @@ public class JukeboxSystem {
|
|||||||
if (str.contains(Utils.SongUnicode)) {
|
if (str.contains(Utils.SongUnicode)) {
|
||||||
if(!songPlayedPath.equals("")) {
|
if(!songPlayedPath.equals("")) {
|
||||||
String folder = songPlayedPath.substring(0, songPlayedPath.lastIndexOf("/"));
|
String folder = songPlayedPath.substring(0, songPlayedPath.lastIndexOf("/"));
|
||||||
int previousSongItemID = Integer.parseInt(songPlayedPath.substring(songPlayedPath.lastIndexOf("/")));
|
int previousSongItemID = Integer.parseInt(songPlayedPath.substring(songPlayedPath.lastIndexOf("/")+1));
|
||||||
|
|
||||||
Menu previousMenu = linkedPath.get(folder);
|
Menu previousMenu = linkedPath.get(folder);
|
||||||
previousMenu.items[previousSongItemID] = previousMenu.items[previousSongItemID].replace(Utils.PlayUnicode, Utils.SongUnicode);
|
previousMenu.items[previousSongItemID] = previousMenu.items[previousSongItemID].replace(Utils.PlayUnicode, Utils.SongUnicode);
|
||||||
}
|
}
|
||||||
items[itemId] = items[itemId].replace(Utils.SongUnicode, Utils.PlayUnicode);
|
items[itemId] = items[itemId].replace(Utils.SongUnicode, Utils.PlayUnicode);
|
||||||
|
|
||||||
String songPath = currentFolder + getFileNameFromItem(str) + ".mp3";
|
String songPath = currentFolder + "/" + getFileNameFromItem(str) + ".mp3";
|
||||||
PlayMusic.loadAndPlay(jukeboxMessage.getTextChannel(), songPath, true, true);
|
|
||||||
|
|
||||||
// Format: Songs/Folder/Folder/2
|
PlayMusic.loadAndPlay(msg.getTextChannel(), songPath, true, true);
|
||||||
|
|
||||||
|
// Format: Songs/Folder/SubFolder/2
|
||||||
songPlayedPath = currentFolder + "/" + itemId;
|
songPlayedPath = currentFolder + "/" + itemId;
|
||||||
|
|
||||||
// Reload the current menu
|
|
||||||
MenuSystem.changeMenu(msg, this);
|
|
||||||
} else {
|
} else {
|
||||||
//If already playing, stop the song
|
//If already playing, stop the song
|
||||||
items[itemId] = items[itemId].replace(Utils.PlayUnicode, Utils.SongUnicode);
|
items[itemId] = items[itemId].replace(Utils.PlayUnicode, Utils.SongUnicode);
|
||||||
StopMusic.stopMusic(jukeboxMessage.getGuild());
|
PlayMusic.getGuildAudioPlayer(member.getGuild()).scheduler.stop();
|
||||||
}
|
}
|
||||||
|
// Reload the current menu
|
||||||
|
MenuSystem.reloadMenu(msg);
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
linkedPath.put(currentFolder, menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reget the message to update it
|
||||||
|
Menu finalMenu = menu;
|
||||||
|
jukeboxMessage.getTextChannel().retrieveMessageById(jukeboxMessage.getIdLong()).queue(msg -> {
|
||||||
|
MenuSystem.changeMenu(msg, finalMenu);
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
MenuSystem.changeMenu(jukeboxMessage, menu);
|
|
||||||
|
public boolean isInRootFolder() {
|
||||||
|
return currentFolder.equals(initialFolder);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getFileNameFromItem(String item) {
|
public static String getFileNameFromItem(String item) {
|
||||||
return item.split(" ", 3)[2];
|
return item.split(" ", 2)[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
private final Comparator sortItemsComp = (o1, o2) -> {
|
private final Comparator<File> sortItemsComp = (o1, o2) -> {
|
||||||
File f1 = (File) o1;
|
if (o1.isDirectory() && !o2.isDirectory())
|
||||||
File f2 = (File) o2;
|
|
||||||
if (f1.isDirectory() && !f2.isDirectory())
|
|
||||||
{
|
{
|
||||||
// Directory before non-directory
|
// Directory before non-directory
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
else if (!f1.isDirectory() && f2.isDirectory())
|
else if (!o1.isDirectory() && o2.isDirectory())
|
||||||
{
|
{
|
||||||
// Non-directory after directory
|
// Non-directory after directory
|
||||||
return 1;
|
return 1;
|
||||||
@@ -142,7 +155,7 @@ public class JukeboxSystem {
|
|||||||
{
|
{
|
||||||
// Alphabetic order otherwise
|
// Alphabetic order otherwise
|
||||||
//return o1.compareTo(o2);
|
//return o1.compareTo(o2);
|
||||||
return f1.compareTo(f2);
|
return o1.compareTo(o2);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,11 +3,10 @@ package fr.Skydust.JdrBot.menu;
|
|||||||
import fr.Skydust.JdrBot.utils.Utils;
|
import fr.Skydust.JdrBot.utils.Utils;
|
||||||
import net.dv8tion.jda.api.EmbedBuilder;
|
import net.dv8tion.jda.api.EmbedBuilder;
|
||||||
import net.dv8tion.jda.api.MessageBuilder;
|
import net.dv8tion.jda.api.MessageBuilder;
|
||||||
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
import net.dv8tion.jda.api.entities.Message;
|
import net.dv8tion.jda.api.entities.Message;
|
||||||
import net.dv8tion.jda.api.entities.TextChannel;
|
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.event.ActionEvent;
|
|
||||||
|
|
||||||
public class Menu {
|
public class Menu {
|
||||||
public String thumbnail;
|
public String thumbnail;
|
||||||
@@ -23,9 +22,7 @@ public class Menu {
|
|||||||
this.items = items;
|
this.items = items;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onButtonClicked(Message msg, int itemId) {
|
public void onButtonClicked(Member member, Message msg, int itemId) { }
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Builds the menu message */
|
/** Builds the menu message */
|
||||||
public Message makeMessage() {
|
public Message makeMessage() {
|
||||||
@@ -33,7 +30,7 @@ public class Menu {
|
|||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (String s : items) {
|
for (String s : items) {
|
||||||
str.append(Utils.CharsUnicodeArray[i] +":"+ s +"\n");
|
str.append(Utils.CharsUnicodeArray[i] +" "+ s +"\n");
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,6 +45,4 @@ public class Menu {
|
|||||||
.build())
|
.build())
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
public class MenuSystem {
|
public class MenuSystem {
|
||||||
private static HashMap<Message, Menu> menuHash = new HashMap<>();
|
private static final HashMap<Message, Menu> menuHash = new HashMap<>();
|
||||||
|
|
||||||
/** Action Listening */
|
/** Action Listening */
|
||||||
public static void onMessageReactionAdd(MessageReactionAddEvent e) {
|
public static void onMessageReactionAdd(MessageReactionAddEvent e) {
|
||||||
@@ -37,23 +37,29 @@ public class MenuSystem {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
menu.onButtonClicked(msg, emoteId);
|
menu.onButtonClicked(e.getMember(), msg, emoteId);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Create a new menu message and add it the the specified channel */
|
/** Reload the message with its menu */
|
||||||
public static void setupMenuWithMessage(TextChannel channel, Menu menu) {
|
public static void reloadMenu(Message currentMessage) {
|
||||||
channel.sendMessage(menu.makeMessage()).queue(msg ->
|
Menu newMenu = menuHash.get(currentMessage);
|
||||||
{
|
if(newMenu == null) {
|
||||||
addReactions(msg, menu);
|
System.out.println("Error: No menu on this message");
|
||||||
menuHash.put(msg, menu);
|
return;
|
||||||
});
|
}
|
||||||
|
currentMessage.editMessage(newMenu.makeMessage()).queue();
|
||||||
|
updateReactions(currentMessage, newMenu);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Adds missing reactions */
|
public static void updateReactions(Message msg, Menu menu) {
|
||||||
public static void addReactions(Message msg, Menu menu) {
|
// Removes excess reactions
|
||||||
|
for (int y = menu.items.length; y < msg.getReactions().size(); y++) {
|
||||||
|
msg.getReactions().get(y).removeReaction().queue();
|
||||||
|
}
|
||||||
|
// Adds missing reactions
|
||||||
for (int i = msg.getReactions().size(); i < menu.items.length; i++) {
|
for (int i = msg.getReactions().size(); i < menu.items.length; i++) {
|
||||||
msg.addReaction(Utils.CharsUnicodeArray[i]).queue();
|
msg.addReaction(Utils.CharsUnicodeArray[i]).queue();
|
||||||
}
|
}
|
||||||
@@ -68,12 +74,7 @@ public class MenuSystem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
currentMessage.editMessage(newMenu.makeMessage()).queue();
|
currentMessage.editMessage(newMenu.makeMessage()).queue();
|
||||||
|
updateReactions(currentMessage, newMenu);
|
||||||
// Remove excess reactions
|
|
||||||
for (int y = newMenu.items.length; y < currentMessage.getReactions().size(); y++) {
|
|
||||||
currentMessage.getReactions().get(y).removeReaction().queue();
|
|
||||||
}
|
|
||||||
addReactions(currentMessage, newMenu);
|
|
||||||
menuHash.put(currentMessage, newMenu);
|
menuHash.put(currentMessage, newMenu);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ public class Utils {
|
|||||||
public static final String PlayUnicode = "\uD83D\uDD09";
|
public static final String PlayUnicode = "\uD83D\uDD09";
|
||||||
public static final String SongUnicode = "\uD83C\uDFB5";
|
public static final String SongUnicode = "\uD83C\uDFB5";
|
||||||
public static final String FolderUnicode = "\uD83D\uDCC1";
|
public static final String FolderUnicode = "\uD83D\uDCC1";
|
||||||
public static final String ReturnUnicode = "\u21A9";
|
public static final String ReturnUnicode = "\uD83D\uDCC2";
|
||||||
|
|
||||||
public static final String ProgressBarForeground = "\uD83D\uDFE9";
|
public static final String ProgressBarForeground = "\uD83D\uDFE9";
|
||||||
public static final String ProgressBarBackground = "\u2B1C";
|
public static final String ProgressBarBackground = "\u2B1C";
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
Manifest-Version: 1.0
|
Manifest-Version: 1.0
|
||||||
Main-Class: fr.Skydust.JdrBot.JdrBot;
|
Main-Class: fr.Skydust.JdrBot.JdrBot
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user