From 9bc4d897a50c286bb349220187748faae2efffc8 Mon Sep 17 00:00:00 2001 From: GregTCLTK Date: Sun, 24 Nov 2019 17:17:07 +0100 Subject: [PATCH] Music Bot :smirk: --- pom.xml | 5 ++ src/main/java/com/bbn/hadder/Hadder.java | 6 +- .../hadder/commands/music/JoinCommand.java | 56 +++++++++++++++++++ .../hadder/utils/AudioPlayerSendHandler.java | 25 +++++++++ 4 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/bbn/hadder/commands/music/JoinCommand.java create mode 100644 src/main/java/com/bbn/hadder/utils/AudioPlayerSendHandler.java diff --git a/pom.xml b/pom.xml index fcd89b3..bad6b3a 100644 --- a/pom.xml +++ b/pom.xml @@ -62,6 +62,11 @@ github-api 1.99 + + com.sedmelluq + lavaplayer + 1.3.27 + diff --git a/src/main/java/com/bbn/hadder/Hadder.java b/src/main/java/com/bbn/hadder/Hadder.java index afcf18d..36346e4 100644 --- a/src/main/java/com/bbn/hadder/Hadder.java +++ b/src/main/java/com/bbn/hadder/Hadder.java @@ -7,9 +7,11 @@ import com.bbn.hadder.commands.nsfw.*; import com.bbn.hadder.commands.owner.*; import com.bbn.hadder.commands.fun.*; import com.bbn.hadder.commands.settings.*; +import com.bbn.hadder.commands.music.*; import com.bbn.hadder.core.*; import com.bbn.hadder.listener.*; import net.dv8tion.jda.api.entities.Activity; +import net.dv8tion.jda.api.managers.AudioManager; import net.dv8tion.jda.api.sharding.DefaultShardManagerBuilder; import net.dv8tion.jda.api.sharding.ShardManager; @@ -18,7 +20,8 @@ import java.util.List; public class Hadder { - public static ShardManager shardManager; + public static ShardManager shardManager; + public static AudioManager audioManager; public static void main(String[] args) { startBot(); @@ -72,6 +75,7 @@ public class Hadder { new FeedbackCommand(), new AvatarCommand(), new EvalCommand(), + new JoinCommand(), new LinkCommand()), config, helpCommand); builder.addEventListeners( diff --git a/src/main/java/com/bbn/hadder/commands/music/JoinCommand.java b/src/main/java/com/bbn/hadder/commands/music/JoinCommand.java new file mode 100644 index 0000000..249ec60 --- /dev/null +++ b/src/main/java/com/bbn/hadder/commands/music/JoinCommand.java @@ -0,0 +1,56 @@ +package com.bbn.hadder.commands.music; + +/* + * @author Skidder / GregTCLTK + */ + +import com.bbn.hadder.commands.Command; +import com.bbn.hadder.commands.CommandEvent; +import com.bbn.hadder.utils.AudioPlayerSendHandler; +import com.bbn.hadder.utils.MessageEditor; +import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.entities.VoiceChannel; +import net.dv8tion.jda.api.managers.AudioManager; + + +public class JoinCommand implements Command { + + @Override + public void executed(String[] args, CommandEvent event) { + if (event.getMember().getVoiceState().inVoiceChannel()) { + AudioManager audioManager = event.getGuild().getAudioManager(); + if(!audioManager.isAttemptingToConnect()) { + VoiceChannel vc = event.getMember().getVoiceState().getChannel(); + audioManager.setSendingHandler(new AudioPlayerSendHandler()); + audioManager.openAudioConnection(vc); + } else { + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING, builder) + .setTitle("Already trying to connect") + .setDescription("Hadder is already trying to connect. Please wait a moment.") + .build()).queue(); + } + } else { + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING, builder) + .setTitle("No Voice Channel") + .setDescription("You aren't in a Voice Channel.") + .build()).queue(); + } + } + + @Override + public String[] labels() { + return new String[]{"join"}; + } + + @Override + public String description() { + return "Joins your voice channel"; + } + + @Override + public String usage() { + return ""; + } +} diff --git a/src/main/java/com/bbn/hadder/utils/AudioPlayerSendHandler.java b/src/main/java/com/bbn/hadder/utils/AudioPlayerSendHandler.java new file mode 100644 index 0000000..ff3f483 --- /dev/null +++ b/src/main/java/com/bbn/hadder/utils/AudioPlayerSendHandler.java @@ -0,0 +1,25 @@ +package com.bbn.hadder.utils; + +/* + * @author Skidder / GregTCLTK + */ + +import net.dv8tion.jda.api.audio.AudioSendHandler; + +import javax.annotation.Nullable; +import java.nio.ByteBuffer; + +public class AudioPlayerSendHandler implements AudioSendHandler { + + @Override + public boolean canProvide() { + return false; + } + + @Nullable + @Override + public ByteBuffer provide20MsAudio() { + + return null; + } +}