Browse Source

Improve precondition documentation

+ Add precondition usage sample
+ Add precondition group usage sample
+ Move precondition samples to its own sample folder
pull/1161/head
Still Hsu 7 years ago
parent
commit
94ca53ca31
No known key found for this signature in database GPG Key ID: 8601A145FDA95209
4 changed files with 38 additions and 1 deletions
  1. +26
    -1
      docs/guides/commands/preconditions.md
  2. +9
    -0
      docs/guides/commands/samples/preconditions/group_precondition.cs
  3. +3
    -0
      docs/guides/commands/samples/preconditions/precondition_usage.cs
  4. +0
    -0
      docs/guides/commands/samples/preconditions/require_owner.cs

+ 26
- 1
docs/guides/commands/preconditions.md View File

@@ -19,6 +19,31 @@ You may visit their respective API documentation to find out more.
[PreconditionAttribute]: xref:Discord.Commands.PreconditionAttribute
[ParameterPreconditionAttribute]: xref:Discord.Commands.ParameterPreconditionAttribute

## Using Preconditions

To use a precondition, simply apply any valid precondition candidate to
a command method signature as an attribute.

### Example - Using a Precondition

[!code-csharp[Precondition usage](samples/preconditions/precondition_usage.cs)]

### ORing Preconditions

When writing commands, you may want to allow some of them to be
executed when only some of the precondition checks are passed.

This is where the [Group] property of a precondition attribute comes in
handy. By assigning two or more preconditions to a group, the command
system will allow the command to be executed when one of the
precondition passes.

#### Example - ORing Preconditions

[!code-csharp[OR Precondition](samples/preconditions/group_precondition.cs)]

[Group]: xref:Discord.Commands.PreconditionAttribute.Group

## Bundled Preconditions

@Discord.Commands ships with several bundled Preconditions for you
@@ -51,7 +76,7 @@ necessary.

### Example - Creating a Custom Precondition

[!code-csharp[Custom Precondition](samples/require_owner.cs)]
[!code-csharp[Custom Precondition](samples/preconditions/require_owner.cs)]

[CheckPermissionsAsync]: xref:Discord.Commands.PreconditionAttribute.CheckPermissionsAsync*
[PreconditionResult.FromSuccess]: xref:Discord.Commands.PreconditionResult.FromSuccess*


+ 9
- 0
docs/guides/commands/samples/preconditions/group_precondition.cs View File

@@ -0,0 +1,9 @@
// The following example only requires the user to either have the
// Administrator permission in this guild or own the bot application.
[RequireUserPermission(GuildPermission.Administrator, Group = "Permission")]
[RequireOwner(Group = "Permission")]
public class AdminModule : ModuleBase<SocketCommandContext>
{
[Command("ban")]
public Task BanAsync(IUser user) => Context.Guild.AddBanAsync(user);
}

+ 3
- 0
docs/guides/commands/samples/preconditions/precondition_usage.cs View File

@@ -0,0 +1,3 @@
[RequireOwner]
[Command("echo")]
public Task EchoAsync(string input) => ReplyAsync(input);

docs/guides/commands/samples/require_owner.cs → docs/guides/commands/samples/preconditions/require_owner.cs View File


Loading…
Cancel
Save