cleanup, better logging for shared nadeko
This commit is contained in:
parent
337110ca29
commit
7e059a63a0
@ -7,7 +7,6 @@ using System;
|
|||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
@ -227,6 +226,7 @@ namespace NadekoBot
|
|||||||
DateTime dt;
|
DateTime dt;
|
||||||
if (!commandTracker.TryGetValue(e.Message.Id, out dt))
|
if (!commandTracker.TryGetValue(e.Message.Id, out dt))
|
||||||
return;
|
return;
|
||||||
|
#if NADEKO_RELEASE
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (e is CommandErrorEventArgs)
|
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-----");
|
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)
|
private async void StatsCollector_RanCommand(object sender, CommandEventArgs e)
|
||||||
|
BIN
NadekoBot/Classes/lib/sqlite3.dll
Normal file
BIN
NadekoBot/Classes/lib/sqlite3.dll
Normal file
Binary file not shown.
@ -7,84 +7,83 @@ using System;
|
|||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Timers;
|
|
||||||
|
|
||||||
namespace NadekoBot.Modules.Searches.Commands
|
namespace NadekoBot.Modules.Searches.Commands
|
||||||
{
|
{
|
||||||
internal class StreamNotifications : DiscordCommand
|
internal class StreamNotifications : DiscordCommand
|
||||||
{
|
{
|
||||||
|
|
||||||
private readonly Timer checkTimer = new Timer
|
|
||||||
{
|
|
||||||
Interval = new TimeSpan(0, 0, 15).TotalMilliseconds,
|
|
||||||
};
|
|
||||||
|
|
||||||
private ConcurrentDictionary<string, Tuple<bool, string>> cachedStatuses = new ConcurrentDictionary<string, Tuple<bool, string>>();
|
private ConcurrentDictionary<string, Tuple<bool, string>> cachedStatuses = new ConcurrentDictionary<string, Tuple<bool, string>>();
|
||||||
private bool FirstPass { get; set; } = true;
|
private bool FirstPass { get; set; } = true;
|
||||||
|
|
||||||
public StreamNotifications(DiscordModule module) : base(module)
|
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<bool, string> 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
|
//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<bool, string> 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<Tuple<bool, string>> GetStreamStatus(StreamNotificationConfig stream, bool checkCache = true)
|
private async Task<Tuple<bool, string>> GetStreamStatus(StreamNotificationConfig stream, bool checkCache = true)
|
||||||
|
@ -231,7 +231,7 @@ namespace NadekoBot
|
|||||||
#if NADEKO_RELEASE
|
#if NADEKO_RELEASE
|
||||||
Client.ClientAPI.SentRequest += (s, e) =>
|
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
|
#endif
|
||||||
PermissionsHandler.Initialize();
|
PermissionsHandler.Initialize();
|
||||||
|
@ -13,6 +13,9 @@
|
|||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||||
|
<NuGetPackageImportStamp>
|
||||||
|
</NuGetPackageImportStamp>
|
||||||
|
<TargetFrameworkProfile />
|
||||||
<PublishUrl>C:\Users\Master\Desktop\NadekoBot\</PublishUrl>
|
<PublishUrl>C:\Users\Master\Desktop\NadekoBot\</PublishUrl>
|
||||||
<Install>true</Install>
|
<Install>true</Install>
|
||||||
<InstallFrom>Disk</InstallFrom>
|
<InstallFrom>Disk</InstallFrom>
|
||||||
@ -30,9 +33,6 @@
|
|||||||
<UseApplicationTrust>false</UseApplicationTrust>
|
<UseApplicationTrust>false</UseApplicationTrust>
|
||||||
<PublishWizardCompleted>true</PublishWizardCompleted>
|
<PublishWizardCompleted>true</PublishWizardCompleted>
|
||||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||||
<NuGetPackageImportStamp>
|
|
||||||
</NuGetPackageImportStamp>
|
|
||||||
<TargetFrameworkProfile />
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
@ -161,6 +161,9 @@
|
|||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>lib\ScaredFingers.UnitsConversion.dll</HintPath>
|
<HintPath>lib\ScaredFingers.UnitsConversion.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="sqlite3">
|
||||||
|
<HintPath>Classes\lib\sqlite3.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Drawing" />
|
<Reference Include="System.Drawing" />
|
||||||
<Reference Include="System.Net" />
|
<Reference Include="System.Net" />
|
||||||
@ -299,8 +302,12 @@
|
|||||||
<Compile Include="Classes\NadekoStats.cs" />
|
<Compile Include="Classes\NadekoStats.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="App.config" />
|
<None Include="App.config">
|
||||||
<None Include="packages.config" />
|
<SubType>Designer</SubType>
|
||||||
|
</None>
|
||||||
|
<None Include="packages.config">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<BootstrapperPackage Include=".NETFramework,Version=v4.5.2">
|
<BootstrapperPackage Include=".NETFramework,Version=v4.5.2">
|
||||||
@ -553,9 +560,7 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ErrorText>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}.</ErrorText>
|
<ErrorText>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}.</ErrorText>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Error Condition="!Exists('..\packages\SQLitePCL.native.sqlite3.v110_xp.0.9.2\build\SQLitePCL.native.sqlite3.v110_xp.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SQLitePCL.native.sqlite3.v110_xp.0.9.2\build\SQLitePCL.native.sqlite3.v110_xp.targets'))" />
|
|
||||||
</Target>
|
</Target>
|
||||||
<Import Project="..\packages\SQLitePCL.native.sqlite3.v110_xp.0.9.2\build\SQLitePCL.native.sqlite3.v110_xp.targets" Condition="Exists('..\packages\SQLitePCL.native.sqlite3.v110_xp.0.9.2\build\SQLitePCL.native.sqlite3.v110_xp.targets')" />
|
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
<Target Name="BeforeBuild">
|
<Target Name="BeforeBuild">
|
||||||
|
@ -11,11 +11,6 @@
|
|||||||
<package id="Newtonsoft.Json" version="8.0.3" targetFramework="net46" />
|
<package id="Newtonsoft.Json" version="8.0.3" targetFramework="net46" />
|
||||||
<package id="RestSharp" version="105.2.3" targetFramework="net452" />
|
<package id="RestSharp" version="105.2.3" targetFramework="net452" />
|
||||||
<package id="sqlite-net" version="1.0.8" targetFramework="net452" />
|
<package id="sqlite-net" version="1.0.8" targetFramework="net452" />
|
||||||
<package id="SQLitePCL.bundle_green" version="0.9.2" targetFramework="net452" />
|
|
||||||
<package id="SQLitePCL.native.sqlite3.v110_xp" version="0.9.2" targetFramework="net452" />
|
|
||||||
<package id="SQLitePCL.plugin.sqlite3.net45" version="0.9.2" targetFramework="net452" />
|
|
||||||
<package id="SQLitePCL.raw" version="0.9.2" targetFramework="net452" />
|
|
||||||
<package id="System.Data.SQLite" version="1.0.102.0" targetFramework="net452" />
|
|
||||||
<package id="taglib" version="2.1.0.0" targetFramework="net452" />
|
<package id="taglib" version="2.1.0.0" targetFramework="net452" />
|
||||||
<package id="VideoLibrary" version="1.3.3" targetFramework="net452" />
|
<package id="VideoLibrary" version="1.3.3" targetFramework="net452" />
|
||||||
</packages>
|
</packages>
|
Loading…
Reference in New Issue
Block a user