From d51f315a8da246c3852017b4a1c127a29a43811f Mon Sep 17 00:00:00 2001 From: uzvkl Date: Mon, 20 May 2019 03:00:44 +0200 Subject: Begin Testing --- DiscordBot/CommandHandler.cs | 100 +++++++++++++++++++++---------------------- 1 file changed, 50 insertions(+), 50 deletions(-) (limited to 'DiscordBot') diff --git a/DiscordBot/CommandHandler.cs b/DiscordBot/CommandHandler.cs index 0f6aa7e..b41756f 100644 --- a/DiscordBot/CommandHandler.cs +++ b/DiscordBot/CommandHandler.cs @@ -1,32 +1,30 @@ - +#region + using System; using System.Collections.Generic; -using System.IO; using System.Linq; -using System.Net; using System.Net.Http; using System.Reflection; using System.Threading.Tasks; -using Discord; using Discord.Commands; using Discord.WebSocket; +#endregion + namespace DiscordBot { public class CommandHandler { + private static readonly HttpClient _HttpClient = new HttpClient(); private readonly DiscordSocketClient _client; private readonly CommandService _commands; - private static readonly HttpClient _HttpClient = new HttpClient(); - public CommandHandler(DiscordSocketClient client, CommandService commands) - { + public CommandHandler(DiscordSocketClient client, CommandService commands) { _commands = commands; _client = client; } - public async Task InstallCommandsAsync() - { + public Task InstallCommandsAsync() { // Hook the MessageReceived event into our command handler _client.MessageReceived += HandleCommandAsync; @@ -38,24 +36,49 @@ namespace DiscordBot // // If you do not use Dependency Injection, pass null. // See Dependency Injection guide for more information. - await _commands.AddModulesAsync(assembly: Assembly.GetEntryAssembly(), - services: null); + return _commands.AddModulesAsync(Assembly.GetEntryAssembly(), + null); + } + + + private static async Task SendCommand(string name, string command, string url) { + command = command.Remove(0, 1); + var args = command.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries); + + string cmdContent = string.Empty; + if (args.Length > 1) { + cmdContent = "\"" + args.Skip(1).Aggregate((s, n) => s + "\", \"" + n) + "\""; + } + + var values = new Dictionary { + {"Name", name}, + {"CmdIdentifier", args.First()}, + {"CmdTexts", "[" + cmdContent + "]"} + }; + + var content = new FormUrlEncodedContent(values); + + var response = await _HttpClient.PostAsync(url, content); + + return await response.Content.ReadAsStringAsync(); } - private async Task HandleCommandAsync(SocketMessage messageParam) - { + private async Task HandleCommandAsync(SocketMessage messageParam) { // Don't process the command if it was a system message var message = messageParam as SocketUserMessage; - if (message == null) return; + if (message == null) { + return; + } // Create a number to track where the prefix ends and the command begins - int argPos = 0; + var argPos = 0; // Determine if the message is a command based on the prefix and make sure no bots trigger commands if (!(message.HasCharPrefix('!', ref argPos) || - message.HasMentionPrefix(_client.CurrentUser, ref argPos)) || - message.Author.IsBot) + message.HasMentionPrefix(_client.CurrentUser, ref argPos)) || + message.Author.IsBot) { return; + } // Create a WebSocket-based command context based on the message var context = new SocketCommandContext(_client, message); @@ -66,47 +89,24 @@ namespace DiscordBot // Keep in mind that result does not indicate a return value // rather an object stating if the command executed successfully. var result = await _commands.ExecuteAsync( - context: context, - argPos: argPos, - services: null); + context, + argPos, + null); // Optionally, we may inform the user if the command fails // to be executed; however, this may not always be desired, // as it may clog up the request queue should a user spam a // command. - if (result.Error == CommandError.UnknownCommand) - { - var response = await SendCommand(message.Author.Username, message.Content,"https://kobert.dev/api/dsa/commands"); + if (result.Error == CommandError.UnknownCommand) { + string response = await SendCommand(message.Author.Username, message.Content, + "https://kobert.dev/api/dsa/commands"); //var response = "invalid"; await context.Channel.SendMessageAsync(response); } - else if (!result.IsSuccess) await context.Channel.SendMessageAsync(result.ErrorReason); - } - - - - private static async Task SendCommand(string name, string command, string url) - { - command = command.Remove(0, 1); - var args = command.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); - - var cmdContent = string.Empty; - if (args.Length > 1) cmdContent = "\"" + args.Skip(1).Aggregate((s, n) => s + "\", \"" + n) + "\""; - - var values = new Dictionary - { - { "Name", name }, - { "CmdIdentifier", args.First()}, - { "CmdTexts", "[" + cmdContent + "]"} - }; - - var content = new FormUrlEncodedContent(values); - - var response = await _HttpClient.PostAsync(url, content); - - return await response.Content.ReadAsStringAsync(); + else if (!result.IsSuccess) { + await context.Channel.SendMessageAsync(result.ErrorReason); + } } - } -} +} \ No newline at end of file -- cgit v1.2.3-70-g09d2