Browse Source

Follow Teil 1

pull/2/head
Yannic Link 4 years ago
parent
commit
ce52530481
6 changed files with 99 additions and 22 deletions
  1. +0
    -1
      app/src/main/java/de/yannicpunktdee/yoshibot/audio/AudioPlayerListener.java
  2. +4
    -1
      app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommandDistributor.java
  3. +30
    -0
      app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/FollowCommand.java
  4. +2
    -0
      app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/PlayCommand.java
  5. +26
    -20
      app/src/main/java/de/yannicpunktdee/yoshibot/listeners/DiscordEventListener.java
  6. +37
    -0
      app/src/main/java/de/yannicpunktdee/yoshibot/main/YoshiBot.java

+ 0
- 1
app/src/main/java/de/yannicpunktdee/yoshibot/audio/AudioPlayerListener.java View File

@ -18,7 +18,6 @@ public class AudioPlayerListener implements AudioEventListener {
public void onEvent(AudioEvent event) { public void onEvent(AudioEvent event) {
if(event.player.getPlayingTrack() == null) { if(event.player.getPlayingTrack() == null) {
event.player.stopTrack(); event.player.stopTrack();
audioManager.closeAudioConnection();
} }
} }


+ 4
- 1
app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommandDistributor.java View File

@ -62,6 +62,8 @@ public class YoshiCommandDistributor {
case BONK: case BONK:
command = new BonkCommand(context); command = new BonkCommand(context);
break; break;
case FOLLOW:
command = new FollowCommand(context);
default: default:
context.getEvent().getTextChannel().sendMessage("Dieses Kommando existiert noch nicht.").queue(); context.getEvent().getTextChannel().sendMessage("Dieses Kommando existiert noch nicht.").queue();
break; break;
@ -108,7 +110,8 @@ public class YoshiCommandDistributor {
DELETE, DELETE,
SAUCE, SAUCE,
PAT, PAT,
BONK
BONK,
FOLLOW
} }


+ 30
- 0
app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/FollowCommand.java View File

@ -0,0 +1,30 @@
package de.yannicpunktdee.yoshibot.command.commands;
import de.yannicpunktdee.yoshibot.command.YoshiCommand;
import de.yannicpunktdee.yoshibot.command.YoshiCommandContext;
import de.yannicpunktdee.yoshibot.main.YoshiBot;
public class FollowCommand extends YoshiCommand {
protected final String[] requiredArguments = {"enable"};
public FollowCommand(YoshiCommandContext context) {
super(context);
}
@Override
public boolean execute() {
if(!super.execute()) return false;
if(context.getArgument("enable").equalsIgnoreCase("true")){
YoshiBot.getInstance().setActive(true);
}else if(context.getArgument("enable").equalsIgnoreCase("false")){
YoshiBot.getInstance().setActive(false);
}else{
sendMessage("Der Wert des Parameters -enable muss true oder false sein.");
return false;
}
return true;
}
}

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

@ -25,6 +25,8 @@ public class PlayCommand extends YoshiCommand {
} }
public static boolean play(String fileName, VoiceChannel vc) { public static boolean play(String fileName, VoiceChannel vc) {
if(!YoshiBot.getInstance().isActive()) return true;
if (!new File(fileName).isFile()) return false; if (!new File(fileName).isFile()) return false;
YoshiBot yoshiBot = YoshiBot.getInstance(); YoshiBot yoshiBot = YoshiBot.getInstance();


+ 26
- 20
app/src/main/java/de/yannicpunktdee/yoshibot/listeners/DiscordEventListener.java View File

@ -48,33 +48,39 @@ public class DiscordEventListener extends ListenerAdapter {
@Override @Override
public void onGuildVoiceJoin(@NotNull GuildVoiceJoinEvent event) { public void onGuildVoiceJoin(@NotNull GuildVoiceJoinEvent event) {
super.onGuildVoiceJoin(event); super.onGuildVoiceJoin(event);
if (!Resources.isGreetings_and_byebyes_on()) return;
if (event.getMember().getUser().isBot()) return; if (event.getMember().getUser().isBot()) return;
String nameToPlay = event.getMember().getNickname();
nameToPlay = nameToPlay == null ? event.getMember().getUser().getName() : nameToPlay;
PlayCommand.play(
SayCommand.buildTTSAudio(Resources.getRandomGreeting(nameToPlay)),
event.getMember().getVoiceState().getChannel());
if(YoshiBot.getInstance().isActive())
YoshiBot.getInstance().autoConnectToChannel();
if (Resources.isGreetings_and_byebyes_on()){
String nameToPlay = event.getMember().getNickname();
if(nameToPlay == null) nameToPlay = event.getMember().getUser().getName();
PlayCommand.play(
SayCommand.buildTTSAudio(Resources.getRandomGreeting(nameToPlay)),
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 (!Resources.isGreetings_and_byebyes_on()) return;
if (event.getMember().getUser().isBot()) return; if (event.getMember().getUser().isBot()) return;
String nameToPlay = event.getMember().getNickname();
nameToPlay = nameToPlay == null ? event.getMember().getUser().getName() : nameToPlay;
PlayCommand.play(
SayCommand.buildTTSAudio(Resources.getRandomByebye(nameToPlay)),
event.getChannelLeft());
if(YoshiBot.getInstance().isActive())
YoshiBot.getInstance().autoConnectToChannel();
if (!Resources.isGreetings_and_byebyes_on()) {
String nameToPlay = event.getMember().getNickname();
nameToPlay = nameToPlay == null ? event.getMember().getUser().getName() : nameToPlay;
PlayCommand.play(
SayCommand.buildTTSAudio(Resources.getRandomByebye(nameToPlay)),
event.getChannelLeft());
}
} }
} }

+ 37
- 0
app/src/main/java/de/yannicpunktdee/yoshibot/main/YoshiBot.java View File

@ -21,6 +21,7 @@ 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 net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.VoiceChannel;
import javax.security.auth.login.LoginException; import javax.security.auth.login.LoginException;
import java.io.File; import java.io.File;
@ -62,11 +63,15 @@ public final class YoshiBot {
@Getter @Getter
private final Random random = new Random(); private final Random random = new Random();
@Getter
private boolean active;
/** /**
* Initialisiert alle dynamisch hinzugefügten und statischen Ressourcen. Startet aber nicht den Bot selbst. * Initialisiert alle dynamisch hinzugefügten und statischen Ressourcen. Startet aber nicht den Bot selbst.
*/ */
public boolean init(String configPath) { public boolean init(String configPath) {
active = false;
return Resources.init(configPath); return Resources.init(configPath);
} }
@ -113,6 +118,8 @@ public final class YoshiBot {
new SauceProvider(300); new SauceProvider(300);
Executors.newScheduledThreadPool(1).scheduleAtFixedRate(YoshiBot::setRandomActivity, 0, 10, TimeUnit.HOURS); Executors.newScheduledThreadPool(1).scheduleAtFixedRate(YoshiBot::setRandomActivity, 0, 10, TimeUnit.HOURS);
if(active) autoConnectToChannel();
} }
public synchronized void stop() { public synchronized void stop() {
@ -148,5 +155,35 @@ public final class YoshiBot {
yoshiBot.jda.getPresence().setActivity(Activity.playing(activity)); yoshiBot.jda.getPresence().setActivity(Activity.playing(activity));
Logger.logInfo("Setze Aktivität auf " + activity); Logger.logInfo("Setze Aktivität auf " + activity);
} }
private void joinVoiceChannel(VoiceChannel vc){
if(vc.equals(guild.getAudioManager().getConnectedChannel())) return;
leaveAudioChannel();
guild.getAudioManager().openAudioConnection(vc);
}
private void leaveAudioChannel(){
if(guild.getAudioManager().getConnectedChannel() == null) return;
guild.getAudioManager().closeAudioConnection();
}
public void autoConnectToChannel(){
VoiceChannel maxMembersVoiceChannel = null;
int maxMembers = 0;
for(VoiceChannel vc : guild.getVoiceChannels()){
if(vc.getMembers().size() > maxMembers){
maxMembersVoiceChannel = vc;
maxMembers = vc.getMembers().size();
}
}
if(maxMembers == 0) leaveAudioChannel();
else joinVoiceChannel(maxMembersVoiceChannel);
}
public void setActive(boolean a){
active = a;
if(active) autoConnectToChannel();
else leaveAudioChannel();
}
} }

Loading…
Cancel
Save