Browse Source

Greetings and byebyes Teil 2 + Alle Guild-Angelegenheiten auf eine Guild beschränkt.

greetings_byebyes
yl60lepu 4 years ago
parent
commit
d1f8f9d14c
11 changed files with 72 additions and 115 deletions
  1. +0
    -30
      app/src/main/java/de/yannicpunktdee/yoshibot/audio/AudioController.java
  2. +0
    -28
      app/src/main/java/de/yannicpunktdee/yoshibot/audio/AudioControllerManager.java
  3. +1
    -8
      app/src/main/java/de/yannicpunktdee/yoshibot/audio/AudioLoadResultHandlerImpl.java
  4. +1
    -3
      app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/PlayCommand.java
  5. +2
    -4
      app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/SayCommand.java
  6. +11
    -5
      app/src/main/java/de/yannicpunktdee/yoshibot/listeners/CommandListener.java
  7. +22
    -11
      app/src/main/java/de/yannicpunktdee/yoshibot/main/YoshiBot.java
  8. +21
    -3
      app/src/main/java/de/yannicpunktdee/yoshibot/utils/Resources.java
  9. +3
    -9
      rsc/byebyes.txt
  10. +1
    -9
      rsc/greetings.txt
  11. +10
    -5
      rsc/sauceConfig.json

+ 0
- 30
app/src/main/java/de/yannicpunktdee/yoshibot/audio/AudioController.java View File

@ -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;
}
}

+ 0
- 28
app/src/main/java/de/yannicpunktdee/yoshibot/audio/AudioControllerManager.java View File

@ -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<Long, AudioController> audioController;
public AudioControllerManager() {
audioController = new ConcurrentHashMap<Long, AudioController>();
}
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;
}
}

+ 1
- 8
app/src/main/java/de/yannicpunktdee/yoshibot/audio/AudioLoadResultHandlerImpl.java View File

@ -8,17 +8,10 @@ import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
import de.yannicpunktdee.yoshibot.main.YoshiBot; import de.yannicpunktdee.yoshibot.main.YoshiBot;
public class AudioLoadResultHandlerImpl implements AudioLoadResultHandler { public class AudioLoadResultHandlerImpl implements AudioLoadResultHandler {
private AudioController audioController;
public AudioLoadResultHandlerImpl(AudioController audioController) {
this.audioController = audioController;
}
@Override @Override
public void trackLoaded(AudioTrack track) { public void trackLoaded(AudioTrack track) {
audioController.getAudioPlayer().playTrack(track);
YoshiBot.getInstance().audioPlayer.playTrack(track);
} }
@Override @Override


+ 1
- 3
app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/PlayCommand.java View File

@ -2,7 +2,6 @@ package de.yannicpunktdee.yoshibot.command.commands;
import java.util.List; import java.util.List;
import de.yannicpunktdee.yoshibot.audio.AudioController;
import de.yannicpunktdee.yoshibot.audio.AudioLoadResultHandlerImpl; import de.yannicpunktdee.yoshibot.audio.AudioLoadResultHandlerImpl;
import de.yannicpunktdee.yoshibot.command.YoshiCommand; import de.yannicpunktdee.yoshibot.command.YoshiCommand;
import de.yannicpunktdee.yoshibot.command.YoshiCommandContext; import de.yannicpunktdee.yoshibot.command.YoshiCommandContext;
@ -22,9 +21,8 @@ public class PlayCommand extends YoshiCommand {
public static boolean play(String fileName, VoiceChannel vc){ public static boolean play(String fileName, VoiceChannel vc){
YoshiBot yoshiBot = YoshiBot.getInstance(); YoshiBot yoshiBot = YoshiBot.getInstance();
AudioController ac = yoshiBot.audioControllerManager.getController(vc.getGuild().getIdLong());
vc.getGuild().getAudioManager().openAudioConnection(vc); vc.getGuild().getAudioManager().openAudioConnection(vc);
yoshiBot.audioPlayerManager.loadItem(fileName, new AudioLoadResultHandlerImpl(ac));
yoshiBot.audioPlayerManager.loadItem(fileName, new AudioLoadResultHandlerImpl());
return true; return true;
} }


+ 2
- 4
app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/SayCommand.java View File

@ -1,6 +1,5 @@
package de.yannicpunktdee.yoshibot.command.commands; package de.yannicpunktdee.yoshibot.command.commands;
import de.yannicpunktdee.yoshibot.audio.AudioController;
import de.yannicpunktdee.yoshibot.audio.AudioLoadResultHandlerImpl; import de.yannicpunktdee.yoshibot.audio.AudioLoadResultHandlerImpl;
import de.yannicpunktdee.yoshibot.command.YoshiCommand; import de.yannicpunktdee.yoshibot.command.YoshiCommand;
import de.yannicpunktdee.yoshibot.command.YoshiCommandContext; import de.yannicpunktdee.yoshibot.command.YoshiCommandContext;
@ -41,7 +40,7 @@ public class SayCommand extends YoshiCommand {
try { try {
ProcessBuilder pb = new ProcessBuilder( ProcessBuilder pb = new ProcessBuilder(
"python3",
"python",
Resources.getTts_path(), Resources.getTts_path(),
"--text", "--text",
text, text,
@ -86,8 +85,7 @@ public class SayCommand extends YoshiCommand {
} }
VoiceChannel vc = channels.get(0); 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); vc.getGuild().getAudioManager().openAudioConnection(vc);
return false; return false;


+ 11
- 5
app/src/main/java/de/yannicpunktdee/yoshibot/listeners/CommandListener.java View File

@ -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.member.GuildMemberRemoveEvent;
import net.dv8tion.jda.api.events.guild.voice.GuildVoiceJoinEvent; 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.GuildVoiceLeaveEvent;
import net.dv8tion.jda.api.events.guild.voice.GuildVoiceMoveEvent;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter; import net.dv8tion.jda.api.hooks.ListenerAdapter;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.util.Arrays; 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 * 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) { public void onGuildVoiceJoin(@NotNull GuildVoiceJoinEvent event) {
super.onGuildVoiceJoin(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 @Override
public void onGuildVoiceLeave(@NotNull GuildVoiceLeaveEvent event) { public void onGuildVoiceLeave(@NotNull GuildVoiceLeaveEvent event) {
super.onGuildVoiceLeave(event); super.onGuildVoiceLeave(event);
if(event.getMember().getUser().isBot()) return;
PlayCommand.play( PlayCommand.play(
SayCommand.buildTTSAudio(Resources.getRandomByebye(event.getMember().getNickname())), SayCommand.buildTTSAudio(Resources.getRandomByebye(event.getMember().getNickname())),
event.getMember().getVoiceState().getChannel());
event.getChannelLeft());
} }
} }

+ 22
- 11
app/src/main/java/de/yannicpunktdee/yoshibot/main/YoshiBot.java View File

@ -1,13 +1,12 @@
package de.yannicpunktdee.yoshibot.main; 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.AudioPlayerManager;
import com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager; import com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager;
import com.sedmelluq.discord.lavaplayer.source.AudioSourceManagers; import com.sedmelluq.discord.lavaplayer.source.AudioSourceManagers;
import com.sedmelluq.discord.lavaplayer.source.local.LocalAudioSourceManager; 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.YoshiCommandContext;
import de.yannicpunktdee.yoshibot.command.YoshiCommandDistributor; import de.yannicpunktdee.yoshibot.command.YoshiCommandDistributor;
import de.yannicpunktdee.yoshibot.listeners.CommandLine; 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.JDABuilder;
import net.dv8tion.jda.api.OnlineStatus; import net.dv8tion.jda.api.OnlineStatus;
import net.dv8tion.jda.api.entities.Activity; 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.io.File;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
@ -53,8 +52,10 @@ public class YoshiBot {
* LavaPlayer AudioPlayerManager. * LavaPlayer AudioPlayerManager.
*/ */
public AudioPlayerManager audioPlayerManager; public AudioPlayerManager audioPlayerManager;
public AudioControllerManager audioControllerManager;
public Guild guild;
public AudioPlayer audioPlayer;
private static YoshiBot instance = null; private static YoshiBot instance = null;
@ -79,16 +80,26 @@ public class YoshiBot {
jdaBuilder = JDABuilder.createDefault(Resources.getJdaBuilderString()); jdaBuilder = JDABuilder.createDefault(Resources.getJdaBuilderString());
jdaBuilder.setAutoReconnect(true); jdaBuilder.setAutoReconnect(true);
jdaBuilder.addEventListeners(new CommandListener()); jdaBuilder.addEventListeners(new CommandListener());
audioPlayerManager = new DefaultAudioPlayerManager(); audioPlayerManager = new DefaultAudioPlayerManager();
audioPlayerManager.registerSourceManager(new LocalAudioSourceManager()); audioPlayerManager.registerSourceManager(new LocalAudioSourceManager());
AudioSourceManagers.registerRemoteSources(audioPlayerManager); AudioSourceManagers.registerRemoteSources(audioPlayerManager);
audioControllerManager = new AudioControllerManager();
jda = jdaBuilder.build(); 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); jdaBuilder.setStatus(OnlineStatus.ONLINE);


+ 21
- 3
app/src/main/java/de/yannicpunktdee/yoshibot/utils/Resources.java View File

@ -21,6 +21,9 @@ public final class Resources {
private static String jda_builder_string; private static String jda_builder_string;
@Getter
private static Long guild_id;
private static final boolean default_greetings_and_byebyes_on = true; private static final boolean default_greetings_and_byebyes_on = true;
@Getter @Getter
private static boolean greetings_and_byebyes_on = default_greetings_and_byebyes_on; 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"); activityPath = propertiesFile.getProperty("path_to_activities");
boolean isOk = initJdaBuilderString(); boolean isOk = initJdaBuilderString();
if (isOk) isOk = initGuildId();
if (isOk) isOk = initGreetingsAndByebyes(); if (isOk) isOk = initGreetingsAndByebyes();
if (isOk) isOk = initChannelRestrict(); if (isOk) isOk = initChannelRestrict();
if (isOk) isOk = initAudio(); if (isOk) isOk = initAudio();
@ -98,11 +102,25 @@ public final class Resources {
jda_builder_string = propertiesFile.getProperty("jda_builder_string"); jda_builder_string = propertiesFile.getProperty("jda_builder_string");
return true; return true;
} }
public static String getJdaBuilderString() { public static String getJdaBuilderString() {
return jda_builder_string; 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(){ private static boolean initGreetingsAndByebyes(){
if(propertiesFile.containsKey("greetings_and_byebyes_on")) if(propertiesFile.containsKey("greetings_and_byebyes_on"))
greetings_and_byebyes_on = propertiesFile.getProperty("greetings_and_byebyes_on").equals("true"); 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){ public static String getRandomGreeting(String name){
if(!greetings_and_byebyes_on) return null; 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){ public static String getRandomByebye(String name){
if(!greetings_and_byebyes_on) return null; 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);
} }


+ 3
- 9
rsc/byebyes.txt View File

@ -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 #. Bye bye #.
Tschö #. 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 #. Geh kacken #.
# ist weg. Lasst ma lästern.
Machs jut #.
# verlässt uns unu.
# ist kurz Halle Peißen.

+ 1
- 9
rsc/greetings.txt View File

@ -1,14 +1,6 @@
Sei gegrüßt Genosse #. Sei gegrüßt Genosse #.
Wunderschönen juten Tach #.
Uwu # ist uns beigetreten. Uwu # ist uns beigetreten.
Gelobt sei #. Gelobt sei #.
OMG # ist da.
Wurde aber auch Zeit #.
Hurra hurra # ist da. Hurra hurra # ist da.
# ist gekommen um uns zu erleuchten. # 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.
# was ist deine Weisheit?

+ 10
- 5
rsc/sauceConfig.json View File

@ -8,14 +8,16 @@
"-yiff", "-yiff",
"-snuff", "-snuff",
"-crossdressing", "-crossdressing",
"-mind_break"
"-mind_break",
"-overweight",
"-hyper",
"-udders"
], ],
"feeds": [ "feeds": [
{ {
"channel": "snek-feed", "channel": "snek-feed",
"tags": [ "tags": [
"lamia",
"breasts"
"lamia"
] ]
}, },
{ {
@ -23,6 +25,8 @@
"tags": [ "tags": [
[ [
"fire_emblem", "fire_emblem",
"sword_art_online",
"monster_musume_no_iru_nichijou",
"samus_aran", "samus_aran",
"metroid", "metroid",
"palutena", "palutena",
@ -38,10 +42,11 @@
"fate_(series)", "fate_(series)",
"darling_in_the_franxx", "darling_in_the_franxx",
"dungeon_ni_deai_wo_motomeru_no_wa_machigatteiru_darou_ka", "dungeon_ni_deai_wo_motomeru_no_wa_machigatteiru_darou_ka",
"touhou"
"touhou",
"elf"
], ],
"breasts" "breasts"
] ]
} }
] ]
}
}

Loading…
Cancel
Save