feature: V2 Permissions (#2222)
* Initial V2 permissions * add perms-v2 attributes and properties, add deprecation messages * add perms-v2 properties to command info classes * add perms-v2 fields to Rest/SocketApplicationCommand entities and IApplicationCommand * fix json name of DmPermission field Co-authored-by: Cenngo <cenk.ergen1@gmail.com>
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user