private async Task RunCommandAsync(CoreMessage message, CommandInfo command, CommandUsageParser parser)
        {
            try
            {
                await Client.EventHandler.OnCommandRunAsync(message, command.Name, parser.Parameters);

#pragma warning disable CS8600, CS8602
                await(Task) parser.Overload !.Method.Invoke(command.Instance, parser.Parameters);
#pragma warning restore CS8600, CS8602
                await Client.EventHandler.OnCommandSuccessAsync(message, command.Name, parser.Parameters);
            }
            catch (Exception exception)
            {
                await Client.EventHandler.OnCommandErrorAsync(message, command.Name, parser.Parameters, exception);
            }
        }
        private async Task RunArgumentsAsync(Message message, CommandInfo command, string content)
        {
            var parser = new CommandUsageParser(command, message, content);

            try
            {
                parser.Run();
                await RunCommandAsync(message, command, parser);
            }
            catch (ArgumentException exception)
            {
                await Client.EventHandler.OnCommandArgumentExceptionAsync(message, command.Name, exception);
            }
            catch (Exception exception)
            {
                await Client.EventHandler.OnArgumentErrorAsync(message, command.Name, exception);
            }
        }
Пример #3
0
        private async Task RunArgumentsAsync(Message message, CommandInfo command, string content)
        {
            var parser = new CommandUsageParser(command, message, content);

            try
            {
                parser.Run();
                await RunCommandAsync(message, command, parser);
            }
            catch (ArgumentException exception)
            {
                await message.SendAsync(Client,
                                        $"Argument Error: {exception.InnerException?.Message ?? exception.Message}");
            }
            catch (Exception exception)
            {
                Console.Error.WriteLine($"[COMMANDS]: {exception.Message}\n{exception.StackTrace}");
                await message.SendAsync(Client, "Whoops! Something while processing arguments!");
            }
        }
Пример #4
0
        private async Task RunCommandAsync(Message message, CommandInfo command, CommandUsageParser parser)
        {
            try
            {
#pragma warning disable CS8600, CS8602
                await(Task) parser.Overload !.Method.Invoke(command.Instance, parser.Parameters);
#pragma warning restore CS8600, CS8602
            }
            catch (TargetInvocationException exception)
            {
                if (exception.InnerException == null)
                {
                    throw;
                }
                Console.Error.WriteLine($"[COMMANDS]: {exception.Message}\n{exception.StackTrace}");
                await message.SendAsync(Client, "Whoops! Something happened!");
            }
            catch (Exception exception)
            {
                Console.Error.WriteLine($"[COMMANDS]: {exception.Message}\n{exception.StackTrace}");
                await message.SendAsync(Client, "Whoops! Something happened while processing the command!");
            }
        }