updated discord.net, moved command stuff to commandhandler
This commit is contained in:
		| @@ -19,11 +19,12 @@ namespace NadekoBot | ||||
|         private Logger _log; | ||||
|  | ||||
|         public static CommandService Commands { get; private set; } | ||||
|         public static CommandHandler CommandHandler { get; private set; } | ||||
|         public static DiscordSocketClient Client { get; private set; } | ||||
|         public static Localization Localizer { get; private set; } | ||||
|         public static BotCredentials Credentials { get; private set; } | ||||
|  | ||||
|         public static GoogleApiService Google { get; set; } | ||||
|         public static GoogleApiService Google { get; private set; } | ||||
|         public static StatsService Stats { get; private set; } | ||||
|  | ||||
|         public async Task RunAsync(string[] args) | ||||
| @@ -44,6 +45,7 @@ namespace NadekoBot | ||||
|             Localizer = new Localization(); | ||||
|             Google = new GoogleApiService(); | ||||
|             Stats = new StatsService(Client); | ||||
|             CommandHandler = new CommandHandler(Client, Commands); | ||||
|             _log = LogManager.GetCurrentClassLogger(); | ||||
|  | ||||
|             //setup DI | ||||
| @@ -61,7 +63,6 @@ namespace NadekoBot | ||||
|  | ||||
|             //load commands | ||||
|             await Commands.LoadAssembly(Assembly.GetEntryAssembly(), depMap); | ||||
|             Client.MessageReceived += Client_MessageReceived; | ||||
|  | ||||
|             Console.WriteLine(await Stats.Print()); | ||||
|  | ||||
| @@ -83,57 +84,10 @@ namespace NadekoBot | ||||
|  | ||||
|                 LogManager.Configuration = logConfig; | ||||
|             } | ||||
|             catch (Exception ex) { | ||||
|             catch (Exception ex) | ||||
|             { | ||||
|                 Console.WriteLine(ex); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         private Task Client_MessageReceived(IMessage umsg) | ||||
|         { | ||||
|             var usrMsg = umsg as IUserMessage; | ||||
|             if (usrMsg == null) | ||||
|                 return Task.CompletedTask; | ||||
|             var throwaway = Task.Run(async () => | ||||
|             { | ||||
|                 var sw = new Stopwatch(); | ||||
|                 sw.Start(); | ||||
|                 var t = await Commands.Execute(usrMsg, usrMsg.Content); | ||||
|                 sw.Stop(); | ||||
|                 var channel = (umsg.Channel as ITextChannel); | ||||
|                 if (t.IsSuccess) | ||||
|                 { | ||||
|  | ||||
|                     _log.Info("Command Executed after {4}s\n\t" + | ||||
|                               "User: {0}\n\t" + | ||||
|                               "Server: {1}\n\t" + | ||||
|                               "Channel: {2}\n\t" + | ||||
|                               "Message: {3}", | ||||
|                               umsg.Author + " [" + umsg.Author.Id + "]", // {0} | ||||
|                               (channel == null ? "PRIVATE" : channel.Guild.Name + " [" + channel.Guild.Id + "]"), // {1} | ||||
|                               (channel == null ? "PRIVATE" : channel.Name + " [" + channel.Id + "]"), //{2} | ||||
|                               umsg.Content, // {3} | ||||
|                               sw.Elapsed.TotalSeconds // {4} | ||||
|                               ); | ||||
|                 } | ||||
|                 else if (!t.IsSuccess && t.Error != CommandError.UnknownCommand) | ||||
|                 { | ||||
|                     _log.Warn("Command Errored after {5}s\n\t" + | ||||
|                               "User: {0}\n\t" + | ||||
|                               "Server: {1}\n\t" + | ||||
|                               "Channel: {2}\n\t" + | ||||
|                               "Message: {3}\n\t" +  | ||||
|                               "Error: {4}", | ||||
|                               umsg.Author + " [" + umsg.Author.Id + "]", // {0} | ||||
|                               (channel == null ? "PRIVATE" : channel.Guild.Name + " [" + channel.Guild.Id + "]"), // {1} | ||||
|                               (channel == null ? "PRIVATE" : channel.Name + " [" + channel.Id + "]"), //{2} | ||||
|                               umsg.Content,// {3} | ||||
|                               t.ErrorReason, // {4} | ||||
|                               sw.Elapsed.TotalSeconds //{5} | ||||
|                               ); | ||||
|                 } | ||||
|             }); | ||||
|  | ||||
|             return Task.CompletedTask; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
							
								
								
									
										78
									
								
								src/NadekoBot/Services/CommandHandler.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								src/NadekoBot/Services/CommandHandler.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,78 @@ | ||||
| using Discord.WebSocket; | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using System.Threading.Tasks; | ||||
| using Discord; | ||||
| using NLog; | ||||
| using System.Diagnostics; | ||||
| using Discord.Commands; | ||||
|  | ||||
| namespace NadekoBot.Services | ||||
| { | ||||
|     public class CommandHandler | ||||
|     { | ||||
|         private DiscordSocketClient _client; | ||||
|         private CommandService _commandService; | ||||
|         private Logger _log; | ||||
|  | ||||
|         public CommandHandler(DiscordSocketClient client, CommandService commandService) | ||||
|         { | ||||
|             _client = client; | ||||
|             _commandService = commandService; | ||||
|             _log = LogManager.GetCurrentClassLogger(); | ||||
|  | ||||
|             _client.MessageReceived += MessageReceivedHandler; | ||||
|         } | ||||
|  | ||||
|         private Task MessageReceivedHandler(IMessage msg) | ||||
|         { | ||||
|             var usrMsg = msg as IUserMessage; | ||||
|             if (usrMsg == null) | ||||
|                 return Task.CompletedTask; | ||||
|             var throwaway = Task.Run(async () => | ||||
|             { | ||||
|                 var sw = new Stopwatch(); | ||||
|                 sw.Start(); | ||||
|                 var t = await _commandService.Execute(usrMsg, usrMsg.Content, MultiMatchHandling.Best); | ||||
|                 var command = t.Item1; | ||||
|                 var result = t.Item2; | ||||
|                 sw.Stop(); | ||||
|                 var channel = (usrMsg.Channel as ITextChannel); | ||||
|                 if (result.IsSuccess) | ||||
|                 { | ||||
|                     _log.Info("Command Executed after {4}s\n\t" + | ||||
|                               "User: {0}\n\t" + | ||||
|                               "Server: {1}\n\t" + | ||||
|                               "Channel: {2}\n\t" + | ||||
|                               "Message: {3}", | ||||
|                               usrMsg.Author + " [" + usrMsg.Author.Id + "]", // {0} | ||||
|                               (channel == null ? "PRIVATE" : channel.Guild.Name + " [" + channel.Guild.Id + "]"), // {1} | ||||
|                               (channel == null ? "PRIVATE" : channel.Name + " [" + channel.Id + "]"), // {2} | ||||
|                               usrMsg.Content, // {3} | ||||
|                               sw.Elapsed.TotalSeconds // {4} | ||||
|                               ); | ||||
|                 } | ||||
|                 else if (!result.IsSuccess && result.Error != CommandError.UnknownCommand) | ||||
|                 { | ||||
|                     _log.Warn("Command Errored after {5}s\n\t" + | ||||
|                               "User: {0}\n\t" + | ||||
|                               "Server: {1}\n\t" + | ||||
|                               "Channel: {2}\n\t" + | ||||
|                               "Message: {3}\n\t" + | ||||
|                               "Error: {4}", | ||||
|                               usrMsg.Author + " [" + usrMsg.Author.Id + "]", // {0} | ||||
|                               (channel == null ? "PRIVATE" : channel.Guild.Name + " [" + channel.Guild.Id + "]"), // {1} | ||||
|                               (channel == null ? "PRIVATE" : channel.Name + " [" + channel.Id + "]"), // {2} | ||||
|                               usrMsg.Content,// {3} | ||||
|                               result.ErrorReason, // {4} | ||||
|                               sw.Elapsed.TotalSeconds // {5} | ||||
|                               ); | ||||
|                 } | ||||
|             }); | ||||
|  | ||||
|             return Task.CompletedTask; | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user