diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/audio/AudioController.java b/app/src/main/java/de/yannicpunktdee/yoshibot/audio/AudioController.java deleted file mode 100644 index fd54724..0000000 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/audio/AudioController.java +++ /dev/null @@ -1,30 +0,0 @@ -package de.yannicpunktdee.yoshibot.audio; - -import com.sedmelluq.discord.lavaplayer.player.AudioPlayer; - -import de.yannicpunktdee.yoshibot.main.YoshiBot; -import net.dv8tion.jda.api.entities.Guild; - -public class AudioController { - - private Guild guild; - private AudioPlayer audioPlayer; - - - public AudioController(Guild guild) { - this.guild = guild; - this.audioPlayer = YoshiBot.getInstance().audioPlayerManager.createPlayer(); - audioPlayer.addListener(new AudioPlayerListener(guild.getAudioManager())); - - this.guild.getAudioManager().setSendingHandler(new AudioSendHandlerImpl(audioPlayer)); - } - - public Guild getGuild() { - return guild; - } - - public AudioPlayer getAudioPlayer() { - return audioPlayer; - } - -} diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/audio/AudioControllerManager.java b/app/src/main/java/de/yannicpunktdee/yoshibot/audio/AudioControllerManager.java deleted file mode 100644 index f8dfb66..0000000 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/audio/AudioControllerManager.java +++ /dev/null @@ -1,28 +0,0 @@ -package de.yannicpunktdee.yoshibot.audio; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import de.yannicpunktdee.yoshibot.main.YoshiBot; - -public class AudioControllerManager { - - public Map audioController; - - - public AudioControllerManager() { - audioController = new ConcurrentHashMap(); - } - - public AudioController getController(long guildId) { - AudioController ac = null; - if(audioController.containsKey(guildId)) - ac = audioController.get(guildId); - else { - ac = new AudioController(YoshiBot.getInstance().jda.getGuildById(guildId)); - audioController.put(guildId, ac); - } - return ac; - } - -} diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/audio/AudioLoadResultHandlerImpl.java b/app/src/main/java/de/yannicpunktdee/yoshibot/audio/AudioLoadResultHandlerImpl.java index 9b7f3bf..da82b0d 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/audio/AudioLoadResultHandlerImpl.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/audio/AudioLoadResultHandlerImpl.java @@ -8,17 +8,10 @@ import com.sedmelluq.discord.lavaplayer.track.AudioTrack; import de.yannicpunktdee.yoshibot.main.YoshiBot; public class AudioLoadResultHandlerImpl implements AudioLoadResultHandler { - - private AudioController audioController; - - - public AudioLoadResultHandlerImpl(AudioController audioController) { - this.audioController = audioController; - } @Override public void trackLoaded(AudioTrack track) { - audioController.getAudioPlayer().playTrack(track); + YoshiBot.getInstance().audioPlayer.playTrack(track); } @Override diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/PlayCommand.java b/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/PlayCommand.java index 87da123..3c426b1 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/PlayCommand.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/PlayCommand.java @@ -2,7 +2,6 @@ package de.yannicpunktdee.yoshibot.command.commands; import java.util.List; -import de.yannicpunktdee.yoshibot.audio.AudioController; import de.yannicpunktdee.yoshibot.audio.AudioLoadResultHandlerImpl; import de.yannicpunktdee.yoshibot.command.YoshiCommand; import de.yannicpunktdee.yoshibot.command.YoshiCommandContext; @@ -22,9 +21,8 @@ public class PlayCommand extends YoshiCommand { public static boolean play(String fileName, VoiceChannel vc){ YoshiBot yoshiBot = YoshiBot.getInstance(); - AudioController ac = yoshiBot.audioControllerManager.getController(vc.getGuild().getIdLong()); vc.getGuild().getAudioManager().openAudioConnection(vc); - yoshiBot.audioPlayerManager.loadItem(fileName, new AudioLoadResultHandlerImpl(ac)); + yoshiBot.audioPlayerManager.loadItem(fileName, new AudioLoadResultHandlerImpl()); return true; } diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/SayCommand.java b/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/SayCommand.java index 00263e4..26c4457 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/SayCommand.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/SayCommand.java @@ -1,6 +1,5 @@ package de.yannicpunktdee.yoshibot.command.commands; -import de.yannicpunktdee.yoshibot.audio.AudioController; import de.yannicpunktdee.yoshibot.audio.AudioLoadResultHandlerImpl; import de.yannicpunktdee.yoshibot.command.YoshiCommand; import de.yannicpunktdee.yoshibot.command.YoshiCommandContext; @@ -41,7 +40,7 @@ public class SayCommand extends YoshiCommand { try { ProcessBuilder pb = new ProcessBuilder( - "python3", + "python", Resources.getTts_path(), "--text", text, @@ -86,8 +85,7 @@ public class SayCommand extends YoshiCommand { } VoiceChannel vc = channels.get(0); - AudioController ac = YoshiBot.getInstance().audioControllerManager.getController(vc.getGuild().getIdLong()); - YoshiBot.getInstance().audioPlayerManager.loadItem(path, new AudioLoadResultHandlerImpl(ac)); + YoshiBot.getInstance().audioPlayerManager.loadItem(path, new AudioLoadResultHandlerImpl()); vc.getGuild().getAudioManager().openAudioConnection(vc); return false; 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 3efb5b2..ba60ea4 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/listeners/CommandListener.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/listeners/CommandListener.java @@ -13,11 +13,14 @@ 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.guild.voice.GuildVoiceMoveEvent; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; import org.jetbrains.annotations.NotNull; import java.util.Arrays; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; /** * Lauscht auf eingehende Nachrichten und leitet diese an die YoshiBot.executeCommand-Methode weiter, falls es sich um @@ -54,19 +57,22 @@ public class CommandListener extends ListenerAdapter { public void onGuildVoiceJoin(@NotNull GuildVoiceJoinEvent event) { super.onGuildVoiceJoin(event); - System.out.println(Resources.getRandomGreeting(event.getMember().getNickname())); + if(event.getMember().getUser().isBot()) return; - /*PlayCommand.play( - SayCommand.buildTTSAudio(), - event.getMember().getVoiceState().getChannel());*/ + PlayCommand.play( + SayCommand.buildTTSAudio(Resources.getRandomGreeting(event.getMember().getNickname())), + event.getMember().getVoiceState().getChannel()); } @Override public void onGuildVoiceLeave(@NotNull GuildVoiceLeaveEvent event) { super.onGuildVoiceLeave(event); + if(event.getMember().getUser().isBot()) return; + PlayCommand.play( SayCommand.buildTTSAudio(Resources.getRandomByebye(event.getMember().getNickname())), - event.getMember().getVoiceState().getChannel()); + event.getChannelLeft()); } + } diff --git a/app/src/main/java/de/yannicpunktdee/yoshibot/main/YoshiBot.java b/app/src/main/java/de/yannicpunktdee/yoshibot/main/YoshiBot.java index 6616e76..27a6cb5 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/main/YoshiBot.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/main/YoshiBot.java @@ -1,13 +1,12 @@ package de.yannicpunktdee.yoshibot.main; -import javax.security.auth.login.LoginException; - +import com.sedmelluq.discord.lavaplayer.player.AudioPlayer; import com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager; import com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager; import com.sedmelluq.discord.lavaplayer.source.AudioSourceManagers; import com.sedmelluq.discord.lavaplayer.source.local.LocalAudioSourceManager; - -import de.yannicpunktdee.yoshibot.audio.AudioControllerManager; +import de.yannicpunktdee.yoshibot.audio.AudioPlayerListener; +import de.yannicpunktdee.yoshibot.audio.AudioSendHandlerImpl; import de.yannicpunktdee.yoshibot.command.YoshiCommandContext; import de.yannicpunktdee.yoshibot.command.YoshiCommandDistributor; import de.yannicpunktdee.yoshibot.listeners.CommandLine; @@ -20,11 +19,11 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.JDABuilder; import net.dv8tion.jda.api.OnlineStatus; import net.dv8tion.jda.api.entities.Activity; +import net.dv8tion.jda.api.entities.Guild; -import java.io.BufferedReader; +import javax.security.auth.login.LoginException; import java.io.File; import java.nio.file.Files; -import java.nio.file.Path; import java.util.List; import java.util.Random; import java.util.concurrent.Executors; @@ -53,8 +52,10 @@ public class YoshiBot { * LavaPlayer AudioPlayerManager. */ public AudioPlayerManager audioPlayerManager; - - public AudioControllerManager audioControllerManager; + + public Guild guild; + + public AudioPlayer audioPlayer; private static YoshiBot instance = null; @@ -79,16 +80,26 @@ public class YoshiBot { jdaBuilder = JDABuilder.createDefault(Resources.getJdaBuilderString()); jdaBuilder.setAutoReconnect(true); - + jdaBuilder.addEventListeners(new CommandListener()); audioPlayerManager = new DefaultAudioPlayerManager(); audioPlayerManager.registerSourceManager(new LocalAudioSourceManager()); AudioSourceManagers.registerRemoteSources(audioPlayerManager); - audioControllerManager = new AudioControllerManager(); - jda = jdaBuilder.build(); + try { + jda.awaitReady(); + } catch (InterruptedException e) { + Logger.log("Konnte nicht auf jda warten. Thread unterbrochen.", Logger.Type.ERROR); + return; + } + + guild = jda.getGuildById(Resources.getGuild_id()); + + audioPlayer = YoshiBot.getInstance().audioPlayerManager.createPlayer(); + audioPlayer.addListener(new AudioPlayerListener(guild.getAudioManager())); + guild.getAudioManager().setSendingHandler(new AudioSendHandlerImpl(audioPlayer)); jdaBuilder.setStatus(OnlineStatus.ONLINE); 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 269523f..8fceaf6 100644 --- a/app/src/main/java/de/yannicpunktdee/yoshibot/utils/Resources.java +++ b/app/src/main/java/de/yannicpunktdee/yoshibot/utils/Resources.java @@ -21,6 +21,9 @@ public final class Resources { private static String jda_builder_string; + @Getter + private static Long guild_id; + private static final boolean default_greetings_and_byebyes_on = true; @Getter private static boolean greetings_and_byebyes_on = default_greetings_and_byebyes_on; @@ -79,6 +82,7 @@ public final class Resources { activityPath = propertiesFile.getProperty("path_to_activities"); boolean isOk = initJdaBuilderString(); + if (isOk) isOk = initGuildId(); if (isOk) isOk = initGreetingsAndByebyes(); if (isOk) isOk = initChannelRestrict(); if (isOk) isOk = initAudio(); @@ -98,11 +102,25 @@ public final class Resources { jda_builder_string = propertiesFile.getProperty("jda_builder_string"); return true; } - public static String getJdaBuilderString() { return jda_builder_string; } + private static boolean initGuildId(){ + if (!propertiesFile.containsKey("guild_id")) { + Logger.log("Die Config.properties benötigt das Attribut guild_id.", Type.ERROR); + return false; + } + String raw = propertiesFile.getProperty("guild_id"); + try { + guild_id = Long.parseLong(raw); + } catch(NumberFormatException e){ + Logger.log("Die angegebene guild_id ist keine Ganzzahl", Type.ERROR); + return false; + } + return true; + } + private static boolean initGreetingsAndByebyes(){ if(propertiesFile.containsKey("greetings_and_byebyes_on")) greetings_and_byebyes_on = propertiesFile.getProperty("greetings_and_byebyes_on").equals("true"); @@ -117,11 +135,11 @@ public final class Resources { } public static String getRandomGreeting(String name){ if(!greetings_and_byebyes_on) return null; - return greetings.get((new Random()).nextInt(greetings.size()) - 1).replace("#", name); + return greetings.get((new Random()).nextInt(greetings.size())).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); + return byebyes.get(new Random().nextInt(byebyes.size())).replace("#", name); } diff --git a/rsc/byebyes.txt b/rsc/byebyes.txt index 786b07e..835c950 100644 --- a/rsc/byebyes.txt +++ b/rsc/byebyes.txt @@ -1,12 +1,6 @@ -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. +Verpiss dich #. 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 +# verlässt uns unu. +# ist kurz Halle Peißen. \ No newline at end of file diff --git a/rsc/greetings.txt b/rsc/greetings.txt index c7774d6..4d28dd2 100644 --- a/rsc/greetings.txt +++ b/rsc/greetings.txt @@ -1,14 +1,6 @@ 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 +# was ist deine Weisheit? \ No newline at end of file diff --git a/rsc/sauceConfig.json b/rsc/sauceConfig.json index 418636d..9bdd3ae 100644 --- a/rsc/sauceConfig.json +++ b/rsc/sauceConfig.json @@ -8,14 +8,16 @@ "-yiff", "-snuff", "-crossdressing", - "-mind_break" + "-mind_break", + "-overweight", + "-hyper", + "-udders" ], "feeds": [ { "channel": "snek-feed", "tags": [ - "lamia", - "breasts" + "lamia" ] }, { @@ -23,6 +25,8 @@ "tags": [ [ "fire_emblem", + "sword_art_online", + "monster_musume_no_iru_nichijou", "samus_aran", "metroid", "palutena", @@ -38,10 +42,11 @@ "fate_(series)", "darling_in_the_franxx", "dungeon_ni_deai_wo_motomeru_no_wa_machigatteiru_darou_ka", - "touhou" + "touhou", + "elf" ], "breasts" ] } ] -} \ No newline at end of file +}