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,6 +17,16 @@ namespace Discord
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public Optional<bool> IsDefaultPermission { get; set; }
|
public Optional<bool> IsDefaultPermission { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets whether or not this command can be used in DMs.
|
||||||
|
/// </summary>
|
||||||
|
public Optional<bool> IsDMEnabled { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the default permissions required by a user to execute this application command.
|
||||||
|
/// </summary>
|
||||||
|
public Optional<GuildPermission> DefaultMemberPermissions { get; set; }
|
||||||
|
|
||||||
internal ApplicationCommandProperties() { }
|
internal ApplicationCommandProperties() { }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,6 +31,16 @@ namespace Discord
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsDefaultPermission { get; set; } = true;
|
public bool IsDefaultPermission { get; set; } = true;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets whether or not this command can be used in DMs.
|
||||||
|
/// </summary>
|
||||||
|
public bool IsDMEnabled { get; set; } = true;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the default permission required to use this slash command.
|
||||||
|
/// </summary>
|
||||||
|
public GuildPermission? DefaultMemberPermissions { get; set; }
|
||||||
|
|
||||||
private string _name;
|
private string _name;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -44,7 +54,9 @@ namespace Discord
|
|||||||
var props = new MessageCommandProperties
|
var props = new MessageCommandProperties
|
||||||
{
|
{
|
||||||
Name = Name,
|
Name = Name,
|
||||||
IsDefaultPermission = IsDefaultPermission
|
IsDefaultPermission = IsDefaultPermission,
|
||||||
|
IsDMEnabled = IsDMEnabled,
|
||||||
|
DefaultMemberPermissions = DefaultMemberPermissions ?? Optional<GuildPermission>.Unspecified
|
||||||
};
|
};
|
||||||
|
|
||||||
return props;
|
return props;
|
||||||
@@ -73,5 +85,27 @@ namespace Discord
|
|||||||
IsDefaultPermission = isDefaultPermission;
|
IsDefaultPermission = isDefaultPermission;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sets whether or not this command can be used in dms
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="permission"><see langword="true"/> if the command is available in dms, otherwise <see langword="false"/>.</param>
|
||||||
|
/// <returns>The current builder.</returns>
|
||||||
|
public MessageCommandBuilder WithDMPermission(bool permission)
|
||||||
|
{
|
||||||
|
IsDMEnabled = permission;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sets the default member permissions required to use this application command.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="permissions">The permissions required to use this command.</param>
|
||||||
|
/// <returns>The current builder.</returns>
|
||||||
|
public MessageCommandBuilder WithDefaultMemberPermissions(GuildPermission? permissions)
|
||||||
|
{
|
||||||
|
DefaultMemberPermissions = permissions;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,6 +31,16 @@ namespace Discord
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsDefaultPermission { get; set; } = true;
|
public bool IsDefaultPermission { get; set; } = true;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets whether or not this command can be used in DMs.
|
||||||
|
/// </summary>
|
||||||
|
public bool IsDMEnabled { get; set; } = true;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the default permission required to use this slash command.
|
||||||
|
/// </summary>
|
||||||
|
public GuildPermission? DefaultMemberPermissions { get; set; }
|
||||||
|
|
||||||
private string _name;
|
private string _name;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -42,7 +52,9 @@ namespace Discord
|
|||||||
var props = new UserCommandProperties
|
var props = new UserCommandProperties
|
||||||
{
|
{
|
||||||
Name = Name,
|
Name = Name,
|
||||||
IsDefaultPermission = IsDefaultPermission
|
IsDefaultPermission = IsDefaultPermission,
|
||||||
|
IsDMEnabled = IsDMEnabled,
|
||||||
|
DefaultMemberPermissions = DefaultMemberPermissions ?? Optional<GuildPermission>.Unspecified
|
||||||
};
|
};
|
||||||
|
|
||||||
return props;
|
return props;
|
||||||
@@ -71,5 +83,27 @@ namespace Discord
|
|||||||
IsDefaultPermission = isDefaultPermission;
|
IsDefaultPermission = isDefaultPermission;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sets whether or not this command can be used in dms
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="permission"><see langword="true"/> if the command is available in dms, otherwise <see langword="false"/>.</param>
|
||||||
|
/// <returns>The current builder.</returns>
|
||||||
|
public UserCommandBuilder WithDMPermission(bool permission)
|
||||||
|
{
|
||||||
|
IsDMEnabled = permission;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sets the default member permissions required to use this application command.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="permissions">The permissions required to use this command.</param>
|
||||||
|
/// <returns>The current builder.</returns>
|
||||||
|
public UserCommandBuilder WithDefaultMemberPermissions(GuildPermission? permissions)
|
||||||
|
{
|
||||||
|
DefaultMemberPermissions = permissions;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,19 @@ namespace Discord
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
bool IsDefaultPermission { get; }
|
bool IsDefaultPermission { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Indicates whether the command is available in DMs with the app.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Only for globally-scoped commands.
|
||||||
|
/// </remarks>
|
||||||
|
bool IsEnabledInDm { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Set of default <see cref="GuildPermission"/> required to invoke the command.
|
||||||
|
/// </summary>
|
||||||
|
GuildPermissions DefaultMemberPermissions { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a collection of options for this application command.
|
/// Gets a collection of options for this application command.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -81,6 +81,16 @@ namespace Discord
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsDefaultPermission { get; set; } = true;
|
public bool IsDefaultPermission { get; set; } = true;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets whether or not this command can be used in DMs.
|
||||||
|
/// </summary>
|
||||||
|
public bool IsDMEnabled { get; set; } = true;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the default permission required to use this slash command.
|
||||||
|
/// </summary>
|
||||||
|
public GuildPermission? DefaultMemberPermissions { get; set; }
|
||||||
|
|
||||||
private string _name;
|
private string _name;
|
||||||
private string _description;
|
private string _description;
|
||||||
private List<SlashCommandOptionBuilder> _options;
|
private List<SlashCommandOptionBuilder> _options;
|
||||||
@@ -96,6 +106,8 @@ namespace Discord
|
|||||||
Name = Name,
|
Name = Name,
|
||||||
Description = Description,
|
Description = Description,
|
||||||
IsDefaultPermission = IsDefaultPermission,
|
IsDefaultPermission = IsDefaultPermission,
|
||||||
|
IsDMEnabled = IsDMEnabled,
|
||||||
|
DefaultMemberPermissions = DefaultMemberPermissions ?? Optional<GuildPermission>.Unspecified
|
||||||
};
|
};
|
||||||
|
|
||||||
if (Options != null && Options.Any())
|
if (Options != null && Options.Any())
|
||||||
@@ -145,6 +157,28 @@ namespace Discord
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sets whether or not this command can be used in dms
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="permission"><see langword="true"/> if the command is available in dms, otherwise <see langword="false"/>.</param>
|
||||||
|
/// <returns>The current builder.</returns>
|
||||||
|
public SlashCommandBuilder WithDMPermission(bool permission)
|
||||||
|
{
|
||||||
|
IsDMEnabled = permission;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sets the default member permissions required to use this application command.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="permissions">The permissions required to use this command.</param>
|
||||||
|
/// <returns>The current builder.</returns>
|
||||||
|
public SlashCommandBuilder WithDefaultMemberPermissions(GuildPermission? permissions)
|
||||||
|
{
|
||||||
|
DefaultMemberPermissions = permissions;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Adds an option to the current slash command.
|
/// Adds an option to the current slash command.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,6 +6,7 @@ namespace Discord.Interactions
|
|||||||
/// Set the "Default Permission" property of an Application Command.
|
/// Set the "Default Permission" property of an Application Command.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
|
[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
|
public class DefaultPermissionAttribute : Attribute
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,8 +17,19 @@ namespace Discord.Interactions.Builders
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the default permission of this command.
|
/// Gets the default permission of this command.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Obsolete($"To be deprecated soon, use {nameof(IsEnabledInDm)} and {nameof(DefaultMemberPermissions)} instead.")]
|
||||||
public bool DefaultPermission { get; set; } = true;
|
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) { }
|
internal ContextCommandBuilder (ModuleBuilder module) : base(module) { }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -49,6 +60,7 @@ namespace Discord.Interactions.Builders
|
|||||||
/// <returns>
|
/// <returns>
|
||||||
/// The builder instance.
|
/// The builder instance.
|
||||||
/// </returns>
|
/// </returns>
|
||||||
|
[Obsolete($"To be deprecated soon, use {nameof(SetEnabledInDm)} and {nameof(WithDefaultMemberPermissions)} instead.")]
|
||||||
public ContextCommandBuilder SetDefaultPermission (bool defaultPermision)
|
public ContextCommandBuilder SetDefaultPermission (bool defaultPermision)
|
||||||
{
|
{
|
||||||
DefaultPermission = defaultPermision;
|
DefaultPermission = defaultPermision;
|
||||||
@@ -70,6 +82,32 @@ namespace Discord.Interactions.Builders
|
|||||||
return this;
|
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) =>
|
internal override ContextCommandInfo Build (ModuleInfo module, InteractionService commandService) =>
|
||||||
ContextCommandInfo.Create(this, module, commandService);
|
ContextCommandInfo.Create(this, module, commandService);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,8 +17,19 @@ namespace Discord.Interactions.Builders
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets and sets the default permission of this command.
|
/// Gets and sets the default permission of this command.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Obsolete($"To be deprecated soon, use {nameof(IsEnabledInDm)} and {nameof(DefaultMemberPermissions)} instead.")]
|
||||||
public bool DefaultPermission { get; set; } = true;
|
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) { }
|
internal SlashCommandBuilder (ModuleBuilder module) : base(module) { }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -49,6 +60,7 @@ namespace Discord.Interactions.Builders
|
|||||||
/// <returns>
|
/// <returns>
|
||||||
/// The builder instance.
|
/// The builder instance.
|
||||||
/// </returns>
|
/// </returns>
|
||||||
|
[Obsolete($"To be deprecated soon, use {nameof(SetEnabledInDm)} and {nameof(WithDefaultMemberPermissions)} instead.")]
|
||||||
public SlashCommandBuilder WithDefaultPermission (bool permission)
|
public SlashCommandBuilder WithDefaultPermission (bool permission)
|
||||||
{
|
{
|
||||||
DefaultPermission = permission;
|
DefaultPermission = permission;
|
||||||
@@ -70,6 +82,32 @@ namespace Discord.Interactions.Builders
|
|||||||
return this;
|
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) =>
|
internal override SlashCommandInfo Build (ModuleInfo module, InteractionService commandService) =>
|
||||||
new SlashCommandInfo(this, module, commandService);
|
new SlashCommandInfo(this, module, commandService);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,8 +51,19 @@ namespace Discord.Interactions.Builders
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets and sets the default permission of this module.
|
/// Gets and sets the default permission of this module.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Obsolete($"To be deprecated soon, use {nameof(IsEnabledInDm)} and {nameof(DefaultMemberPermissions)} instead.")]
|
||||||
public bool DefaultPermission { get; set; } = true;
|
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>
|
/// <summary>
|
||||||
/// Gets and sets whether this has a <see cref="DontAutoRegisterAttribute"/>.
|
/// Gets and sets whether this has a <see cref="DontAutoRegisterAttribute"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -159,12 +170,39 @@ namespace Discord.Interactions.Builders
|
|||||||
/// <returns>
|
/// <returns>
|
||||||
/// The builder instance.
|
/// The builder instance.
|
||||||
/// </returns>
|
/// </returns>
|
||||||
|
[Obsolete($"To be deprecated soon, use {nameof(SetEnabledInDm)} and {nameof(WithDefaultMemberPermissions)} instead.")]
|
||||||
public ModuleBuilder WithDefaultPermission (bool permission)
|
public ModuleBuilder WithDefaultPermission (bool permission)
|
||||||
{
|
{
|
||||||
DefaultPermission = permission;
|
DefaultPermission = permission;
|
||||||
return this;
|
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>
|
/// <summary>
|
||||||
/// Adds attributes to <see cref="Attributes"/>.
|
/// Adds attributes to <see cref="Attributes"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -85,6 +85,16 @@ namespace Discord.Interactions.Builders
|
|||||||
builder.DefaultPermission = defPermission.IsDefaultPermission;
|
builder.DefaultPermission = defPermission.IsDefaultPermission;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case EnabledInDmAttribute enabledInDm:
|
||||||
|
{
|
||||||
|
builder.IsEnabledInDm = enabledInDm.IsEnabled;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DefaultMemberPermissionsAttribute memberPermission:
|
||||||
|
{
|
||||||
|
builder.DefaultMemberPermissions = memberPermission.Permissions;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case PreconditionAttribute precondition:
|
case PreconditionAttribute precondition:
|
||||||
builder.AddPreconditions(precondition);
|
builder.AddPreconditions(precondition);
|
||||||
break;
|
break;
|
||||||
@@ -169,6 +179,16 @@ namespace Discord.Interactions.Builders
|
|||||||
builder.DefaultPermission = defaultPermission.IsDefaultPermission;
|
builder.DefaultPermission = defaultPermission.IsDefaultPermission;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case EnabledInDmAttribute enabledInDm:
|
||||||
|
{
|
||||||
|
builder.IsEnabledInDm = enabledInDm.IsEnabled;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DefaultMemberPermissionsAttribute memberPermission:
|
||||||
|
{
|
||||||
|
builder.DefaultMemberPermissions = memberPermission.Permissions;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case PreconditionAttribute precondition:
|
case PreconditionAttribute precondition:
|
||||||
builder.WithPreconditions(precondition);
|
builder.WithPreconditions(precondition);
|
||||||
break;
|
break;
|
||||||
@@ -211,6 +231,16 @@ namespace Discord.Interactions.Builders
|
|||||||
builder.DefaultPermission = defaultPermission.IsDefaultPermission;
|
builder.DefaultPermission = defaultPermission.IsDefaultPermission;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case EnabledInDmAttribute enabledInDm:
|
||||||
|
{
|
||||||
|
builder.IsEnabledInDm = enabledInDm.IsEnabled;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DefaultMemberPermissionsAttribute memberPermission:
|
||||||
|
{
|
||||||
|
builder.DefaultMemberPermissions = memberPermission.Permissions;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case PreconditionAttribute precondition:
|
case PreconditionAttribute precondition:
|
||||||
builder.WithPreconditions(precondition);
|
builder.WithPreconditions(precondition);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -17,6 +17,12 @@ namespace Discord.Interactions
|
|||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public bool DefaultPermission { get; }
|
public bool DefaultPermission { get; }
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public bool IsEnabledInDm { get; }
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public GuildPermission? DefaultMemberPermissions { get; }
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public override IReadOnlyCollection<CommandParameterInfo> Parameters { get; }
|
public override IReadOnlyCollection<CommandParameterInfo> Parameters { get; }
|
||||||
|
|
||||||
@@ -31,6 +37,8 @@ namespace Discord.Interactions
|
|||||||
{
|
{
|
||||||
CommandType = builder.CommandType;
|
CommandType = builder.CommandType;
|
||||||
DefaultPermission = builder.DefaultPermission;
|
DefaultPermission = builder.DefaultPermission;
|
||||||
|
IsEnabledInDm = builder.IsEnabledInDm;
|
||||||
|
DefaultMemberPermissions = builder.DefaultMemberPermissions;
|
||||||
Parameters = builder.Parameters.Select(x => x.Build(this)).ToImmutableArray();
|
Parameters = builder.Parameters.Select(x => x.Build(this)).ToImmutableArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,12 @@ namespace Discord.Interactions
|
|||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public bool DefaultPermission { get; }
|
public bool DefaultPermission { get; }
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public bool IsEnabledInDm { get; }
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public GuildPermission? DefaultMemberPermissions { get; }
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public override IReadOnlyCollection<SlashCommandParameterInfo> Parameters { get; }
|
public override IReadOnlyCollection<SlashCommandParameterInfo> Parameters { get; }
|
||||||
|
|
||||||
@@ -41,6 +47,8 @@ namespace Discord.Interactions
|
|||||||
{
|
{
|
||||||
Description = builder.Description;
|
Description = builder.Description;
|
||||||
DefaultPermission = builder.DefaultPermission;
|
DefaultPermission = builder.DefaultPermission;
|
||||||
|
IsEnabledInDm = builder.IsEnabledInDm;
|
||||||
|
DefaultMemberPermissions = builder.DefaultMemberPermissions;
|
||||||
Parameters = builder.Parameters.Select(x => x.Build(this)).ToImmutableArray();
|
Parameters = builder.Parameters.Select(x => x.Build(this)).ToImmutableArray();
|
||||||
FlattenedParameters = FlattenParameters(Parameters).ToImmutableArray();
|
FlattenedParameters = FlattenParameters(Parameters).ToImmutableArray();
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
namespace Discord.Interactions
|
namespace Discord.Interactions
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -18,6 +20,17 @@ namespace Discord.Interactions
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the DefaultPermission of this command.
|
/// Gets the DefaultPermission of this command.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Obsolete($"To be deprecated soon, use {nameof(IsEnabledInDm)} and {nameof(DefaultMemberPermissions)} instead.")]
|
||||||
bool DefaultPermission { get; }
|
bool DefaultPermission { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets whether this command can be used in DMs.
|
||||||
|
/// </summary>
|
||||||
|
public bool IsEnabledInDm { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the default permissions needed for executing this command.
|
||||||
|
/// </summary>
|
||||||
|
public GuildPermission? DefaultMemberPermissions { get; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,8 +41,19 @@ namespace Discord.Interactions
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the default Permission of this module.
|
/// Gets the default Permission of this module.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Obsolete($"To be deprecated soon, use {nameof(IsEnabledInDm)} and {nameof(DefaultMemberPermissions)} instead.")]
|
||||||
public bool DefaultPermission { get; }
|
public bool DefaultPermission { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets whether this command can be used in DMs.
|
||||||
|
/// </summary>
|
||||||
|
public bool IsEnabledInDm { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the default permissions needed for executing this command.
|
||||||
|
/// </summary>
|
||||||
|
public GuildPermission? DefaultMemberPermissions { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the collection of Sub Modules of this module.
|
/// Gets the collection of Sub Modules of this module.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -110,6 +121,8 @@ namespace Discord.Interactions
|
|||||||
Description = builder.Description;
|
Description = builder.Description;
|
||||||
Parent = parent;
|
Parent = parent;
|
||||||
DefaultPermission = builder.DefaultPermission;
|
DefaultPermission = builder.DefaultPermission;
|
||||||
|
IsEnabledInDm = builder.IsEnabledInDm;
|
||||||
|
DefaultMemberPermissions = BuildDefaultMemberPermissions(builder);
|
||||||
SlashCommands = BuildSlashCommands(builder).ToImmutableArray();
|
SlashCommands = BuildSlashCommands(builder).ToImmutableArray();
|
||||||
ContextCommands = BuildContextCommands(builder).ToImmutableArray();
|
ContextCommands = BuildContextCommands(builder).ToImmutableArray();
|
||||||
ComponentCommands = BuildComponentCommands(builder).ToImmutableArray();
|
ComponentCommands = BuildComponentCommands(builder).ToImmutableArray();
|
||||||
@@ -226,5 +239,20 @@ namespace Discord.Interactions
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static GuildPermission? BuildDefaultMemberPermissions(ModuleBuilder builder)
|
||||||
|
{
|
||||||
|
var permissions = builder.DefaultMemberPermissions;
|
||||||
|
|
||||||
|
var parent = builder.Parent;
|
||||||
|
|
||||||
|
while (parent != null)
|
||||||
|
{
|
||||||
|
permissions = (permissions ?? 0) | (parent.DefaultMemberPermissions ?? 0);
|
||||||
|
parent = parent.Parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
return permissions;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,7 +40,8 @@ namespace Discord.Interactions
|
|||||||
{
|
{
|
||||||
Name = commandInfo.Name,
|
Name = commandInfo.Name,
|
||||||
Description = commandInfo.Description,
|
Description = commandInfo.Description,
|
||||||
IsDefaultPermission = commandInfo.DefaultPermission,
|
IsDMEnabled = commandInfo.IsEnabledInDm,
|
||||||
|
DefaultMemberPermissions = (commandInfo.DefaultMemberPermissions ?? 0) | (commandInfo.Module.DefaultMemberPermissions ?? 0)
|
||||||
}.Build();
|
}.Build();
|
||||||
|
|
||||||
if (commandInfo.Parameters.Count > SlashCommandBuilder.MaxOptionsCount)
|
if (commandInfo.Parameters.Count > SlashCommandBuilder.MaxOptionsCount)
|
||||||
@@ -64,8 +65,20 @@ namespace Discord.Interactions
|
|||||||
public static ApplicationCommandProperties ToApplicationCommandProps(this ContextCommandInfo commandInfo)
|
public static ApplicationCommandProperties ToApplicationCommandProps(this ContextCommandInfo commandInfo)
|
||||||
=> commandInfo.CommandType switch
|
=> commandInfo.CommandType switch
|
||||||
{
|
{
|
||||||
ApplicationCommandType.Message => new MessageCommandBuilder { Name = commandInfo.Name, IsDefaultPermission = commandInfo.DefaultPermission}.Build(),
|
ApplicationCommandType.Message => new MessageCommandBuilder
|
||||||
ApplicationCommandType.User => new UserCommandBuilder { Name = commandInfo.Name, IsDefaultPermission=commandInfo.DefaultPermission}.Build(),
|
{
|
||||||
|
Name = commandInfo.Name,
|
||||||
|
IsDefaultPermission = commandInfo.DefaultPermission,
|
||||||
|
DefaultMemberPermissions = (commandInfo.DefaultMemberPermissions ?? 0) | (commandInfo.Module.DefaultMemberPermissions ?? 0),
|
||||||
|
IsDMEnabled = commandInfo.IsEnabledInDm
|
||||||
|
}.Build(),
|
||||||
|
ApplicationCommandType.User => new UserCommandBuilder
|
||||||
|
{
|
||||||
|
Name = commandInfo.Name,
|
||||||
|
IsDefaultPermission = commandInfo.DefaultPermission,
|
||||||
|
DefaultMemberPermissions = (commandInfo.DefaultMemberPermissions ?? 0) | (commandInfo.Module.DefaultMemberPermissions ?? 0),
|
||||||
|
IsDMEnabled = commandInfo.IsEnabledInDm
|
||||||
|
}.Build(),
|
||||||
_ => throw new InvalidOperationException($"{commandInfo.CommandType} isn't a supported command type.")
|
_ => throw new InvalidOperationException($"{commandInfo.CommandType} isn't a supported command type.")
|
||||||
};
|
};
|
||||||
#endregion
|
#endregion
|
||||||
@@ -113,6 +126,8 @@ namespace Discord.Interactions
|
|||||||
Name = moduleInfo.SlashGroupName,
|
Name = moduleInfo.SlashGroupName,
|
||||||
Description = moduleInfo.Description,
|
Description = moduleInfo.Description,
|
||||||
IsDefaultPermission = moduleInfo.DefaultPermission,
|
IsDefaultPermission = moduleInfo.DefaultPermission,
|
||||||
|
IsDMEnabled = moduleInfo.IsEnabledInDm,
|
||||||
|
DefaultMemberPermissions = moduleInfo.DefaultMemberPermissions
|
||||||
}.Build();
|
}.Build();
|
||||||
|
|
||||||
if (options.Count > SlashCommandBuilder.MaxOptionsCount)
|
if (options.Count > SlashCommandBuilder.MaxOptionsCount)
|
||||||
|
|||||||
@@ -24,5 +24,12 @@ namespace Discord.API
|
|||||||
|
|
||||||
[JsonProperty("default_permission")]
|
[JsonProperty("default_permission")]
|
||||||
public Optional<bool> DefaultPermissions { get; set; }
|
public Optional<bool> DefaultPermissions { get; set; }
|
||||||
|
|
||||||
|
// V2 Permissions
|
||||||
|
[JsonProperty("dm_permission")]
|
||||||
|
public Optional<bool?> DmPermission { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("default_member_permissions")]
|
||||||
|
public Optional<GuildPermission?> DefaultMemberPermission { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,12 @@ namespace Discord.API.Rest
|
|||||||
[JsonProperty("default_permission")]
|
[JsonProperty("default_permission")]
|
||||||
public Optional<bool> DefaultPermission { get; set; }
|
public Optional<bool> DefaultPermission { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("dm_permission")]
|
||||||
|
public Optional<bool?> DmPermission { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("default_member_permissions")]
|
||||||
|
public Optional<GuildPermission?> DefaultMemberPermission { get; set; }
|
||||||
|
|
||||||
public CreateApplicationCommandParams() { }
|
public CreateApplicationCommandParams() { }
|
||||||
public CreateApplicationCommandParams(string name, string description, ApplicationCommandType type, ApplicationCommandOption[] options = null)
|
public CreateApplicationCommandParams(string name, string description, ApplicationCommandType type, ApplicationCommandOption[] options = null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -100,7 +100,12 @@ namespace Discord.Rest
|
|||||||
Type = arg.Type,
|
Type = arg.Type,
|
||||||
DefaultPermission = arg.IsDefaultPermission.IsSpecified
|
DefaultPermission = arg.IsDefaultPermission.IsSpecified
|
||||||
? arg.IsDefaultPermission.Value
|
? arg.IsDefaultPermission.Value
|
||||||
: Optional<bool>.Unspecified
|
: Optional<bool>.Unspecified,
|
||||||
|
|
||||||
|
// TODO: better conversion to nullable optionals
|
||||||
|
DefaultMemberPermission = arg.DefaultMemberPermissions.ToNullable(),
|
||||||
|
DmPermission = arg.IsDMEnabled.ToNullable()
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
if (arg is SlashCommandProperties slashProps)
|
if (arg is SlashCommandProperties slashProps)
|
||||||
@@ -134,7 +139,11 @@ namespace Discord.Rest
|
|||||||
Type = arg.Type,
|
Type = arg.Type,
|
||||||
DefaultPermission = arg.IsDefaultPermission.IsSpecified
|
DefaultPermission = arg.IsDefaultPermission.IsSpecified
|
||||||
? arg.IsDefaultPermission.Value
|
? arg.IsDefaultPermission.Value
|
||||||
: Optional<bool>.Unspecified
|
: Optional<bool>.Unspecified,
|
||||||
|
|
||||||
|
// TODO: better conversion to nullable optionals
|
||||||
|
DefaultMemberPermission = arg.DefaultMemberPermissions.ToNullable(),
|
||||||
|
DmPermission = arg.IsDMEnabled.ToNullable()
|
||||||
};
|
};
|
||||||
|
|
||||||
if (arg is SlashCommandProperties slashProps)
|
if (arg is SlashCommandProperties slashProps)
|
||||||
@@ -171,7 +180,11 @@ namespace Discord.Rest
|
|||||||
Type = arg.Type,
|
Type = arg.Type,
|
||||||
DefaultPermission = arg.IsDefaultPermission.IsSpecified
|
DefaultPermission = arg.IsDefaultPermission.IsSpecified
|
||||||
? arg.IsDefaultPermission.Value
|
? arg.IsDefaultPermission.Value
|
||||||
: Optional<bool>.Unspecified
|
: Optional<bool>.Unspecified,
|
||||||
|
|
||||||
|
// TODO: better conversion to nullable optionals
|
||||||
|
DefaultMemberPermission = arg.DefaultMemberPermissions.ToNullable(),
|
||||||
|
DmPermission = arg.IsDMEnabled.ToNullable()
|
||||||
};
|
};
|
||||||
|
|
||||||
if (arg is SlashCommandProperties slashProps)
|
if (arg is SlashCommandProperties slashProps)
|
||||||
@@ -285,7 +298,11 @@ namespace Discord.Rest
|
|||||||
Type = arg.Type,
|
Type = arg.Type,
|
||||||
DefaultPermission = arg.IsDefaultPermission.IsSpecified
|
DefaultPermission = arg.IsDefaultPermission.IsSpecified
|
||||||
? arg.IsDefaultPermission.Value
|
? arg.IsDefaultPermission.Value
|
||||||
: Optional<bool>.Unspecified
|
: Optional<bool>.Unspecified,
|
||||||
|
|
||||||
|
// TODO: better conversion to nullable optionals
|
||||||
|
DefaultMemberPermission = arg.DefaultMemberPermissions.ToNullable(),
|
||||||
|
DmPermission = arg.IsDMEnabled.ToNullable()
|
||||||
};
|
};
|
||||||
|
|
||||||
if (arg is SlashCommandProperties slashProps)
|
if (arg is SlashCommandProperties slashProps)
|
||||||
|
|||||||
@@ -27,6 +27,12 @@ namespace Discord.Rest
|
|||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public bool IsDefaultPermission { get; private set; }
|
public bool IsDefaultPermission { get; private set; }
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public bool IsEnabledInDm { get; private set; }
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public GuildPermissions DefaultMemberPermissions { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a collection of options for this command.
|
/// Gets a collection of options for this command.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -57,6 +63,10 @@ namespace Discord.Rest
|
|||||||
Options = model.Options.IsSpecified
|
Options = model.Options.IsSpecified
|
||||||
? model.Options.Value.Select(RestApplicationCommandOption.Create).ToImmutableArray()
|
? model.Options.Value.Select(RestApplicationCommandOption.Create).ToImmutableArray()
|
||||||
: ImmutableArray.Create<RestApplicationCommandOption>();
|
: ImmutableArray.Create<RestApplicationCommandOption>();
|
||||||
|
|
||||||
|
IsEnabledInDm = model.DmPermission.GetValueOrDefault(true).GetValueOrDefault(true);
|
||||||
|
DefaultMemberPermissions = model.DefaultMemberPermission.IsSpecified
|
||||||
|
? new GuildPermissions((ulong)model.DefaultMemberPermission.Value) : GuildPermissions.None;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
|
|||||||
@@ -36,6 +36,12 @@ namespace Discord.WebSocket
|
|||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public bool IsDefaultPermission { get; private set; }
|
public bool IsDefaultPermission { get; private set; }
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public bool IsEnabledInDm { get; private set; }
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public GuildPermissions DefaultMemberPermissions { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a collection of <see cref="SocketApplicationCommandOption"/>s for this command.
|
/// Gets a collection of <see cref="SocketApplicationCommandOption"/>s for this command.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -86,6 +92,10 @@ namespace Discord.WebSocket
|
|||||||
Options = model.Options.IsSpecified
|
Options = model.Options.IsSpecified
|
||||||
? model.Options.Value.Select(SocketApplicationCommandOption.Create).ToImmutableArray()
|
? model.Options.Value.Select(SocketApplicationCommandOption.Create).ToImmutableArray()
|
||||||
: ImmutableArray.Create<SocketApplicationCommandOption>();
|
: ImmutableArray.Create<SocketApplicationCommandOption>();
|
||||||
|
|
||||||
|
IsEnabledInDm = model.DmPermission.GetValueOrDefault(true).GetValueOrDefault(true);
|
||||||
|
DefaultMemberPermissions = model.DefaultMemberPermission.IsSpecified
|
||||||
|
? new GuildPermissions((ulong)model.DefaultMemberPermission.Value) : GuildPermissions.None;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
|
|||||||
Reference in New Issue
Block a user