|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- ---
- uid: Guides.Commands.Preconditions
- title: Preconditions
- ---
-
- # Preconditions
-
- Preconditions serve as a permissions system for your Commands. Keep in
- mind, however, that they are not limited to _just_ permissions and can
- be as complex as you want them to be.
-
- There are two types of Preconditions you can use:
-
- * [PreconditionAttribute] can be applied to Modules, Groups, or Commands.
- * [ParameterPreconditionAttribute] can be applied to Parameters.
-
- You may visit their respective API documentation to find out more.
-
- [PreconditionAttribute]: xref:Discord.Commands.PreconditionAttribute
- [ParameterPreconditionAttribute]: xref:Discord.Commands.ParameterPreconditionAttribute
-
- ## Bundled Preconditions
-
- @Discord.Commands ships with several bundled Preconditions for you
- to use.
-
- * @Discord.Commands.RequireContextAttribute
- * @Discord.Commands.RequireOwnerAttribute
- * @Discord.Commands.RequireBotPermissionAttribute
- * @Discord.Commands.RequireUserPermissionAttribute
- * @Discord.Commands.RequireNsfwAttribute
-
- ## Custom Preconditions
-
- To write your own Precondition, create a new class that inherits from
- either [PreconditionAttribute] or [ParameterPreconditionAttribute]
- depending on your use.
-
- In order for your Precondition to function, you will need to override
- the [CheckPermissionsAsync] method.
-
- If the context meets the required parameters, return
- [PreconditionResult.FromSuccess], otherwise return
- [PreconditionResult.FromError] and include an error message if
- necessary.
-
- > [!NOTE]
- > Visual Studio can help you implement missing members
- > from the abstract class by using the "Implement Abstract Class"
- > IntelliSense hint.
-
- ### Example - Creating a Custom Precondition
-
- [!code-csharp[Custom Precondition](samples/require_owner.cs)]
-
- [CheckPermissionsAsync]: xref:Discord.Commands.PreconditionAttribute.CheckPermissionsAsync*
- [PreconditionResult.FromSuccess]: xref:Discord.Commands.PreconditionResult.FromSuccess*
- [PreconditionResult.FromError]: xref:Discord.Commands.PreconditionResult.FromError*
|