diff --git a/src/Discord.Net.Commands/Attributes/Preconditions/RequireBotPermissionAttribute.cs b/src/Discord.Net.Commands/Attributes/Preconditions/RequireBotPermissionAttribute.cs
index d3c598591..914978192 100644
--- a/src/Discord.Net.Commands/Attributes/Preconditions/RequireBotPermissionAttribute.cs
+++ b/src/Discord.Net.Commands/Attributes/Preconditions/RequireBotPermissionAttribute.cs
@@ -5,17 +5,38 @@ using System.Threading.Tasks;
namespace Discord.Commands
{
+ ///
+ /// This attribute requires that the bot has a speicifed permission in the channel a command is invoked in.
+ ///
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class RequireBotPermissionAttribute : PreconditionAttribute
{
public GuildPermission? GuildPermission { get; }
public ChannelPermission? ChannelPermission { get; }
+ ///
+ /// Require that the bot account has a specified GuildPermission
+ ///
+ /// This precondition will always fail if the command is being invoked in a private channel.
+ /// The GuildPermission that the bot must have. Multiple permissions can be specified by ORing or ANDing the permissions together.
public RequireBotPermissionAttribute(GuildPermission permission)
{
GuildPermission = permission;
ChannelPermission = null;
}
+ ///
+ /// Require that the bot account has a specified ChannelPermission.
+ ///
+ /// The ChannelPermission that the bot must have. Multiple permissions can be specified by ORing or ANDing the permissions together.
+ ///
+ ///
+ /// [Command("permission")]
+ /// [RequireBotPermission(ChannelPermission.ManageMessages)]
+ /// public async Task Purge()
+ /// {
+ /// }
+ ///
+ ///
public RequireBotPermissionAttribute(ChannelPermission permission)
{
ChannelPermission = permission;
diff --git a/src/Discord.Net.Commands/Attributes/Preconditions/RequireContextAttribute.cs b/src/Discord.Net.Commands/Attributes/Preconditions/RequireContextAttribute.cs
index 1cd32e72e..beadbbc89 100644
--- a/src/Discord.Net.Commands/Attributes/Preconditions/RequireContextAttribute.cs
+++ b/src/Discord.Net.Commands/Attributes/Preconditions/RequireContextAttribute.cs
@@ -11,11 +11,27 @@ namespace Discord.Commands
Group = 0x04
}
+ ///
+ /// Require that the command be invoked in a specified context.
+ ///
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class RequireContextAttribute : PreconditionAttribute
{
public ContextType Contexts { get; }
+ ///
+ /// Require that the command be invoked in a specified context.
+ ///
+ /// The type of context the command can be invoked in. Multiple contexts can be speicifed by ORing the contexts together.
+ ///
+ ///
+ /// [Command("private_only")]
+ /// [RequireContext(ContextType.DM | ContextType.Group)]
+ /// public async Task PrivateOnly()
+ /// {
+ /// }
+ ///
+ ///
public RequireContextAttribute(ContextType contexts)
{
Contexts = contexts;
diff --git a/src/Discord.Net.Commands/Attributes/Preconditions/RequireOwnerAttribute.cs b/src/Discord.Net.Commands/Attributes/Preconditions/RequireOwnerAttribute.cs
index e03e3971b..beb8dfdd0 100644
--- a/src/Discord.Net.Commands/Attributes/Preconditions/RequireOwnerAttribute.cs
+++ b/src/Discord.Net.Commands/Attributes/Preconditions/RequireOwnerAttribute.cs
@@ -6,6 +6,10 @@ using Discord;
namespace Discord.Commands
{
+ ///
+ /// Require that the command is invoked by the owner of the bot.
+ ///
+ /// This precondition will only work if the bot is a bot account.
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class RequireOwnerAttribute : PreconditionAttribute
{
diff --git a/src/Discord.Net.Commands/Attributes/Preconditions/RequireUserPermissionAttribute.cs b/src/Discord.Net.Commands/Attributes/Preconditions/RequireUserPermissionAttribute.cs
index 2e19b61cf..17cf234aa 100644
--- a/src/Discord.Net.Commands/Attributes/Preconditions/RequireUserPermissionAttribute.cs
+++ b/src/Discord.Net.Commands/Attributes/Preconditions/RequireUserPermissionAttribute.cs
@@ -3,17 +3,39 @@ using System.Threading.Tasks;
namespace Discord.Commands
{
+ ///
+ /// This attribute requires that the user invoking the command has a specified permission.
+ ///
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
public class RequireUserPermissionAttribute : PreconditionAttribute
{
public GuildPermission? GuildPermission { get; }
public ChannelPermission? ChannelPermission { get; }
+ ///
+ /// Require that the user invoking the command has a specified GuildPermission
+ ///
+ /// This precondition will always fail if the command is being invoked in a private channel.
+ /// The GuildPermission that the user must have. Multiple permissions can be specified by ORing or ANDing the permissions together.
public RequireUserPermissionAttribute(GuildPermission permission)
{
GuildPermission = permission;
ChannelPermission = null;
}
+ ///
+ /// Require that the user invoking the command has a specified ChannelPermission.
+ ///
+ /// The ChannelPermission that the user must have. Multiple permissions can be specified by ORing or ANDing the permissions together.
+ ///
+ ///
+ /// [Command("permission")]
+ /// [RequireUserPermission(ChannelPermission.ReadMessageHistory & ChannelPermission.ReadMessages)]
+ /// public async Task HasPermission()
+ /// {
+ /// await ReplyAsync("You can read messages and the message history!");
+ /// }
+ ///
+ ///
public RequireUserPermissionAttribute(ChannelPermission permission)
{
ChannelPermission = permission;