Browse Source

Move samples to individual folders

pull/1161/head
Still Hsu 7 years ago
parent
commit
934dc370f5
No known key found for this signature in database GPG Key ID: 8601A145FDA95209
22 changed files with 87 additions and 49 deletions
  1. +2
    -2
      docs/_overwrites/Commands/ICommandContext.Inclusion.md
  2. +3
    -2
      docs/guides/commands/dependency-injection.md
  3. +4
    -4
      docs/guides/commands/intro.md
  4. +8
    -8
      docs/guides/commands/post-execution.md
  5. +0
    -0
      docs/guides/commands/samples/dependency-injection/dependency_map_setup.cs
  6. +37
    -0
      docs/guides/commands/samples/dependency-injection/dependency_module.cs
  7. +29
    -0
      docs/guides/commands/samples/dependency-injection/dependency_module_noinject.cs
  8. +0
    -30
      docs/guides/commands/samples/dependency_module.cs
  9. +0
    -0
      docs/guides/commands/samples/intro/command_handler.cs
  10. +0
    -0
      docs/guides/commands/samples/intro/empty-module.cs
  11. +0
    -0
      docs/guides/commands/samples/intro/groups.cs
  12. +0
    -0
      docs/guides/commands/samples/intro/module.cs
  13. +0
    -0
      docs/guides/commands/samples/post-execution/command_exception_log.cs
  14. +0
    -0
      docs/guides/commands/samples/post-execution/command_executed_adv_demo.cs
  15. +0
    -0
      docs/guides/commands/samples/post-execution/command_executed_demo.cs
  16. +0
    -0
      docs/guides/commands/samples/post-execution/customresult_base.cs
  17. +0
    -0
      docs/guides/commands/samples/post-execution/customresult_extended.cs
  18. +0
    -0
      docs/guides/commands/samples/post-execution/customresult_usage.cs
  19. +0
    -0
      docs/guides/commands/samples/post-execution/post-execution_basic.cs
  20. +0
    -0
      docs/guides/commands/samples/typereaders/typereader-register.cs
  21. +0
    -0
      docs/guides/commands/samples/typereaders/typereader.cs
  22. +4
    -3
      docs/guides/commands/typereaders.md

+ 2
- 2
docs/_overwrites/Commands/ICommandContext.Inclusion.md View File

@@ -1,5 +1,5 @@
An example of how this class is used the command system can be seen
below:

[!code[Sample module](../../guides/commands/samples/empty-module.cs)]
[!code[Command handler](../../guides/commands/samples/command_handler.cs)]
[!code[Sample module](../../guides/commands/samples/intro/empty-module.cs)]
[!code[Command handler](../../guides/commands/samples/intro/command_handler.cs)]

+ 3
- 2
docs/guides/commands/dependency-injection.md View File

@@ -19,7 +19,7 @@ DI when writing your modules.

### Example - Setting up Injection

[!code-csharp[IServiceProvider Setup](samples/dependency_map_setup.cs)]
[!code-csharp[IServiceProvider Setup](samples/dependency-injection/dependency_map_setup.cs)]

## Usage in Modules

@@ -41,6 +41,7 @@ manner.

### Example - Injection in Modules

[!code-csharp[IServiceProvider in Modules](samples/dependency_module.cs)]
[!code-csharp[Injection Modules](samples/dependency-injection/dependency_module.cs)]
[!code-csharp[Disallow Dependency Injection](samples/dependency-injection/dependency_module_noinject.cs)]

[DontInjectAttribute]: xref:Discord.Commands.DontInjectAttribute

+ 4
- 4
docs/guides/commands/intro.md View File

@@ -23,7 +23,7 @@ minimum.
> look over the properties in [CommandServiceConfig] and their default
> values.

[!code-csharp[Command Handler](samples/command_handler.cs)]
[!code-csharp[Command Handler](samples/intro/command_handler.cs)]

[Command Service]: xref:Discord.Commands.CommandService
[CommandServiceConfig]: xref:Discord.Commands.CommandServiceConfig
@@ -56,7 +56,7 @@ your module must:

By now, your module should look like this:

[!code-csharp[Empty Module](samples/empty-module.cs)]
[!code-csharp[Empty Module](samples/intro/empty-module.cs)]

> [!NOTE]
> [ModuleBase] is an `abstract` class, meaning that you may extend it
@@ -162,7 +162,7 @@ accessing the channel through the [Context] and sending a message.

> [!TIP]
> At this point, your module should look comparable to this example:
> [!code-csharp[Example Module](samples/module.cs)]
> [!code-csharp[Example Module](samples/intro/module.cs)]

#### Loading Modules Automatically

@@ -218,4 +218,4 @@ Submodules are "modules" that reside within another one. Typically,
submodules are used to create nested groups (although not required to
create nested groups).

[!code-csharp[Groups and Submodules](samples/groups.cs)]
[!code-csharp[Groups and Submodules](samples/intro/groups.cs)]

+ 8
- 8
docs/guides/commands/post-execution.md View File

@@ -13,7 +13,7 @@ for you to work with.
If you recall, in the [Command Guide], we have shown the following
example for executing and handling commands,

[!code[Command Handler](samples/command_handler.cs)]
[!code[Command Handler](samples/intro/command_handler.cs)]

You may notice that after we perform [ExecuteAsync], we store the
result and print it to the chat, essentially creating the most
@@ -21,7 +21,7 @@ fundamental form of a post-execution handler.

With this in mind, we could start doing things like the following,

[!code[Basic Command Handler](samples/post-execution_basic.cs)]
[!code[Basic Command Handler](samples/post-execution/post-execution_basic.cs)]

However, this may not always be preferred, because you are
creating your post-execution logic *with* the essential command
@@ -45,7 +45,7 @@ about this event is that it is not prone to `RunMode.Async`'s

Thus, we can begin working on code such as:

[!code[CommandExecuted demo](samples/command_executed_demo.cs)]
[!code[CommandExecuted demo](samples/post-execution/command_executed_demo.cs)]

So now we have a streamlined post-execution pipeline, great! What's
next? We can take this further by using [RuntimeResult].
@@ -69,7 +69,7 @@ class.
The following creates a bare-minimum required for a sub-class
of `RuntimeResult`,

[!code[Base Use](samples/customresult_base.cs)]
[!code[Base Use](samples/post-execution/customresult_base.cs)]

The sky is the limit from here. You can add any additional information
you would like regarding the execution result.
@@ -78,7 +78,7 @@ For example, you may want to add your result type or other
helpful information regarding the execution, or something
simple like static methods to help you create return types easily.

[!code[Extended Use](samples/customresult_extended.cs)]
[!code[Extended Use](samples/post-execution/customresult_extended.cs)]

After you're done creating your [RuntimeResult], you can
implement it in your command by marking the command return type to
@@ -91,11 +91,11 @@ implement it in your command by marking the command return type to

Here's an example of a command that utilizes such logic:

[!code[Usage](samples/customresult_usage.cs)]
[!code[Usage](samples/post-execution/customresult_usage.cs)]

And now we can check for it in our [CommandExecuted] handler:

[!code[Usage](samples/command_executed_adv_demo.cs)]
[!code[Usage](samples/post-execution/command_executed_adv_demo.cs)]

## CommandService.Log Event

@@ -110,7 +110,7 @@ as a [CommandException] type. The [CommandException] class allows
us to access the exception thrown, as well as the context
of the command.

[!code[Logger Sample](samples/command_exception_log.cs)]
[!code[Logger Sample](samples/post-execution/command_exception_log.cs)]

[CommandException]: xref:Discord.Commands.CommandException
[LogMessage.Exception]: xref:Discord.LogMessage.Exception


docs/guides/commands/samples/dependency_map_setup.cs → docs/guides/commands/samples/dependency-injection/dependency_map_setup.cs View File


+ 37
- 0
docs/guides/commands/samples/dependency-injection/dependency_module.cs View File

@@ -0,0 +1,37 @@
// After setting up dependency injection, modules will need to request
// the dependencies to let the library know to pass
// them along during execution.

// Dependency can be injected in two ways with Discord.Net.
// You may inject any required dependencies via...
// the module constructor
// -or-
// public settable properties

// Injection via constructor
public class DatabaseModule : ModuleBase<SocketCommandContext>
{
private readonly DatabaseService _database;
public DatabaseModule(DatabaseService database)
{
_database = database;
}

[Command("read")]
public async Task ReadFromDbAsync()
{
await ReplyAsync(_database.GetData());
}
}

// Injection via public settable properties
public class DatabaseModule : ModuleBase<SocketCommandContext>
{
public DatabaseService DbService { get; set; }

[Command("read")]
public async Task ReadFromDbAsync()
{
await ReplyAsync(_database.GetData());
}
}

+ 29
- 0
docs/guides/commands/samples/dependency-injection/dependency_module_noinject.cs View File

@@ -0,0 +1,29 @@
// Sometimes injecting dependencies automatically with the provided
// methods in the prior example may not be desired.

// You may explicitly tell Discord.Net to **not** inject the properties
// by either...
// restricting the access modifier
// -or-
// applying DontInjectAttribute to the property

// Restricting the access modifier of the property
public class ImageModule : ModuleBase<SocketCommandContext>
{
public ImageService ImageService { get; }
public ImageModule()
{
ImageService = new ImageService();
}
}

// Applying DontInjectAttribute
public class ImageModule : ModuleBase<SocketCommandContext>
{
[DontInject]
public ImageService ImageService { get; set; }
public ImageModule()
{
ImageService = new ImageService();
}
}

+ 0
- 30
docs/guides/commands/samples/dependency_module.cs View File

@@ -1,30 +0,0 @@
public class DatabaseModule : ModuleBase<SocketCommandContext>
{
private readonly DatabaseService _database;

// Dependencies can be injected via the constructor
public DatabaseModule(DatabaseService database)
{
_database = database;
}

[Command("read")]
public async Task ReadFromDbAsync()
{
await ReplyAsync(_database.GetData());
}
}

public class MixModule : ModuleBase<SocketCommandContext>
{
// Public settable properties will be injected
public AnnounceService AnnounceService { get; set; }

// Public properties without setters will not be injected
public ImageService ImageService { get; }

// Public properties annotated with [DontInject] will not
// be injected
[DontInject]
public NotificationService NotificationService { get; set; }
}

docs/guides/commands/samples/command_handler.cs → docs/guides/commands/samples/intro/command_handler.cs View File


docs/guides/commands/samples/empty-module.cs → docs/guides/commands/samples/intro/empty-module.cs View File


docs/guides/commands/samples/groups.cs → docs/guides/commands/samples/intro/groups.cs View File


docs/guides/commands/samples/module.cs → docs/guides/commands/samples/intro/module.cs View File


docs/guides/commands/samples/command_exception_log.cs → docs/guides/commands/samples/post-execution/command_exception_log.cs View File


docs/guides/commands/samples/command_executed_adv_demo.cs → docs/guides/commands/samples/post-execution/command_executed_adv_demo.cs View File


docs/guides/commands/samples/command_executed_demo.cs → docs/guides/commands/samples/post-execution/command_executed_demo.cs View File


docs/guides/commands/samples/customresult_base.cs → docs/guides/commands/samples/post-execution/customresult_base.cs View File


docs/guides/commands/samples/customresult_extended.cs → docs/guides/commands/samples/post-execution/customresult_extended.cs View File


docs/guides/commands/samples/customresult_usage.cs → docs/guides/commands/samples/post-execution/customresult_usage.cs View File


docs/guides/commands/samples/post-execution_basic.cs → docs/guides/commands/samples/post-execution/post-execution_basic.cs View File


docs/guides/commands/samples/typereader-register.cs → docs/guides/commands/samples/typereaders/typereader-register.cs View File


docs/guides/commands/samples/typereader.cs → docs/guides/commands/samples/typereaders/typereader.cs View File


+ 4
- 3
docs/guides/commands/typereaders.md View File

@@ -18,8 +18,9 @@ By default, the following Types are supported arguments:
* `ulong`/`long`
* `float`, `double`, `decimal`
* `string`
* `enum`
* `DateTime`/`DateTimeOffset`/`TimeSpan`
* `Nullable<T>` where applicible
* `Nullable<T>` where applicable
* Any implementation of `IChannel`/`IMessage`/`IUser`/`IRole`

## Creating a Type Reader
@@ -49,7 +50,7 @@ necessary.

### Example - Creating a Type Reader

[!code-csharp[TypeReaders](samples/typereader.cs)]
[!code-csharp[TypeReaders](samples/typereaders/typereader.cs)]

## Registering a Type Reader

@@ -66,4 +67,4 @@ To register a TypeReader, invoke [CommandService.AddTypeReader].

### Example - Adding a Type Reader

[!code-csharp[Adding TypeReaders](samples/typereader-register.cs)]
[!code-csharp[Adding TypeReaders](samples/typereaders/typereader-register.cs)]

Loading…
Cancel
Save