Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Threading.Tasks;
- using Discord;
- using Discord.Commands;
- using System.Diagnostics;
- using Discord.Audio;
- using System;
- using System.Runtime.InteropServices;
- public class SoundPlayer : ModuleBase<ICommandContext>
- {
- [DllImport("libc")]
- public static extern int system(string exec);
- public static IAudioClient client;
- private Process CreateStream(string url)
- {
- Process currentsong = new Process();
- currentsong.StartInfo = new ProcessStartInfo
- {
- Arguments = Convert.ToString(system("youtube-dl -o - " + url + " | ffmpeg -i pipe:0 -ac 2 -f s16le -ar 48000 pipe:1 &"))
- };
- currentsong.Start();
- return currentsong;
- }
- [Command("play", RunMode = RunMode.Async)]
- public async Task play(string url, IVoiceChannel channel = null)
- {
- var User = Context.User;
- var Channel = Context.Channel;
- channel = channel ?? (User as IGuildUser)?.VoiceChannel;
- var audioClient = await channel.ConnectAsync();
- var output = CreateStream(url).StandardOutput.BaseStream;
- var stream = audioClient.CreatePCMStream(AudioApplication.Music, 128 * 1024);
- await output.CopyToAsync(stream);
- await stream.FlushAsync().ConfigureAwait(false);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement