From a63ee6d908d8278a168760a8d46ed42bc79eec91 Mon Sep 17 00:00:00 2001 From: Mysaa Date: Sat, 10 Jul 2021 20:31:09 +0200 Subject: [PATCH] =?UTF-8?q?Cr=C3=A9ation=20d'un=20espace=20de=20travail=20?= =?UTF-8?q?fonctionnel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bien que le plugin ait été désactivé en grande partie. --- .gitignore | 3 + build.gradle | 56 ++++++++++++++++ settings.gradle | 10 +++ ...meManager.java => JuliAnathemeManager.java} | 65 ++++++++++++++----- .../julianatheme/anathemes/HelloAnatheme.java | 9 ++- .../anathemes/StopTalkingAnatheme.java | 7 +- 6 files changed, 129 insertions(+), 21 deletions(-) create mode 100644 build.gradle create mode 100644 settings.gradle rename src/com/bernard/julianatheme/{JuliAnathèmeManager.java => JuliAnathemeManager.java} (86%) diff --git a/.gitignore b/.gitignore index 572533e..6343c78 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,6 @@ .settings .project bin/ +/.gradle/ +/dependencies/ +/build/ diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..d637bfe --- /dev/null +++ b/build.gradle @@ -0,0 +1,56 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * This generated file contains a sample Java Library project to get you started. + * For more details take a look at the Java Libraries chapter in the Gradle + * user guide available at https://docs.gradle.org/4.8.1/userguide/java_library_plugin.html + */ + + + +plugins { + // Apply the java-library plugin to add support for Java Library + id 'java-library' +} + +repositories { + mavenCentral() + + maven { + name 'm2-dv8tion' + url 'https://m2.dv8tion.net/releases' + } + flatDir { + dirs '../../Juliabot.git/build/libs' + dirs '../Jul\'Anathème.git/build/libs' + } +} + +sourceSets { + main { + java { + srcDir 'src' + } + } +} + +task copyDependencies(type: Copy) { + group 'build' + from configurations.default + into 'dependencies' +} + + +dependencies { + implementation 'net.dv8tion:JDA:4.3.0_293' + + implementation 'com.thedeanda:lorem:2.1' + + implementation group: 'org.postgresql', name: 'postgresql', version: '42.2.22' + + implementation group: 'org.reflections', name: 'reflections', version: '0.9.11' + + implementation name:'JuliabotAPI' + //implementation name:'JuLSoundbox' + +} diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..726206f --- /dev/null +++ b/settings.gradle @@ -0,0 +1,10 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * The settings file is used to specify which projects to include in your build. + * + * Detailed information about configuring a multi-project build in Gradle can be found + * in the user guide at https://docs.gradle.org/4.8.1/userguide/multi_project_builds.html + */ + +rootProject.name = "Jul'Anathème" diff --git a/src/com/bernard/julianatheme/JuliAnathèmeManager.java b/src/com/bernard/julianatheme/JuliAnathemeManager.java similarity index 86% rename from src/com/bernard/julianatheme/JuliAnathèmeManager.java rename to src/com/bernard/julianatheme/JuliAnathemeManager.java index 72e02ad..87a9a84 100644 --- a/src/com/bernard/julianatheme/JuliAnathèmeManager.java +++ b/src/com/bernard/julianatheme/JuliAnathemeManager.java @@ -12,9 +12,11 @@ import java.util.Set; import java.util.regex.Pattern; import org.reflections.Reflections; +import org.reflections.scanners.SubTypesScanner; import com.bernard.juliabot.api.Command; import com.bernard.juliabot.api.Discord; +import com.bernard.juliabot.api.DiscordCCommande; import com.bernard.juliabot.api.JuLIAddon; import com.bernard.julianatheme.JuLIAnatheme.InvalidAnathemDescriptionException; @@ -28,7 +30,7 @@ import net.dv8tion.jda.api.entities.User; import net.dv8tion.jda.api.events.Event; @JuLIAddon(name = "julianatheme",devs="Mysaa",version = "20w33a") -public class JuliAnathèmeManager { +public class JuliAnathemeManager { Map,Set> anathemes = new HashMap<>(); @@ -38,17 +40,16 @@ public class JuliAnathèmeManager { public static final String anathemeNamePattern = "^[a-zA-Z0-9_-]*$"; - static { - //Load everybody - Reflections r = new Reflections(""); - for (Class clazz : r.getSubTypesOf(JuLIAnatheme.class)) { - try { - registerAnatheme(clazz.getField("NAME").get(null).toString(), clazz); - } catch (Exception e) { - registerAnatheme(clazz.getSimpleName(), clazz); - } + public JuliAnathemeManager() { + System.out.println("Instanciation du manager"); + try { + Class.forName("com.bernard.julianatheme.anathemes.StopTalkingAnatheme"); + } catch (ClassNotFoundException e) { + System.err.println("La classe n'a pas été trouvée."); + e.printStackTrace(); } - + //registerAnatheme(StopTalkingAnatheme.NAME, StopTalkingAnatheme.class); + reloadAnathemes(); // La commande ne sert à rien } @Discord(description="Lance les évents de toutes les malédictions chagées") @@ -68,8 +69,34 @@ public class JuliAnathèmeManager { } } + public void reloadAnathemes() { + // La commande n'utilise en réalité pas les paramètres. + reloadAnathemes(null); + } + + @Command(admin=true,name="reloadAnathemes",description="Recharge la liste des anathèmes") + public void reloadAnathemes(DiscordCCommande commande) { +// registeredAnathemes.clear(); +// registeredEvents.clear(); +// anathemes.clear(); + + Reflections r = new Reflections("",new SubTypesScanner(false)); + Set> classes = r.getSubTypesOf(JuLIAnatheme.class); + for (Class clazz : classes) { + try { + registerAnatheme(clazz.getField("NAME").get(null).toString(), clazz); + } catch (Exception e) { + registerAnatheme(clazz.getSimpleName(), clazz); + } + } + System.out.println("Anathèmes enregistrés: "+registeredAnathemes.keySet()); + } + @Command(admin=true,name="maudir",description="Maudit une personne. Usage 'maudir <@pseudo> ") - public void maudir(Message m,Guild g) { + public void maudir(DiscordCCommande commande) { + + Message m = commande.getMessage(); + Guild g = m.getGuild(); if(m.getMentionedUsers().size() < 1) { notifyUser("Il faut notifier l'utilisateur qu vous voulez maudir", m.getAuthor(), m.getChannel()); @@ -138,7 +165,10 @@ public class JuliAnathèmeManager { } @Command(admin=true,name="oracle",description="Demande à l'oracle, quelles sont les maledictions planant sur une personne. Usage: 'oracle <@pseudo>") - public void oracle(Message m,Guild g) { + public void oracle(DiscordCCommande commande) { + + Message m = commande.getMessage(); + Guild g = m.getGuild(); if(m.getMentionedUsers().size() < 1) { notifyUser("Il faut notifier l'utilisateur qu vous voulez 'oracler'", m.getAuthor(), m.getChannel()); @@ -171,8 +201,12 @@ public class JuliAnathèmeManager { m.getChannel().sendMessage(dumper.build()).complete(); } - @Command(admin=true,name="exorciser",description="Excorcise une personne (lui enlève sa malediction). Usage 'exoriser <@pseudo> ") - public void exorciser(Message m,Guild g) { + @Command(admin=true,name="exorciser",description="Excorcise une personne (lui enlève sa malediction). Usage 'exorciser <@pseudo> ") + public void exorciser(DiscordCCommande commande) { + Message m = commande.getMessage(); + Guild g = m.getGuild(); + + if(m.getMentionedUsers().size() < 1) { notifyUser("Il faut notifier l'utilisateur qu vous voulez exorciser", m.getAuthor(), m.getChannel()); return; @@ -208,6 +242,7 @@ public class JuliAnathèmeManager { notifyUser("Ohhhh "+cible.getNickname()+" a été purifié !!! Son anathème "+type+" a disparu !",m.getAuthor(), m.getChannel()); } + public static void registerAnatheme(String name, Class clazz) { System.out.println("Je vais registerer "+name); if(clazz == null) { diff --git a/src/com/bernard/julianatheme/anathemes/HelloAnatheme.java b/src/com/bernard/julianatheme/anathemes/HelloAnatheme.java index ae324a2..7eec5f5 100644 --- a/src/com/bernard/julianatheme/anathemes/HelloAnatheme.java +++ b/src/com/bernard/julianatheme/anathemes/HelloAnatheme.java @@ -6,7 +6,6 @@ import java.io.IOException; import com.bernard.julianatheme.EventReciever; import com.bernard.julianatheme.JuLIAnatheme; -import com.bernard.julsoundbox.JulSoundBox; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Member; @@ -19,7 +18,7 @@ public class HelloAnatheme extends JuLIAnatheme { public HelloAnatheme(Member cible, Member source) { super(cible, source); } - + String soundName; @Override @@ -35,7 +34,7 @@ public class HelloAnatheme extends JuLIAnatheme { @Override public void initialize(String extra, Guild g) throws InvalidAnathemDescriptionException { soundName = extra; - if(JulSoundBox.checkUserSoundPermission(source.getUser(), extra)) + //if(JulSoundBox.checkUserSoundPermission(source.getUser(), extra)) throw new InvalidAnathemDescriptionException("hello", "Le son "+extra+" n'est pas jouable (ou vous n'y avez pas accès) ... désolé"); } @@ -46,7 +45,7 @@ public class HelloAnatheme extends JuLIAnatheme { @EventReciever public void play(GuildVoiceJoinEvent event) { - JulSoundBox.sneakPlay(soundName, event.getChannelJoined()); + //JulSoundBox.sneakPlay(soundName, event.getChannelJoined()); } - + } \ No newline at end of file diff --git a/src/com/bernard/julianatheme/anathemes/StopTalkingAnatheme.java b/src/com/bernard/julianatheme/anathemes/StopTalkingAnatheme.java index e3a8d39..7c3b7aa 100644 --- a/src/com/bernard/julianatheme/anathemes/StopTalkingAnatheme.java +++ b/src/com/bernard/julianatheme/anathemes/StopTalkingAnatheme.java @@ -8,6 +8,7 @@ import java.util.List; import com.bernard.julianatheme.EventReciever; import com.bernard.julianatheme.JuLIAnatheme; +import com.bernard.julianatheme.JuliAnathemeManager; import net.dv8tion.jda.api.MessageBuilder; import net.dv8tion.jda.api.entities.Guild; @@ -19,6 +20,10 @@ public class StopTalkingAnatheme extends JuLIAnatheme { public static final String NAME = "stopTalking"; + static { + JuliAnathemeManager.registerAnatheme(NAME, StopTalkingAnatheme.class); + } + long[] channelsIDs; @@ -64,7 +69,7 @@ public class StopTalkingAnatheme extends JuLIAnatheme { @Override public String dump() { - return "Sur les caneaux " + Arrays.toString(channelsIDs); + return "Sur les canaux " + Arrays.toString(channelsIDs); } @EventReciever