| @@ -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; | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| @@ -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> | ||||
| @@ -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_permissions")] | |||||
| 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_permissions")] | |||||
| 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) | ||||