diff --git a/NadekoBot/Classes/NadekoStats.cs b/NadekoBot/Classes/NadekoStats.cs index 15953d61..eba50933 100644 --- a/NadekoBot/Classes/NadekoStats.cs +++ b/NadekoBot/Classes/NadekoStats.cs @@ -7,7 +7,6 @@ using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Diagnostics; -using System.IO; using System.Linq; using System.Net.Http; using System.Reflection; @@ -227,6 +226,7 @@ namespace NadekoBot DateTime dt; if (!commandTracker.TryGetValue(e.Message.Id, out dt)) return; +#if NADEKO_RELEASE try { if (e is CommandErrorEventArgs) @@ -247,7 +247,8 @@ namespace NadekoBot Console.WriteLine($">>COMMAND ENDED after *{(DateTime.UtcNow - dt).TotalSeconds}s*\nCmd: {e.Command.Text}\nMsg: {e.Message.Text}\nUsr: {e.User.Name} [{e.User.Id}]\nSrvr: {e.Server?.Name ?? "PRIVATE"} [{e.Server?.Id}]\n-----"); } } - catch { } + catch { } +#endif } private async void StatsCollector_RanCommand(object sender, CommandEventArgs e) diff --git a/NadekoBot/Classes/lib/sqlite3.dll b/NadekoBot/Classes/lib/sqlite3.dll new file mode 100644 index 00000000..c68c1f14 Binary files /dev/null and b/NadekoBot/Classes/lib/sqlite3.dll differ diff --git a/NadekoBot/Modules/Searches/Commands/StreamNotifications.cs b/NadekoBot/Modules/Searches/Commands/StreamNotifications.cs index ea864960..153c48db 100644 --- a/NadekoBot/Modules/Searches/Commands/StreamNotifications.cs +++ b/NadekoBot/Modules/Searches/Commands/StreamNotifications.cs @@ -7,84 +7,83 @@ using System; using System.Collections.Concurrent; using System.Linq; using System.Threading.Tasks; -using System.Timers; namespace NadekoBot.Modules.Searches.Commands { internal class StreamNotifications : DiscordCommand { - - private readonly Timer checkTimer = new Timer - { - Interval = new TimeSpan(0, 0, 15).TotalMilliseconds, - }; - private ConcurrentDictionary> cachedStatuses = new ConcurrentDictionary>(); private bool FirstPass { get; set; } = true; public StreamNotifications(DiscordModule module) : base(module) { - - checkTimer.Elapsed += (s, e) => Task.Run(async () => - { - - cachedStatuses.Clear(); - try - { - var streams = SpecificConfigurations.Default.AllConfigs.SelectMany(c => c.ObservingStreams); - if (!streams.Any()) return; - - var clr = Console.ForegroundColor; - Console.ForegroundColor = ConsoleColor.Blue; - Console.WriteLine($"Getting {streams.Count()} streams."); - Console.ForegroundColor = clr; - foreach (var stream in streams) - { - Tuple data; - try - { - data = await GetStreamStatus(stream).ConfigureAwait(false); - } - catch - { - continue; - } - - if (data.Item1 != stream.LastStatus) - { - stream.LastStatus = data.Item1; - if (FirstPass) - continue; - var server = NadekoBot.Client.GetServer(stream.ServerId); - var channel = server?.GetChannel(stream.ChannelId); - if (channel == null) - continue; - var msg = $"`{stream.Username}`'s stream is now " + - $"**{(data.Item1 ? "ONLINE" : "OFFLINE")}** with " + - $"**{data.Item2}** viewers."; - if (stream.LastStatus) - if (stream.Type == StreamNotificationConfig.StreamType.Hitbox) - msg += $"\n`Here is the Link:`【 http://www.hitbox.tv/{stream.Username}/ 】"; - else if (stream.Type == StreamNotificationConfig.StreamType.Twitch) - msg += $"\n`Here is the Link:`【 http://www.twitch.tv/{stream.Username}/ 】"; - else if (stream.Type == StreamNotificationConfig.StreamType.Beam) - msg += $"\n`Here is the Link:`【 http://www.beam.pro/{stream.Username}/ 】"; - else if (stream.Type == StreamNotificationConfig.StreamType.YoutubeGaming) - msg += $"\n`Here is the Link:`【 not implemented yet - {stream.Username} 】"; - await channel.SendMessage(msg).ConfigureAwait(false); - } - } - FirstPass = false; - - clr = Console.ForegroundColor; - Console.ForegroundColor = ConsoleColor.Blue; - Console.WriteLine($"Getting {streams.Count()} streams."); - Console.ForegroundColor = clr; - } - catch { } - }); //start checking only after ready, because we need all servers to be initialized - NadekoBot.OnReady += checkTimer.Start; + NadekoBot.OnReady += () => Task.Run(async () => + { + while (true) + { + cachedStatuses.Clear(); + try + { + var streams = SpecificConfigurations.Default.AllConfigs.SelectMany(c => c.ObservingStreams); + if (!streams.Any()) return; +#if NADEKO_RELEASE + var clr = Console.ForegroundColor; + Console.ForegroundColor = ConsoleColor.Blue; + Console.WriteLine($"Getting {streams.Count()} streams."); + Console.ForegroundColor = clr; +#endif + foreach (var stream in streams) + { + Tuple data; + try + { + data = await GetStreamStatus(stream).ConfigureAwait(false); + } + catch + { + continue; + } + + if (data.Item1 != stream.LastStatus) + { + stream.LastStatus = data.Item1; + if (FirstPass) + continue; + var server = NadekoBot.Client.GetServer(stream.ServerId); + var channel = server?.GetChannel(stream.ChannelId); + if (channel == null) + continue; + var msg = $"`{stream.Username}`'s stream is now " + + $"**{(data.Item1 ? "ONLINE" : "OFFLINE")}** with " + + $"**{data.Item2}** viewers."; + if (stream.LastStatus) + if (stream.Type == StreamNotificationConfig.StreamType.Hitbox) + msg += $"\n`Here is the Link:`【 http://www.hitbox.tv/{stream.Username}/ 】"; + else if (stream.Type == StreamNotificationConfig.StreamType.Twitch) + msg += $"\n`Here is the Link:`【 http://www.twitch.tv/{stream.Username}/ 】"; + else if (stream.Type == StreamNotificationConfig.StreamType.Beam) + msg += $"\n`Here is the Link:`【 http://www.beam.pro/{stream.Username}/ 】"; + else if (stream.Type == StreamNotificationConfig.StreamType.YoutubeGaming) + msg += $"\n`Here is the Link:`【 not implemented yet - {stream.Username} 】"; + await channel.SendMessage(msg).ConfigureAwait(false); + } + } + FirstPass = false; +#if NADEKO_RELEASE + clr = Console.ForegroundColor; + Console.ForegroundColor = ConsoleColor.Blue; + Console.WriteLine($"Done getting streams."); + Console.ForegroundColor = clr; +#endif + } + catch { } + finally + { + await Task.Delay(TimeSpan.FromSeconds(15)); + } + } + }); } private async Task> GetStreamStatus(StreamNotificationConfig stream, bool checkCache = true) diff --git a/NadekoBot/NadekoBot.cs b/NadekoBot/NadekoBot.cs index e5387849..829fc263 100644 --- a/NadekoBot/NadekoBot.cs +++ b/NadekoBot/NadekoBot.cs @@ -231,7 +231,7 @@ namespace NadekoBot #if NADEKO_RELEASE Client.ClientAPI.SentRequest += (s, e) => { - Console.WriteLine($"[Request sent in {e.Milliseconds}]"); + Console.WriteLine($"[Request of type {e.Request.GetType()} sent in {e.Milliseconds}]"); }; #endif PermissionsHandler.Initialize(); diff --git a/NadekoBot/NadekoBot.csproj b/NadekoBot/NadekoBot.csproj index 341f1850..223f778f 100644 --- a/NadekoBot/NadekoBot.csproj +++ b/NadekoBot/NadekoBot.csproj @@ -13,6 +13,9 @@ 512 true false + + + C:\Users\Master\Desktop\NadekoBot\ true Disk @@ -30,9 +33,6 @@ false true true - - - AnyCPU @@ -161,6 +161,9 @@ False lib\ScaredFingers.UnitsConversion.dll + + Classes\lib\sqlite3.dll + @@ -299,8 +302,12 @@ - - + + Designer + + + Designer + @@ -553,9 +560,7 @@ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - -