Commit Graph

48 Commits

Author SHA1 Message Date
HelpfulStranger999
c67db88961 Cleaned up and refactored slightly 2018-03-30 15:57:22 -04:00
Christopher F
bb8ebc13d2 Add callback method for when a module class has been added (#934)
commit 5b047bf02b4299f34172cac05dc7e4a84ecc108c
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Fri Feb 2 22:22:00 2018 +0100

    [feature/OnModuleAdded] Quickstart fixes (#946)

    * Quickstart: fix minor derp

    * Other overdue fixes

commit bd3e9eee943b9092cc45217b19ff95bae359f888
Author: Christopher F <computerizedtaco@gmail.com>
Date:   Sat Jan 27 16:51:18 2018 -0500

    Resort usings in ModuleBase

commit 8042767579b337fdae7fe48e0a6ea2f007aef440
Author: Christopher F <computerizedtaco@gmail.com>
Date:   Sat Jan 27 16:41:39 2018 -0500

    Clean up removed owned IServiceProvider

commit 30066cb102ffbd65906ead72a377811aa501abba
Author: Christopher F <computerizedtaco@gmail.com>
Date:   Sat Jan 27 16:37:22 2018 -0500

    Remove redundant try-catch around OnModuleBuilding invocation

    If this exception is going to be rethrown, there's no reason to include
    a try-catch.

commit 60c7c31d4476c498a97ae0536ec5792f08efb89b
Author: Christopher F <computerizedtaco@gmail.com>
Date:   Sat Jan 27 16:36:27 2018 -0500

    Include the ModuleBuilder in OnModuleBuilding

    This allows modules hooking into OnModuleBuilding method to mutate
    theirselves at runtime.

commit b6a9ff57860ff3bddbad7ca850fd331529cb8e6e
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Mon Jan 22 13:17:14 2018 +0100

    #DERP

commit f623d19c68c5642a44898a561f77ed82d53fd103
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Mon Jan 22 13:15:31 2018 +0100

    Resolution for #937 because it's literally 4 lines of code

commit 8272c9675b0d63b4100aaf57f5067d635b68f5e6
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Mon Jan 22 11:39:28 2018 +0100

    Re-adjust quickstart

commit e30b9071351b69baa30a93a4851516dca9ea43cf
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Mon Jan 22 11:35:08 2018 +0100

    Undo experimental changes, request IServiceProvider instance everywhere instead

commit ad7e0a46c8709e845dfacdc298a893e22dc11567
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Fri Jan 19 03:40:27 2018 +0100

    Fix quickstart leftover from previous draft

commit e3349ef3d400bb3ad8cb28dd4234d5316a80bcc4
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Fri Jan 19 03:33:46 2018 +0100

    Doc comment on items

commit 81bd9111faaf98a52679daae863ab04dce96e63e
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Fri Jan 19 03:16:44 2018 +0100

    Add comment about the ServiceProviderFactory in the quickstart

commit 72b5e6c8a149d8e989b46351965daa14f8ca318c
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Fri Jan 19 03:10:40 2018 +0100

    Remove superfluous comments, provide simpler alternative for setting the ServiceProvider.

commit 74b17b0e04e2c413397a2e1b66ff814615326205
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Tue Jan 16 18:06:28 2018 +0100

    Experimental change for feedback

commit 7b100e99bb119be190006d1cd8e403776930e401
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Mon Jan 15 23:34:06 2018 +0100

    * Make the service provider parameters required

    * Adjust quickstart guide to reflect changes

commit 7f1b792946ac6b950922b06178aa5cc37d9f4144
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Mon Jan 15 20:04:37 2018 +0100

    I..... missed one.

commit 031b289d80604666dde62619e521af303203d48d
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Mon Jan 15 20:02:20 2018 +0100

    Rename method to more intuitive 'OnModuleBuilding'

commit 9a166ef1d0baecd21e4e5b965e2ac364feddbe2e
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Mon Jan 15 19:09:10 2018 +0100

    Add callback method for when a module class has been added to the CommandService.
2018-02-18 19:16:38 -05:00
vim2meta
5f46aef3a7 Ability to ignore unused parameters instead of failing the command. (#915)
* Addition of FailOnTooManyArgs

* Correct name & only pass in bool
2018-01-05 15:02:27 -05:00
Christopher F
8d533930fa Move CommandExecuted invoking up a scope for generic Task commands
Resovles #870
2017-11-10 15:26:58 -05:00
Christopher F
14fbe40cbc Add Async suffix to command-related Tasks (#804)
commit b7fb44a94fb1e75f696f281d6b201eba3f48e864
Author: Hsu Still <341464@gmail.com>
Date:   Sat Sep 2 14:34:18 2017 +0800

    Fix more async naming violation

commit e6912e2d020c69325826dbfa62c07cd1ef2cc45f
Author: Hsu Still <341464@gmail.com>
Date:   Sat Sep 2 14:23:04 2017 +0800

    Fix incorrect null xmldocs string

commit da8d23222d207853375c3512232d1d7fd3629cad
Author: Hsu Still <341464@gmail.com>
Date:   Sat Sep 2 14:17:12 2017 +0800

    Fix CheckPreconditionsAsync

commit 992407407a42fec9087c9ed18e0bf5de30dff82c
Author: Hsu Still <341464@gmail.com>
Date:   Sat Sep 2 14:07:12 2017 +0800

    Add Async suffix to abstract Task methods
2017-10-09 19:45:12 -04:00
Christopher F
e991715bac Added CommandService.CommandExecuted (#747) 2017-08-29 16:50:32 -04:00
RogueException
14dfc48df3 Style cleanup 2017-06-29 19:44:32 -03:00
Finite Reality
74f6a4b392 Allow commands to return a Task<RuntimeResult> (#466)
* Allow commands to return a Task<RuntimeResult>

This allows bot developers to centralize command result logic by
using result data whether the command as successful or not.

Example usage:
```csharp
var _result = await Commands.ExecuteAsync(context, argPos);
if (_result is RuntimeResult result)
{
    await message.Channel.SendMessageAsync(result.Reason);
}
else if (!_result.IsSuccess)
{
    // Previous error handling
}
```

The RuntimeResult class can be subclassed too, for example:
```csharp
var _result = await Commands.ExecuteAsync(context, argPos);
if (_result is MySubclassedResult result)
{
    var builder = new EmbedBuilder();
    for (var pair in result.Data)
    {
        builder.AddField(pair.Key, pair.Value, true);
    }
    await message.Channel.SendMessageAsync("", embed: builder);
}
else if (_result is RuntimeResult result)
{
    await message.Channel.SendMessageAsync(result.Reason);
}
else if (!_result.IsSuccess)
{
    // Previous error handling
}
```

* Make RuntimeResult's ctor protected

* Make RuntimeResult abstract

It never really made sense to have it instantiable in the first place,
frankly.
2017-06-29 19:21:05 -03:00
Finite Reality
b96748f9c3 Allow arbitrary attributes to be added to commands (#458)
* Allow arbitrary attributes to be added to commands

I still don't approve adding type info back into commands, so
I decided to use this solution for allowing arbitrary attributes to be
added to commands.

Add attributes property to ParameterBuilder

Add Attributes properties to info types

* Why on earth git

* Add using for system so that Attribute can be used
2017-06-29 18:30:26 -03:00
Finite Reality
032aba9129 Update commands with C#7 features (#689)
* C#7 features in commands, CommandInfo in ModuleBase

* Update TypeReaders with C#7 features and IServiceProvider

* Add best-choice command selection to CommandService

* Normalize type reader scores correctly

* Fix logic error and rebase onto dev

* Change GetMethod for SetMethod in ReflectionUtils

Should be checking against setters, not getters

* Ensure args/params scores do not overwhelm Priority

* Remove possibility of NaNs
2017-06-29 17:43:55 -03:00
Joe4evr
36ed2b49f0 PreconditionGroup quick fix
It didn't make much sense
2017-06-23 20:46:59 +02:00
Joe4evr
4a9c8168a9 Add grouping of preconditions to allow for flexible precondition logic. (#672)
* Add grouping of preconditions to allow for flexible precondition logic.

* Fix checking Module Preconditions twice (and none of the command's own)

* Fix command preconditions group 0 looping over every other precondition anyway #whoopsies

* Use custom message when a non-zero Precondition Group fails.

* Fix doc comment rendering.

* Refactor loops into local function

* Considering a new result type

* Switch to IReadOnlyCollection<T> and fix compiler errors

* Revert PreconditionResult -> IResult in return types - Change PreconditionResult to a class that PreconditionGroupResult inherits.

* Feedback on property name.

* Change grouping type int -> string

* Explicitly use an ordinal StringComparer

* Full stops on error messages

* Remove some sillyness.

* Remove unneeded using.
2017-06-23 11:28:22 -03:00
FiniteReality
1e888cde24 Fix CheckPreconditions giving empty service provider
Parameter preconditions were always getting the empty service provider,
even when a custom one was provided in ExecuteAsync, which means that
preconditions which use services cannot work properly.
2017-05-08 22:15:47 +01:00
RogueException
ba1982a3f9 Replaced DependencyMap with ServiceCollection and IServiceProvider (#625) 2017-05-04 12:52:26 -03:00
RogueException
a6469e9021 Add support for void-returning commands 2017-04-07 05:48:33 -03:00
RogueException
3fb21e06c2 Fixed RunMode.Sync running Async. Added ThrowOnError option. 2017-03-18 21:38:28 -03:00
RogueException
ba07484fe9 Removed Mixed RunMode 2017-03-18 12:23:51 -03:00
RogueException
a2b12520b2 Added CommandService logging 2017-03-18 12:14:14 -03:00
Finite Reality
2160e5dac8 Improve parameter precondition type safety (#532)
* Improve parameter precondition type safety

Also removes some terrible code which was left over when I first
implemented parameter preconditions. I don't know why that was there.

With this commit, parameter preconditions should be much safer as they
use generic methods instead of janky casting of objects.

* Remove generic CheckPreconditions method
2017-03-18 09:55:53 -03:00
RogueException
55e9c7da5c Merge pull request #482 from FiniteReality/issue/462
Ensure aliases are built in the correct order
2017-01-26 10:57:46 -04:00
RogueException
fe35400498 Cleanup 2017-01-24 11:42:28 -04:00
FiniteReality
c2b50b56d8 Ensure aliases are built in the correct order
Fixes #462
2017-01-15 21:19:08 +00:00
RogueException
e3da623f39 Cleaned up alias generation 2016-12-28 19:22:57 -04:00
RogueException
2c075e186a Added support for custom ModuleBase command contexts. Added SocketCommandContext/RpcCommandContext. 2016-12-23 16:57:30 -04:00
AntiTcb
bc985ada92 Modules without aliases now default to an empty string alias 2016-12-19 17:53:54 -05:00
RogueException
c1a9bdc142 Cleaned up alias permutations, fixed empty aliases 2016-12-18 18:14:39 -04:00
RogueException
5663e47db6 Added command separator char, improved passing search results to parser 2016-12-18 17:48:33 -04:00
RogueException
0d209b3fdb Added internal error for if a matching alias cannot be found 2016-12-18 14:18:33 -04:00
Christopher F
604d69fb7f Revert "Implement configurable command node separators" 2016-12-17 16:34:04 -05:00
FiniteReality
70d30efb94 Implement configurable command node separators
This fixes #304 over foxbot's PR for the same issue.
2016-12-09 10:31:57 +00:00
RogueException
803b65212e Merge pull request #364 from FiniteReality/feature/parameter-tweaks
Parameter preconditions and typereader overriding
2016-12-07 21:39:55 -04:00
FiniteReality
704b2b75f4 Fix changes after review 2016-12-03 23:51:20 +00:00
FiniteReality
f11f416024 Add IDependencyMap to parameter preconditions 2016-12-03 23:49:05 +00:00
FiniteReality
b7a5ee6542 Parameter preconditions and typereader overriding 2016-12-03 23:49:05 +00:00
james7132
6865318071 Fix IsSubmodule property's correctness 2016-11-28 20:40:44 -08:00
james7132
0771fcce63 Add Parent property to ModuleInfo 2016-11-28 20:40:44 -08:00
Christopher F
d72122eef9 Resolve conflicts. 2016-11-26 23:15:36 -05:00
Christopher F
ecc3d9c729 Add configuration option for case insensitive commands
Currently, commands are case-sensitive. This PR allows for commands to be case insensitive (which is now the default option).
2016-11-26 23:12:23 -05:00
Christopher F
55f6efd080 Merge branch 'issue/365'
Conflicts:
	src/Discord.Net.Commands/CommandService.cs
2016-11-26 22:26:47 -05:00
Christopher F
fb99b019a0 Fix issues with DefaultRunMode
For a command to use the DefaultRunMode, it must now have it's RunMode set to RunMode.Default (this is the default value on CommandAttribute now).
2016-11-26 22:04:02 -05:00
Christopher F
f9c5e229d0 Add CommandServiceConfig, DefaultRunMode
This adds an (optional) CommandServiceConfig, as well as a DefaultRunMode for commands.

This resolves #368 (for commands where a RunMode is not explicitly specified, a custom default value should be used)
2016-11-25 18:49:35 -05:00
FiniteReality
bc76e38ce5 Fix additional issue with aliases building incorrectly 2016-11-25 21:15:39 +00:00
FiniteReality
05fb81c617 Fix a bunch of issues with aliases 2016-11-20 20:20:23 +00:00
FiniteReality
fd5e237b41 Fix commands from being created with invalid aliases 2016-11-20 13:55:55 +00:00
RogueException
593ba46f1c Cleaned up command builders and async func names 2016-11-18 08:18:00 -04:00
FiniteReality
de645548a9 Complete command builders implementation
In theory this should just work, more testing is needed though
2016-11-18 09:14:19 +00:00
FiniteReality
6d46347ebc Finish implementation of command builders 2016-11-16 21:01:11 +00:00
FiniteReality
af433c82cc Complete builders, start work on using them 2016-11-15 21:28:04 +00:00