public void Install(ModuleManager manager) { _manager = manager; _client = manager.Client; manager.CreateCommands("", group => { group.CreateCommand("radio") .Description("connects to a voice channel and plays random music") .Parameter("Channel name") .Do(async e => { var channel = _client.FindChannels(e.Server, e.Args[0], ChannelType.Voice).FirstOrDefault(); /*try { var voice = await _client.JoinVoiceServer(channel); await Task.Run(() => { var random = new Random(); var files = Directory.GetFiles(@"D:\Shared\Music", "*.mp3").OrderBy(x => random.Next()).ToArray(); var outFormat = new WaveFormat(48000, 16, 1); int blockSize = outFormat.AverageBytesPerSecond / 5; //200ms byte[] buffer = new byte[blockSize]; foreach (var file in files) { using (var mp3Reader = new MediaFoundationReader(file)) using (var resampler = new MediaFoundationResampler(mp3Reader, outFormat) { ResamplerQuality = 60 }) { int byteCount; while ((byteCount = resampler.Read(buffer, 0, blockSize)) > 0) voice.SendVoicePCM(buffer, byteCount); } } }); await voice.WaitVoice(); } catch (OperationCanceledException) { } finally { await _client.LeaveVoiceServer(channel.Server); }*/ }); }); }