This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using Discord.Commands;
|
||||
using System.Collections.Generic;
|
||||
using Discord.Commands;
|
||||
using Discord.WebSocket;
|
||||
using PluginManager.Interfaces;
|
||||
|
||||
@@ -8,6 +9,8 @@ internal class Leave : DBCommand
|
||||
{
|
||||
public string Command => "leave";
|
||||
|
||||
public List<string> Aliases => null;
|
||||
|
||||
public string Description => "Leave the voice channel";
|
||||
|
||||
public string Usage => "leave";
|
||||
|
||||
@@ -5,7 +5,8 @@ namespace MusicCommands;
|
||||
|
||||
internal class MusicPlayer
|
||||
{
|
||||
private Stream outputStream { get; }
|
||||
private Stream outputStream { get; }
|
||||
internal AudioFile NowPlaying = null;
|
||||
|
||||
internal bool isPlaying, isPaused;
|
||||
|
||||
@@ -14,9 +15,10 @@ internal class MusicPlayer
|
||||
outputStream = outputChannel;
|
||||
}
|
||||
|
||||
public async Task Play(Stream source, int byteSize)
|
||||
public async Task Play(Stream source, int byteSize, AudioFile songPlaying)
|
||||
{
|
||||
isPlaying = true;
|
||||
isPlaying = true;
|
||||
NowPlaying = songPlaying;
|
||||
while (isPlaying)
|
||||
{
|
||||
if (isPaused)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Discord.Commands;
|
||||
using System.Collections.Generic;
|
||||
using Discord.Commands;
|
||||
using Discord.WebSocket;
|
||||
using PluginManager.Interfaces;
|
||||
|
||||
@@ -8,6 +9,8 @@ internal class Pause : DBCommand
|
||||
{
|
||||
public string Command => "pause";
|
||||
|
||||
public List<string> Aliases => null;
|
||||
|
||||
public string Description => "Pause/Unpause the music that is currently running";
|
||||
|
||||
public string Usage => "pause";
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using Discord;
|
||||
@@ -14,6 +15,8 @@ internal class Play : DBCommand
|
||||
{
|
||||
public string Command => "play";
|
||||
|
||||
public List<string> Aliases => new() { "p" };
|
||||
|
||||
public string Description => "Play music from a file";
|
||||
|
||||
public string Usage => "play [name/url]";
|
||||
@@ -69,11 +72,11 @@ internal class Play : DBCommand
|
||||
|
||||
if (Data.MusicPlayer is not null)
|
||||
{
|
||||
await context.Channel.SendMessageAsync("Enqueued your request");
|
||||
await context.Channel.SendMessageAsync("Queued your request: " + splitted.MergeStrings(1));
|
||||
return;
|
||||
}
|
||||
}
|
||||
while (false);
|
||||
while (false); // run only one time !
|
||||
|
||||
|
||||
Data.voiceChannel = (context.User as IGuildUser)?.VoiceChannel;
|
||||
@@ -93,15 +96,14 @@ internal class Play : DBCommand
|
||||
|
||||
using (var discordChanneAudioOutStream = Data.audioClient.CreatePCMStream(AudioApplication.Mixed))
|
||||
{
|
||||
if (Data.MusicPlayer is null)
|
||||
Data.MusicPlayer = new MusicPlayer(discordChanneAudioOutStream);
|
||||
Data.MusicPlayer ??= new MusicPlayer(discordChanneAudioOutStream);
|
||||
while (Data.Playlist.Count > 0)
|
||||
{
|
||||
var nowPlaying = Data.Playlist.GetNextSong;
|
||||
using (var ffmpeg = CreateStream(nowPlaying.Name))
|
||||
using (var ffmpegOutputBaseStream = ffmpeg.StandardOutput.BaseStream)
|
||||
{
|
||||
await Data.MusicPlayer.Play(ffmpegOutputBaseStream, 1024);
|
||||
await Data.MusicPlayer.Play(ffmpegOutputBaseStream, 1024, nowPlaying);
|
||||
Console.WriteLine("Finished playing from " + nowPlaying.Url);
|
||||
}
|
||||
}
|
||||
@@ -110,7 +112,7 @@ internal class Play : DBCommand
|
||||
}
|
||||
}
|
||||
|
||||
private Process CreateStream(string path)
|
||||
private static Process CreateStream(string path)
|
||||
{
|
||||
return Process.Start(new ProcessStartInfo { FileName = "ffmpeg", Arguments = $"-hide_banner -loglevel panic -i \"{path}\" -ac 2 -f s16le -ar 48000 pipe:1", UseShellExecute = false, RedirectStandardOutput = true });
|
||||
}
|
||||
|
||||
@@ -13,6 +13,8 @@ namespace MusicCommands
|
||||
{
|
||||
public string Command => "skip";
|
||||
|
||||
public List<string> Aliases => null;
|
||||
|
||||
public string Description => "skip the music that is currently running";
|
||||
|
||||
public string Usage => "skip";
|
||||
@@ -25,7 +27,16 @@ namespace MusicCommands
|
||||
|
||||
public void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
|
||||
{
|
||||
var loadedSong = Data.MusicPlayer.NowPlaying;
|
||||
|
||||
if (loadedSong is null || Data.MusicPlayer.isPlaying == false)
|
||||
{
|
||||
message.Channel.SendMessageAsync("There is no music playing");
|
||||
return;
|
||||
}
|
||||
|
||||
Data.MusicPlayer.isPlaying = false;
|
||||
message.Channel.SendMessageAsync($"You have skipped {loadedSong.Name}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,8 @@ namespace MusicCommands
|
||||
{
|
||||
public class queue : DBCommand
|
||||
{
|
||||
public string Command => "queue";
|
||||
public string Command => "queue";
|
||||
public List<string> Aliases => new() { "q" };
|
||||
|
||||
public string Description => "check queue";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user