diff --git a/.gitignore b/.gitignore index a213d79..83d916e 100644 --- a/.gitignore +++ b/.gitignore @@ -195,4 +195,6 @@ gradle-app.setting rsc/* !rsc/Ordnerstruktur.txt !rsc/tts.py -!rsc/sauceConfig.json \ No newline at end of file +!rsc/sauceConfig.json +!rsc/greetings.txt +!rsc/byebyes.txt \ No newline at end of file diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/listeners/CommandListener.java b/app/src/main/java/de/yannicpunktdee/yoshibot/listeners/CommandListener.java index cade680..3efb5b2 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/listeners/CommandListener.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/listeners/CommandListener.java @@ -1,11 +1,21 @@ package de.yannicpunktdee.yoshibot.listeners; import de.yannicpunktdee.yoshibot.command.YoshiCommandContext; +import de.yannicpunktdee.yoshibot.command.commands.PlayCommand; +import de.yannicpunktdee.yoshibot.command.commands.SayCommand; +import de.yannicpunktdee.yoshibot.utils.Logger; import de.yannicpunktdee.yoshibot.utils.Resources; import de.yannicpunktdee.yoshibot.main.YoshiBot; import net.dv8tion.jda.api.entities.ChannelType; +import net.dv8tion.jda.api.entities.VoiceChannel; +import net.dv8tion.jda.api.events.guild.member.GuildMemberJoinEvent; +import net.dv8tion.jda.api.events.guild.member.GuildMemberLeaveEvent; +import net.dv8tion.jda.api.events.guild.member.GuildMemberRemoveEvent; +import net.dv8tion.jda.api.events.guild.voice.GuildVoiceJoinEvent; +import net.dv8tion.jda.api.events.guild.voice.GuildVoiceLeaveEvent; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; +import org.jetbrains.annotations.NotNull; import java.util.Arrays; @@ -39,5 +49,24 @@ public class CommandListener extends ListenerAdapter { YoshiCommandContext context = new YoshiCommandContext(raw, event); if (!context.getState().equals(YoshiCommandContext.State.NO_COMMAND)) YoshiBot.executeCommand(context); } - + + @Override + public void onGuildVoiceJoin(@NotNull GuildVoiceJoinEvent event) { + super.onGuildVoiceJoin(event); + + System.out.println(Resources.getRandomGreeting(event.getMember().getNickname())); + + /*PlayCommand.play( + SayCommand.buildTTSAudio(), + event.getMember().getVoiceState().getChannel());*/ + } + + @Override + public void onGuildVoiceLeave(@NotNull GuildVoiceLeaveEvent event) { + super.onGuildVoiceLeave(event); + + PlayCommand.play( + SayCommand.buildTTSAudio(Resources.getRandomByebye(event.getMember().getNickname())), + event.getMember().getVoiceState().getChannel()); + } } diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/utils/Resources.java b/app/src/main/java/de/yannicpunktdee/yoshibot/utils/Resources.java index 267a10d..9ba0300 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/utils/Resources.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/utils/Resources.java @@ -9,6 +9,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.file.Files; +import java.nio.file.Paths; import java.util.*; import java.util.stream.StreamSupport; @@ -19,6 +20,12 @@ public final class Resources { private static Properties propertiesFile; private static String jda_builder_string; + + private static final boolean default_greetings_and_byebyes_on = true; + @Getter + private static boolean greetings_and_byebyes_on = default_greetings_and_byebyes_on; + private static List greetings; + private static List byebyes; private static final String default_audio_source_directory = "rsc/audio/"; private static String audio_source_directory = default_audio_source_directory; @@ -68,12 +75,11 @@ public final class Resources { sauceConfigPath = propertiesFile.getProperty("path_to_sauce_config"); boolean isOk = initJdaBuilderString(); + if (isOk) isOk = initGreetingsAndByebyes(); if (isOk) isOk = initChannelRestrict(); if (isOk) isOk = initAudio(); initTagFilter(); - - if (isOk) Logger.log("Die Konfigurationen wurden erfolgreich geladen.", Type.INFO); else Logger.log("Die Konfiguration konnte nicht geladen werden", Type.ERROR); @@ -92,6 +98,27 @@ public final class Resources { public static String getJdaBuilderString() { return jda_builder_string; } + + private static boolean initGreetingsAndByebyes(){ + if(propertiesFile.containsKey("greetings_and_byebyes_on")) + greetings_and_byebyes_on = propertiesFile.getProperty("greetings_and_byebyes_on").equals("true"); + if(!greetings_and_byebyes_on) return true; + try { + greetings = Files.readAllLines(Paths.get("rsc/greetings.txt")); + byebyes = Files.readAllLines(Paths.get("rsc/byebyes.txt")); + } catch (IOException e) { + return false; + } + return true; + } + public static String getRandomGreeting(String name){ + if(!greetings_and_byebyes_on) return null; + return greetings.get((new Random()).nextInt(greetings.size()) - 1).replace("#", name); + } + public static String getRandomByebye(String name){ + if(!greetings_and_byebyes_on) return null; + return byebyes.get(new Random().nextInt(byebyes.size()) - 1).replace("#", name); + } private static void initTagFilter() { diff --git a/rsc/byebyes.txt b/rsc/byebyes.txt new file mode 100644 index 0000000..786b07e --- /dev/null +++ b/rsc/byebyes.txt @@ -0,0 +1,12 @@ +Ja verpiss dich doch #. +Und da gehter schon der Sack #. +Sieh zu dass du Land gewinnst #. +Hau ab # hier will dich eh keiner. +Endlich ist # weg. +Bye bye #. +Tschö #. +Gut dass # jetzt weg ist. Der ging mir schon die ganze Zeit auf die Nüsse. +Leute ich glaub # ist ne Runde kacken. +Geh kacken #. +# ist weg. Lasst ma lästern. +Machs jut #. \ No newline at end of file diff --git a/rsc/greetings.txt b/rsc/greetings.txt new file mode 100644 index 0000000..c7774d6 --- /dev/null +++ b/rsc/greetings.txt @@ -0,0 +1,14 @@ +Sei gegrüßt Genosse #. +Wunderschönen juten Tach #. +Uwu # ist uns beigetreten. +Gelobt sei #. +OMG # ist da. +Wurde aber auch Zeit #. +Hurra hurra # ist da. +# ist gekommen um uns zu erleuchten. +# was ist deine Weisheit? +Ach hallo #. +Och nö nicht # schon wieder. +Och Leute # ist da. Auf den hab ich jetzt gar kein Bock. +Boa #. Wer hat den denn bestellt? +# na toll. Das hat mir noch gefehlt. \ No newline at end of file