diff --git a/NadekoBot/Modules/Administration.cs b/NadekoBot/Modules/Administration.cs index f552b68e..e9dbb0cf 100644 --- a/NadekoBot/Modules/Administration.cs +++ b/NadekoBot/Modules/Administration.cs @@ -374,6 +374,17 @@ namespace NadekoBot.Modules } }); + cgb.CreateCommand(".greetmsg") + .Description("Sets a new announce message. Type %user% if you want to mention the new member.\n**Usage**: .greetmsg Welcome to the server, %user%.") + .Parameter("msg", ParameterType.Unparsed) + .Do(async e => { + if (e.User.Id != NadekoBot.OwnerID) return; + + if (e.GetArg("msg") == null) return; + announceMsg = e.GetArg("msg"); + await e.Send("New greet message set."); + }); + cgb.CreateCommand(".bye") .Description("Enables or Disables anouncements on the current channel when someone leaves the server.") .Do(async e => { @@ -393,15 +404,15 @@ namespace NadekoBot.Modules } }); - cgb.CreateCommand(".greetmsg") - .Description("Sets a new announce message. Type %user% if you want to mention the new member.\n**Usage**: .greetmsg Welcome to the server, %user%.") - .Parameter("msg",ParameterType.Unparsed) + cgb.CreateCommand(".byemsg") + .Description("Sets a new announce leave message. Type %user% if you want to mention the new member.\n**Usage**: .byemsg %user% has left the server.") + .Parameter("msg", ParameterType.Unparsed) .Do(async e => { if (e.User.Id != NadekoBot.OwnerID) return; if (e.GetArg("msg") == null) return; - announceMsg = e.GetArg("msg"); - await e.Send("New message set."); + announceLeaveMsg = e.GetArg("msg"); + await e.Send("New bye message set."); }); }); diff --git a/NadekoBot/Modules/Music.cs b/NadekoBot/Modules/Music.cs index 8bc9669c..7d38926a 100644 --- a/NadekoBot/Modules/Music.cs +++ b/NadekoBot/Modules/Music.cs @@ -11,7 +11,7 @@ using System.IO; using Discord; using Discord.Audio; using System.Collections.Concurrent; -using VideoLibrary; +using YoutubeExtractor; using System.Threading; using System.Diagnostics; using Discord.Legacy; @@ -90,9 +90,6 @@ namespace NadekoBot.Modules { .Alias("pause") .Description("Pauses the song") .Do(async e => { - /*if (CurrentSong != null) { - CurrentSong. - }*/ await e.Send("Not yet implemented."); }); cgb.CreateCommand("q") @@ -126,7 +123,9 @@ namespace NadekoBot.Modules { } private async Task LoadNextSong() { - if (SongQueue.Count == 0) { + if (SongQueue.Count == 0 || !SongQueue[0].LinkResolved) { + if (CurrentSong != null) + CurrentSong.Cancel(); CurrentSong = null; await Task.Delay(200); return; @@ -141,7 +140,8 @@ namespace NadekoBot.Modules { enum StreamTaskState { Queued, Playing, - Completed + Completed, + NotReady } class StreamRequest { @@ -159,7 +159,7 @@ namespace NadekoBot.Modules { public TimeSpan Length = TimeSpan.FromSeconds(0); public string FileName; - bool linkResolved; + public bool LinkResolved = false; public string StreamUrl; public bool NetworkDone; public long TotalSourceBytes; @@ -191,25 +191,26 @@ namespace NadekoBot.Modules { void ResolveLink() { var query = RequestText; try { - var video = YouTube.Default.GetAllVideos(Searches.FindYoutubeUrlByKeywords(query)) - .Where(v => v.AdaptiveKind == AdaptiveKind.Audio) + var video = DownloadUrlResolver.GetDownloadUrls(Searches.FindYoutubeUrlByKeywords(query)) + .Where(v => v.AdaptiveType == AdaptiveType.Audio) .OrderByDescending(v => v.AudioBitrate).FirstOrDefault(); if (video == null) throw new Exception("Could not load any video elements"); // First one - StreamUrl = video.Uri; + StreamUrl = video.DownloadUrl; Title = video.Title; - var fileName = Title.Replace("\\","_").Replace("/","_"); - Path.GetInvalidPathChars().ForEach(c => { fileName = fileName.Replace(c, '_'); }); - FileName = fileName; + string invalidChars = new string(Path.GetInvalidFileNameChars()) + new string(Path.GetInvalidPathChars()); + foreach (char c in invalidChars) { + FileName = FileName.Replace(c.ToString(), "_"); + } StartBuffering(); - linkResolved = true; - Channel.Send(":musical_note: **Queued** " + video.FullName); + LinkResolved = true; + Channel.Send(":musical_note: **Queued** " + video.Title); } catch (Exception e) { // Send a message to the guy that queued that - Channel.SendMessage(":warning: The url is corrupted somehow..."); + Channel.SendMessage(":warning: Something went wrong..."); Console.WriteLine("Cannot parse youtube url: " + query); Cancel(); } diff --git a/NadekoBot/Modules/Trello.cs b/NadekoBot/Modules/Trello.cs index a922877d..7093a15c 100644 --- a/NadekoBot/Modules/Trello.cs +++ b/NadekoBot/Modules/Trello.cs @@ -72,7 +72,7 @@ namespace NadekoBot.Modules { }); cgb.CreateCommand("bind") - .Description("Bind a trello bot to a certain channel. Bot will operate only in 1 channel at a time") + .Description("Bind a trello bot to a single channel. You will receive notifications from your board when somethign is added or edited.") .Parameter("board_id", Discord.Commands.ParameterType.Required) .Do(async e => { if (e.User.Id != NadekoBot.OwnerID) return; diff --git a/NadekoBot/NadekoBot.csproj b/NadekoBot/NadekoBot.csproj index fe385cef..ec727936 100644 --- a/NadekoBot/NadekoBot.csproj +++ b/NadekoBot/NadekoBot.csproj @@ -12,21 +12,20 @@ v4.5.2 512 true - true + false C:\Users\Master\Desktop\NadekoBot\ true - Web - true + Disk + false Foreground 7 Days false false true - http://www.github.com/Kwoth/NadekoBot/ - true publish.htm - 1 + true + 2 1.0.0.%2a false true @@ -64,10 +63,6 @@ true - - ..\packages\VideoLibrary.1.3.1\lib\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\libvideo.dll - True - ..\packages\Manatee.Json.3.2.1\lib\net45\Manatee.Json.dll True @@ -129,6 +124,10 @@ ..\packages\taglib.2.1.0.0\lib\taglib-sharp.dll True + + ..\packages\YoutubeExtractor.0.10.10\lib\net35\YoutubeExtractor.dll + True + diff --git a/NadekoBot/packages.config b/NadekoBot/packages.config index 61a5c710..f3f8c5bd 100644 --- a/NadekoBot/packages.config +++ b/NadekoBot/packages.config @@ -12,4 +12,6 @@ + + \ No newline at end of file