From 367451207356e0abf10c9903b2624c22de25c419 Mon Sep 17 00:00:00 2001 From: samvaio Date: Thu, 15 Dec 2016 01:18:44 +0530 Subject: [PATCH] Music with Embeds and cool Avatars --- src/NadekoBot/Modules/Music/Music.cs | 43 ++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/src/NadekoBot/Modules/Music/Music.cs b/src/NadekoBot/Modules/Music/Music.cs index a4f348d1..4a8e4829 100644 --- a/src/NadekoBot/Modules/Music/Music.cs +++ b/src/NadekoBot/Modules/Music/Music.cs @@ -29,9 +29,34 @@ namespace NadekoBot.Modules.Music { //it can fail if its currenctly opened or doesn't exist. Either way i don't care try { Directory.Delete(MusicDataPath, true); } catch { } + + NadekoBot.Client.UserVoiceStateUpdated += Client_UserVoiceStateUpdated; Directory.CreateDirectory(MusicDataPath); } + + private Task Client_UserVoiceStateUpdated(IUser iusr, IVoiceState oldState, IVoiceState newState) + { + var usr = iusr as IGuildUser; + if (usr == null || + oldState.VoiceChannel == newState.VoiceChannel) + return Task.CompletedTask; + + MusicPlayer player; + if (!MusicPlayers.TryGetValue(usr.Guild.Id, out player)) + return Task.CompletedTask; + + if ((player.PlaybackVoiceChannel == newState.VoiceChannel && //if joined first, and player paused, unpause + player.Paused && + player.PlaybackVoiceChannel.GetUsers().Count == 2) || // keep in mind bot is in the channel (+1) + (player.PlaybackVoiceChannel == oldState.VoiceChannel && // if left last, and player unpaused, pause + !player.Paused && + player.PlaybackVoiceChannel.GetUsers().Count == 1)) + { + player.TogglePause(); + } + return Task.CompletedTask; + } [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] @@ -96,10 +121,7 @@ namespace NadekoBot.Modules.Music if (((IGuildUser)umsg.Author).VoiceChannel != musicPlayer.PlaybackVoiceChannel) return; musicPlayer.TogglePause(); - if (musicPlayer.Paused) - await channel.SendConfirmAsync("🎵 Music Player **paused**.").ConfigureAwait(false); - else - await channel.SendConfirmAsync("🎵 Music Player **unpaused**.").ConfigureAwait(false); + } [NadekoCommand, Usage, Description, Aliases] @@ -803,10 +825,21 @@ namespace NadekoBot.Modules.Music if (sender == null) return; - var msgTxt = $"🎵 Playing {song.PrettyName}\t `Volume: {(int)(sender.Volume * 100)}%`"; + var msgTxt = $"🎵 Playing {song.PrettyName}\t `Vol: {(int)(sender.Volume * 100)}%`"; try { playingMessage = await textCh.SendConfirmAsync(msgTxt).ConfigureAwait(false); } catch { } } }; + mp.OnPauseChanged += async (paused) => + { + try + { + if (paused) + await textCh.SendConfirmAsync("🎵 Music playback **paused**.").ConfigureAwait(false); + else + await textCh.SendConfirmAsync("🎵 Music playback **resumed**.").ConfigureAwait(false); + } + catch { } + }; return mp; }); Song resolvedSong;