Browse Source

add perms-v2 attributes and properties, add deprecation messages

pull/2222/head
Cenngo 3 years ago
parent
commit
394c70e0d4
7 changed files with 195 additions and 0 deletions
  1. +25
    -0
      src/Discord.Net.Interactions/Attributes/DefaultMemberPermissionAttribute.cs
  2. +1
    -0
      src/Discord.Net.Interactions/Attributes/DefaultPermissionAttribute.cs
  3. +25
    -0
      src/Discord.Net.Interactions/Attributes/EnabledInDmAttribute.cs
  4. +38
    -0
      src/Discord.Net.Interactions/Builders/Commands/ContextCommandBuilder.cs
  5. +38
    -0
      src/Discord.Net.Interactions/Builders/Commands/SlashCommandBuilder.cs
  6. +38
    -0
      src/Discord.Net.Interactions/Builders/ModuleBuilder.cs
  7. +30
    -0
      src/Discord.Net.Interactions/Builders/ModuleClassBuilder.cs

+ 25
- 0
src/Discord.Net.Interactions/Attributes/DefaultMemberPermissionAttribute.cs View File

@@ -0,0 +1,25 @@
using System;

namespace Discord.Interactions
{
/// <summary>
/// Sets the <see cref="IApplicationCommandInfo.DefaultMemberPermissions"/> of an application command or module.
/// </summary>
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class DefaultMemberPermissionsAttribute : Attribute
{
/// <summary>
/// Gets the default permission required to use this command.
/// </summary>
public GuildPermission Permissions { get; }

/// <summary>
/// Sets the <see cref="IApplicationCommandInfo.DefaultMemberPermissions"/> of an application command or module.
/// </summary>
/// <param name="permissions">The default permission required to use this command.</param>
public DefaultMemberPermissionsAttribute(GuildPermission permissions)
{
Permissions = permissions;
}
}
}

+ 1
- 0
src/Discord.Net.Interactions/Attributes/DefaultPermissionAttribute.cs View File

@@ -6,6 +6,7 @@ namespace Discord.Interactions
/// Set the "Default Permission" property of an Application Command.
/// </summary>
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
[Obsolete($"Soon to be deprecated, use Permissions-v2 attributes like {nameof(EnabledInDmAttribute)} and {nameof(DefaultMemberPermissionsAttribute)}")]
public class DefaultPermissionAttribute : Attribute
{
/// <summary>


+ 25
- 0
src/Discord.Net.Interactions/Attributes/EnabledInDmAttribute.cs View File

@@ -0,0 +1,25 @@
using System;

namespace Discord.Interactions
{
/// <summary>
/// Sets the <see cref="IApplicationCommandInfo.IsEnabledInDm"/> property of an application command or module.
/// </summary>
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class EnabledInDmAttribute : Attribute
{
/// <summary>
/// Gets whether or not this command can be used in DMs.
/// </summary>
public bool IsEnabled { get; }

/// <summary>
/// Sets the <see cref="IApplicationCommandInfo.IsEnabledInDm"/> property of an application command or module.
/// </summary>
/// <param name="isEnabled">Whether or not this command can be used in DMs.</param>
public EnabledInDmAttribute(bool isEnabled)
{
IsEnabled = isEnabled;
}
}
}

+ 38
- 0
src/Discord.Net.Interactions/Builders/Commands/ContextCommandBuilder.cs View File

@@ -17,8 +17,19 @@ namespace Discord.Interactions.Builders
/// <summary>
/// Gets the default permission of this command.
/// </summary>
[Obsolete($"To be deprecated soon, use {nameof(IsEnabledInDm)} and {nameof(DefaultMemberPermissions)} instead.")]
public bool DefaultPermission { get; set; } = true;

/// <summary>
/// Gets whether this command can be used in DMs.
/// </summary>
public bool IsEnabledInDm { get; set; } = true;

/// <summary>
/// Gets the default permissions needed for executing this command.
/// </summary>
public GuildPermission? DefaultMemberPermissions { get; set; } = null;

internal ContextCommandBuilder (ModuleBuilder module) : base(module) { }

/// <summary>
@@ -49,6 +60,7 @@ namespace Discord.Interactions.Builders
/// <returns>
/// The builder instance.
/// </returns>
[Obsolete($"To be deprecated soon, use {nameof(SetEnabledInDm)} and {nameof(WithDefaultMemberPermissions)} instead.")]
public ContextCommandBuilder SetDefaultPermission (bool defaultPermision)
{
DefaultPermission = defaultPermision;
@@ -70,6 +82,32 @@ namespace Discord.Interactions.Builders
return this;
}

/// <summary>
/// Sets <see cref="IsEnabledInDm"/>.
/// </summary>
/// <param name="isEnabled">New value of the <see cref="IsEnabledInDm"/>.</param>
/// <returns>
/// The builder instance.
/// </returns>
public ContextCommandBuilder SetEnabledInDm(bool isEnabled)
{
IsEnabledInDm = isEnabled;
return this;
}

/// <summary>
/// Sets <see cref="DefaultMemberPermissions"/>.
/// </summary>
/// <param name="permissions">New value of the <see cref="DefaultMemberPermissions"/>.</param>
/// <returns>
/// The builder instance.
/// </returns>
public ContextCommandBuilder WithDefaultMemberPermissions(GuildPermission permissions)
{
DefaultMemberPermissions = permissions;
return this;
}

internal override ContextCommandInfo Build (ModuleInfo module, InteractionService commandService) =>
ContextCommandInfo.Create(this, module, commandService);
}


+ 38
- 0
src/Discord.Net.Interactions/Builders/Commands/SlashCommandBuilder.cs View File

@@ -17,8 +17,19 @@ namespace Discord.Interactions.Builders
/// <summary>
/// Gets and sets the default permission of this command.
/// </summary>
[Obsolete($"To be deprecated soon, use {nameof(IsEnabledInDm)} and {nameof(DefaultMemberPermissions)} instead.")]
public bool DefaultPermission { get; set; } = true;

/// <summary>
/// Gets whether this command can be used in DMs.
/// </summary>
public bool IsEnabledInDm { get; set; } = true;

/// <summary>
/// Gets the default permissions needed for executing this command.
/// </summary>
public GuildPermission? DefaultMemberPermissions { get; set; } = null;

internal SlashCommandBuilder (ModuleBuilder module) : base(module) { }

/// <summary>
@@ -49,6 +60,7 @@ namespace Discord.Interactions.Builders
/// <returns>
/// The builder instance.
/// </returns>
[Obsolete($"To be deprecated soon, use {nameof(SetEnabledInDm)} and {nameof(WithDefaultMemberPermissions)} instead.")]
public SlashCommandBuilder WithDefaultPermission (bool permission)
{
DefaultPermission = permission;
@@ -70,6 +82,32 @@ namespace Discord.Interactions.Builders
return this;
}

/// <summary>
/// Sets <see cref="IsEnabledInDm"/>.
/// </summary>
/// <param name="isEnabled">New value of the <see cref="IsEnabledInDm"/>.</param>
/// <returns>
/// The builder instance.
/// </returns>
public SlashCommandBuilder SetEnabledInDm(bool isEnabled)
{
IsEnabledInDm = isEnabled;
return this;
}

/// <summary>
/// Sets <see cref="DefaultMemberPermissions"/>.
/// </summary>
/// <param name="permissions">New value of the <see cref="DefaultMemberPermissions"/>.</param>
/// <returns>
/// The builder instance.
/// </returns>
public SlashCommandBuilder WithDefaultMemberPermissions(GuildPermission permissions)
{
DefaultMemberPermissions = permissions;
return this;
}

internal override SlashCommandInfo Build (ModuleInfo module, InteractionService commandService) =>
new SlashCommandInfo(this, module, commandService);
}


+ 38
- 0
src/Discord.Net.Interactions/Builders/ModuleBuilder.cs View File

@@ -51,8 +51,19 @@ namespace Discord.Interactions.Builders
/// <summary>
/// Gets and sets the default permission of this module.
/// </summary>
[Obsolete($"To be deprecated soon, use {nameof(IsEnabledInDm)} and {nameof(DefaultMemberPermissions)} instead.")]
public bool DefaultPermission { get; set; } = true;

/// <summary>
/// Gets whether this command can be used in DMs.
/// </summary>
public bool IsEnabledInDm { get; set; } = true;

/// <summary>
/// Gets the default permissions needed for executing this command.
/// </summary>
public GuildPermission? DefaultMemberPermissions { get; set; } = null;

/// <summary>
/// Gets and sets whether this has a <see cref="DontAutoRegisterAttribute"/>.
/// </summary>
@@ -159,12 +170,39 @@ namespace Discord.Interactions.Builders
/// <returns>
/// The builder instance.
/// </returns>
[Obsolete($"To be deprecated soon, use {nameof(SetEnabledInDm)} and {nameof(WithDefaultMemberPermissions)} instead.")]
public ModuleBuilder WithDefaultPermission (bool permission)
{
DefaultPermission = permission;
return this;
}

/// <summary>
/// Sets <see cref="IsEnabledInDm"/>.
/// </summary>
/// <param name="isEnabled">New value of the <see cref="IsEnabledInDm"/>.</param>
/// <returns>
/// The builder instance.
/// </returns>
public ModuleBuilder SetEnabledInDm(bool isEnabled)
{
IsEnabledInDm = isEnabled;
return this;
}

/// <summary>
/// Sets <see cref="DefaultMemberPermissions"/>.
/// </summary>
/// <param name="permissions">New value of the <see cref="DefaultMemberPermissions"/>.</param>
/// <returns>
/// The builder instance.
/// </returns>
public ModuleBuilder WithDefaultMemberPermissions(GuildPermission permissions)
{
DefaultMemberPermissions = permissions;
return this;
}

/// <summary>
/// Adds attributes to <see cref="Attributes"/>.
/// </summary>


+ 30
- 0
src/Discord.Net.Interactions/Builders/ModuleClassBuilder.cs View File

@@ -85,6 +85,16 @@ namespace Discord.Interactions.Builders
builder.DefaultPermission = defPermission.IsDefaultPermission;
}
break;
case EnabledInDmAttribute enabledInDm:
{
builder.IsEnabledInDm = enabledInDm.IsEnabled;
}
break;
case DefaultMemberPermissionsAttribute memberPermission:
{
builder.DefaultMemberPermissions = memberPermission.Permissions;
}
break;
case PreconditionAttribute precondition:
builder.AddPreconditions(precondition);
break;
@@ -169,6 +179,16 @@ namespace Discord.Interactions.Builders
builder.DefaultPermission = defaultPermission.IsDefaultPermission;
}
break;
case EnabledInDmAttribute enabledInDm:
{
builder.IsEnabledInDm = enabledInDm.IsEnabled;
}
break;
case DefaultMemberPermissionsAttribute memberPermission:
{
builder.DefaultMemberPermissions = memberPermission.Permissions;
}
break;
case PreconditionAttribute precondition:
builder.WithPreconditions(precondition);
break;
@@ -211,6 +231,16 @@ namespace Discord.Interactions.Builders
builder.DefaultPermission = defaultPermission.IsDefaultPermission;
}
break;
case EnabledInDmAttribute enabledInDm:
{
builder.IsEnabledInDm = enabledInDm.IsEnabled;
}
break;
case DefaultMemberPermissionsAttribute memberPermission:
{
builder.DefaultMemberPermissions = memberPermission.Permissions;
}
break;
case PreconditionAttribute precondition:
builder.WithPreconditions(precondition);
break;


Loading…
Cancel
Save