FusionLord

Recording command

Sep 23rd, 2017
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.00 KB | None | 0 0
  1. package net.unidentifiedgaming.discord.bot.commands;
  2.  
  3. import com.sun.media.sound.WaveFileWriter;
  4. import sx.blah.discord.handle.audio.IAudioReceiver;
  5. import sx.blah.discord.handle.impl.events.guild.channel.message.MessageEvent;
  6. import sx.blah.discord.handle.obj.IRole;
  7. import sx.blah.discord.handle.obj.IUser;
  8. import sx.blah.discord.handle.obj.IVoiceChannel;
  9.  
  10. import javax.sound.sampled.*;
  11. import java.io.ByteArrayInputStream;
  12. import java.io.File;
  13. import java.io.IOException;
  14. import java.util.Date;
  15. import java.util.List;
  16.  
  17. public class RecordingCommand extends Command implements IAudioReceiver {
  18.     private static boolean recording = false;
  19.     public RecordingCommand(List<IRole> permissions, String helpText) {
  20.         super(permissions, helpText);
  21.     }
  22.  
  23.     @Override
  24.     public boolean action(List<String> args, MessageEvent event) {
  25.         String arg1 = args.remove(0);
  26.         if (arg1.equals("start")) {
  27.             if (recording) {
  28.                 helpText = "I'm already recording in " + event.getClient().getOurUser().getVoiceStateForGuild(event.getGuild()).getChannel().getName() + ".";
  29.                 return false;
  30.             }
  31.             IVoiceChannel userVoiceChannel = event.getAuthor().getVoiceStateForGuild(event.getGuild()).getChannel();
  32.             if (userVoiceChannel == null) {
  33.                 helpText = "You need to be in a voice channel to do that.";
  34.                 return false;
  35.             }
  36.             userVoiceChannel.join();
  37.  
  38.             event.getClient().changePlayingText("Recording!");
  39.             recording = true;
  40.  
  41.             event.getGuild().getAudioManager().subscribeReceiver(this);
  42.             event.getMessage().reply("I have started recording!");
  43.             return true;
  44.         } else if (arg1.equals("stop")) {
  45.             if (!recording) {
  46.                 helpText = "I'm not recording!";
  47.                 return false;
  48.             }
  49.             event.getGuild().getAudioManager().unsubscribeReceiver(this);
  50.             event.getClient().changePlayingText("");
  51.             event.getClient().getOurUser().getVoiceStateForGuild(event.getGuild()).getChannel().leave();
  52.             recording = false;
  53.             event.getMessage().reply("I have stopped recording!");
  54.             return true;
  55.         }
  56.  
  57.         return false;
  58.     }
  59.  
  60.     @Override
  61.     public void receive(byte[] audio, IUser iUser, char sequence, int timestamp) {
  62.         System.out.println("Receive called!");
  63.         WaveFileWriter writer = new WaveFileWriter();
  64.         ByteArrayInputStream stream = new ByteArrayInputStream(audio);
  65.         try {
  66.             AudioFormat format = AudioSystem.getAudioFileFormat(stream).getFormat();
  67.             writer.write(new AudioInputStream(stream, format, audio.length), AudioFileFormat.Type.WAVE, new File("D:\\BotRecordings\\" + new Date().getTime() + ".wav"));
  68.             System.out.println("Saving stream!");
  69.         } catch (IOException | UnsupportedAudioFileException e) {
  70.             e.printStackTrace();
  71.         }
  72.     }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment