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:
@@ -24,5 +24,12 @@ namespace Discord.API
|
||||
|
||||
[JsonProperty("default_permission")]
|
||||
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")]
|
||||
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(string name, string description, ApplicationCommandType type, ApplicationCommandOption[] options = null)
|
||||
{
|
||||
|
||||
@@ -100,7 +100,12 @@ namespace Discord.Rest
|
||||
Type = arg.Type,
|
||||
DefaultPermission = arg.IsDefaultPermission.IsSpecified
|
||||
? 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)
|
||||
@@ -134,7 +139,11 @@ namespace Discord.Rest
|
||||
Type = arg.Type,
|
||||
DefaultPermission = arg.IsDefaultPermission.IsSpecified
|
||||
? 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)
|
||||
@@ -171,7 +180,11 @@ namespace Discord.Rest
|
||||
Type = arg.Type,
|
||||
DefaultPermission = arg.IsDefaultPermission.IsSpecified
|
||||
? 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)
|
||||
@@ -285,7 +298,11 @@ namespace Discord.Rest
|
||||
Type = arg.Type,
|
||||
DefaultPermission = arg.IsDefaultPermission.IsSpecified
|
||||
? 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)
|
||||
|
||||
@@ -27,6 +27,12 @@ namespace Discord.Rest
|
||||
/// <inheritdoc/>
|
||||
public bool IsDefaultPermission { get; private set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public bool IsEnabledInDm { get; private set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public GuildPermissions DefaultMemberPermissions { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collection of options for this command.
|
||||
/// </summary>
|
||||
@@ -57,6 +63,10 @@ namespace Discord.Rest
|
||||
Options = model.Options.IsSpecified
|
||||
? model.Options.Value.Select(RestApplicationCommandOption.Create).ToImmutableArray()
|
||||
: ImmutableArray.Create<RestApplicationCommandOption>();
|
||||
|
||||
IsEnabledInDm = model.DmPermission.GetValueOrDefault(true).GetValueOrDefault(true);
|
||||
DefaultMemberPermissions = model.DefaultMemberPermission.IsSpecified
|
||||
? new GuildPermissions((ulong)model.DefaultMemberPermission.Value) : GuildPermissions.None;
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
|
||||
Reference in New Issue
Block a user