Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.unidentifiedgaming.discord.bot.commands;
- import com.sun.media.sound.WaveFileWriter;
- import sx.blah.discord.handle.audio.IAudioReceiver;
- import sx.blah.discord.handle.impl.events.guild.channel.message.MessageEvent;
- import sx.blah.discord.handle.obj.IRole;
- import sx.blah.discord.handle.obj.IUser;
- import sx.blah.discord.handle.obj.IVoiceChannel;
- import javax.sound.sampled.*;
- import java.io.ByteArrayInputStream;
- import java.io.File;
- import java.io.IOException;
- import java.util.Date;
- import java.util.List;
- public class RecordingCommand extends Command implements IAudioReceiver {
- private static boolean recording = false;
- public RecordingCommand(List<IRole> permissions, String helpText) {
- super(permissions, helpText);
- }
- @Override
- public boolean action(List<String> args, MessageEvent event) {
- String arg1 = args.remove(0);
- if (arg1.equals("start")) {
- if (recording) {
- helpText = "I'm already recording in " + event.getClient().getOurUser().getVoiceStateForGuild(event.getGuild()).getChannel().getName() + ".";
- return false;
- }
- IVoiceChannel userVoiceChannel = event.getAuthor().getVoiceStateForGuild(event.getGuild()).getChannel();
- if (userVoiceChannel == null) {
- helpText = "You need to be in a voice channel to do that.";
- return false;
- }
- userVoiceChannel.join();
- event.getClient().changePlayingText("Recording!");
- recording = true;
- event.getGuild().getAudioManager().subscribeReceiver(this);
- event.getMessage().reply("I have started recording!");
- return true;
- } else if (arg1.equals("stop")) {
- if (!recording) {
- helpText = "I'm not recording!";
- return false;
- }
- event.getGuild().getAudioManager().unsubscribeReceiver(this);
- event.getClient().changePlayingText("");
- event.getClient().getOurUser().getVoiceStateForGuild(event.getGuild()).getChannel().leave();
- recording = false;
- event.getMessage().reply("I have stopped recording!");
- return true;
- }
- return false;
- }
- @Override
- public void receive(byte[] audio, IUser iUser, char sequence, int timestamp) {
- System.out.println("Receive called!");
- WaveFileWriter writer = new WaveFileWriter();
- ByteArrayInputStream stream = new ByteArrayInputStream(audio);
- try {
- AudioFormat format = AudioSystem.getAudioFileFormat(stream).getFormat();
- writer.write(new AudioInputStream(stream, format, audio.length), AudioFileFormat.Type.WAVE, new File("D:\\BotRecordings\\" + new Date().getTime() + ".wav"));
- System.out.println("Saving stream!");
- } catch (IOException | UnsupportedAudioFileException e) {
- e.printStackTrace();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment