diff --git a/src/main/java/com/bbn/hadder/commands/owner/EchoCommand.java b/src/main/java/com/bbn/hadder/commands/music/EchoCommand.java similarity index 78% rename from src/main/java/com/bbn/hadder/commands/owner/EchoCommand.java rename to src/main/java/com/bbn/hadder/commands/music/EchoCommand.java index e5d263f..918ac40 100644 --- a/src/main/java/com/bbn/hadder/commands/owner/EchoCommand.java +++ b/src/main/java/com/bbn/hadder/commands/music/EchoCommand.java @@ -1,20 +1,8 @@ /* - * Copyright 2019-2020 GregTCLTK and Schlauer-Hax - * - * Licensed under the GNU Affero General Public License, Version 3.0; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * @author Hax / Hax6775 / Schlauer_Hax */ -package com.bbn.hadder.commands.owner; +package com.bbn.hadder.commands.music; import com.bbn.hadder.commands.Command; import com.bbn.hadder.commands.CommandEvent; diff --git a/src/main/java/com/bbn/hadder/commands/music/RecordCommand.java b/src/main/java/com/bbn/hadder/commands/music/RecordCommand.java new file mode 100644 index 0000000..875cf53 --- /dev/null +++ b/src/main/java/com/bbn/hadder/commands/music/RecordCommand.java @@ -0,0 +1,112 @@ +/* + * @author Hax / Hax6775 / Schlauer_Hax + */ + +package com.bbn.hadder.commands.music; + +import com.bbn.hadder.commands.Command; +import com.bbn.hadder.commands.CommandEvent; +import com.bbn.hadder.core.Perm; +import com.bbn.hadder.core.Perms; +import net.dv8tion.jda.api.audio.AudioReceiveHandler; +import net.dv8tion.jda.api.audio.AudioSendHandler; +import net.dv8tion.jda.api.audio.CombinedAudio; +import net.dv8tion.jda.api.audio.UserAudio; +import net.dv8tion.jda.api.entities.Guild; +import net.dv8tion.jda.api.managers.AudioManager; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import javax.sound.sampled.*; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.HashMap; +import java.util.Map; +import java.util.Queue; +import java.util.UUID; +import java.util.concurrent.ConcurrentLinkedQueue; + +@Perms(Perm.BOT_OWNER) +public class RecordCommand implements Command { + + private final HashMap> queue = new HashMap>(); + + @Override + public void executed(String[] args, CommandEvent event) { + Guild guild = event.getMember().getVoiceState().getChannel().getGuild(); + AudioManager audioManager = guild.getAudioManager(); + EchoHandler handler = new EchoHandler(queue); + if (!audioManager.isConnected()) { + audioManager.setSendingHandler(handler); + audioManager.setReceivingHandler(handler); + audioManager.openAudioConnection(event.getMember().getVoiceState().getChannel()); + } else { + for (Map.Entry> key : queue.entrySet()) { + File file = new File("./"+event.getJDA().getUserById(key.getKey())+".wav"); + + + } + } + } + + public static class EchoHandler implements AudioSendHandler, AudioReceiveHandler { + + private HashMap> queue; + + public EchoHandler(HashMap> queue) { + this.queue = queue; + } + + @Override + public boolean canProvide() { + return false; + } + + @Nullable + @Override + public ByteBuffer provide20MsAudio() { + return null; + } + + @Override + public void handleUserAudio(@Nonnull UserAudio userAudio) { + if (queue.containsKey(userAudio.getUser().getId())) { + queue.get(userAudio.getUser().getId()).add(userAudio.getAudioData(1.0f)); + } else { + Queue newqueue = new ConcurrentLinkedQueue<>(); + newqueue.add(userAudio.getAudioData(1.0f)); + queue.put(userAudio.getUser().getId(), newqueue); + } + } + + public HashMap> getQueue() { + return queue; + } + } + + @Override + public String[] labels() { + return new String[]{"echo"}; + } + + @Override + public String description() { + return null; + } + + @Override + public String usage() { + return null; + } + + @Override + public String example() { + return null; + } + +} diff --git a/src/main/java/com/bbn/hadder/listener/CommandListener.java b/src/main/java/com/bbn/hadder/listener/CommandListener.java index 12cd584..fa751ea 100644 --- a/src/main/java/com/bbn/hadder/listener/CommandListener.java +++ b/src/main/java/com/bbn/hadder/listener/CommandListener.java @@ -21,15 +21,10 @@ import com.bbn.hadder.RethinkServer; import com.bbn.hadder.RethinkUser; import com.bbn.hadder.audio.AudioManager; import com.bbn.hadder.core.CommandHandler; -import net.dv8tion.jda.api.EmbedBuilder; -import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.entities.ChannelType; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; -import java.awt.*; -import java.time.Instant; - public class CommandListener extends ListenerAdapter { private Rethink rethink; @@ -45,41 +40,21 @@ public class CommandListener extends ListenerAdapter { @Override public void onMessageReceived(MessageReceivedEvent event) { if (event.isFromType(ChannelType.TEXT) && !event.getAuthor().isBot()) { - if (event.getGuild().getSelfMember().hasPermission(Permission.MESSAGE_WRITE)) { - if (event.getGuild().getSelfMember().hasPermission(Permission.MESSAGE_EMBED_LINKS)) { - RethinkUser rethinkUser = new RethinkUser(rethink.getObjectByID("user", event.getAuthor().getId()), rethink); - RethinkServer rethinkServer = new RethinkServer(rethink.getObjectByID("server", event.getGuild().getId()), rethink); - rethinkUser.push(); - rethinkServer.push(); - String[] prefixes = { - rethinkUser.getPrefix(), rethinkServer.getPrefix(), - event.getGuild().getSelfMember().getAsMention() + " ", event.getGuild().getSelfMember().getAsMention(), - event.getGuild().getSelfMember().getAsMention().replace("@", "@!") + " ", - event.getGuild().getSelfMember().getAsMention().replace("@", "@!") - }; - for (String prefix : prefixes) { - if (event.getMessage().getContentRaw().startsWith(prefix)) { - handler.handle(event, rethink, prefix, audioManager, rethinkUser, rethinkServer); - return; - } - } - } else { - event.getAuthor().openPrivateChannel().complete().sendMessage(new EmbedBuilder() - .setTitle("No permission") - .setDescription("I need the `MESSAGE EMBED LINKS` permission in order to work!") - .setColor(Color.RED) - .setFooter("Hadder", "https://bigbotnetwork.com/images/Hadder.png") - .setTimestamp(Instant.now()) - .build()).queue(); + RethinkUser rethinkUser = new RethinkUser(rethink.getObjectByID("user", event.getAuthor().getId()), rethink); + RethinkServer rethinkServer = new RethinkServer(rethink.getObjectByID("server", event.getGuild().getId()), rethink); + rethinkUser.push(); + rethinkServer.push(); + String[] prefixes = { + rethinkUser.getPrefix(), rethinkServer.getPrefix(), + event.getGuild().getSelfMember().getAsMention() + " ", event.getGuild().getSelfMember().getAsMention(), + event.getGuild().getSelfMember().getAsMention().replace("@", "@!") + " ", + event.getGuild().getSelfMember().getAsMention().replace("@", "@!") + }; + for (String prefix : prefixes) { + if (event.getMessage().getContentRaw().startsWith(prefix)) { + handler.handle(event, rethink, prefix, audioManager, rethinkUser, rethinkServer); + return; } - } else { - event.getAuthor().openPrivateChannel().complete().sendMessage(new EmbedBuilder() - .setTitle("No permission") - .setDescription("I need the `MESSAGE WRITE` permission in order to work!") - .setColor(Color.RED) - .setFooter("Hadder", "https://bigbotnetwork.com/images/Hadder.png") - .setTimestamp(Instant.now()) - .build()).queue(); } } } diff --git a/src/main/java/com/bbn/hadder/listener/PrivateMessageListener.java b/src/main/java/com/bbn/hadder/listener/PrivateMessageListener.java index bfdcad1..66eff6e 100644 --- a/src/main/java/com/bbn/hadder/listener/PrivateMessageListener.java +++ b/src/main/java/com/bbn/hadder/listener/PrivateMessageListener.java @@ -19,13 +19,11 @@ package com.bbn.hadder.listener; import com.bbn.hadder.Rethink; import com.bbn.hadder.RethinkUser; import com.bbn.hadder.utils.MessageEditor; -import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.entities.ChannelType; import net.dv8tion.jda.api.entities.PrivateChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; -import java.awt.*; import java.time.Instant; public class PrivateMessageListener extends ListenerAdapter { @@ -54,14 +52,6 @@ public class PrivateMessageListener extends ListenerAdapter { .setDescription(event.getMessage().getContentRaw()) .setTimestamp(Instant.now()) .build()).queue(); - - event.getChannel().sendMessage(new EmbedBuilder() - .setTitle("No DM support") - .setDescription("You have to execute your commands on a guild!") - .setColor(Color.RED) - .setFooter("Hadder", "https://bigbotnetwork.com/images/Hadder.png") - .setTimestamp(Instant.now()) - .build()).queue(); } } } diff --git a/src/main/java/com/bbn/hadder/listener/RulesListener.java b/src/main/java/com/bbn/hadder/listener/RulesListener.java index 53becb6..d056011 100644 --- a/src/main/java/com/bbn/hadder/listener/RulesListener.java +++ b/src/main/java/com/bbn/hadder/listener/RulesListener.java @@ -58,8 +58,8 @@ public class RulesListener extends ListenerAdapter { private void addRole(MessageReactionAddEvent event) { RethinkServer rethinkServer = new RethinkServer(rethink.getObjectByID("server", event.getGuild().getId()), rethink); - if (event.getMember().getRoles().contains(event.getGuild().getRoleById(rethinkServer.getRole_id()))) { - event.getGuild().removeRoleFromMember(event.getMember(), event.getGuild().getRoleById(rethinkServer.getRole_id())).reason("Accepted rules").queue(); + if (event.getMember().getRoles().contains(event.getGuild().getRoleById(rethinkServer.getMessage_id()))) { + event.getGuild().removeRoleFromMember(event.getMember(), event.getGuild().getRoleById(rethinkServer.getMessage_id())).reason("Accepted rules").queue(); } else event.getGuild().addRoleToMember(event.getMember(), event.getGuild().getRoleById(rethinkServer.getRole_id())).reason("Accepted rules").queue(); }