Browse Source

Initial V2 permissions

pull/2222/head
quin lynch Quin Lynch 3 years ago
parent
commit
7384ecc812
7 changed files with 148 additions and 6 deletions
  1. +10
    -0
      src/Discord.Net.Core/Entities/Interactions/ApplicationCommandProperties.cs
  2. +35
    -1
      src/Discord.Net.Core/Entities/Interactions/ContextMenus/MessageCommandBuilder.cs
  3. +35
    -1
      src/Discord.Net.Core/Entities/Interactions/ContextMenus/UserCommandBuilder.cs
  4. +34
    -0
      src/Discord.Net.Core/Entities/Interactions/SlashCommands/SlashCommandBuilder.cs
  5. +7
    -0
      src/Discord.Net.Rest/API/Common/ApplicationCommand.cs
  6. +6
    -0
      src/Discord.Net.Rest/API/Rest/CreateApplicationCommandParams.cs
  7. +21
    -4
      src/Discord.Net.Rest/Entities/Interactions/InteractionHelper.cs

+ 10
- 0
src/Discord.Net.Core/Entities/Interactions/ApplicationCommandProperties.cs View File

@@ -17,6 +17,16 @@ namespace Discord
/// </summary>
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() { }
}
}

+ 35
- 1
src/Discord.Net.Core/Entities/Interactions/ContextMenus/MessageCommandBuilder.cs View File

@@ -31,6 +31,16 @@ namespace Discord
/// </summary>
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;

/// <summary>
@@ -44,7 +54,9 @@ namespace Discord
var props = new MessageCommandProperties
{
Name = Name,
IsDefaultPermission = IsDefaultPermission
IsDefaultPermission = IsDefaultPermission,
IsDMEnabled = IsDMEnabled,
DefaultMemberPermissions = DefaultMemberPermissions ?? Optional<GuildPermission>.Unspecified
};

return props;
@@ -73,5 +85,27 @@ namespace Discord
IsDefaultPermission = isDefaultPermission;
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;
}
}
}

+ 35
- 1
src/Discord.Net.Core/Entities/Interactions/ContextMenus/UserCommandBuilder.cs View File

@@ -31,6 +31,16 @@ namespace Discord
/// </summary>
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;

/// <summary>
@@ -42,7 +52,9 @@ namespace Discord
var props = new UserCommandProperties
{
Name = Name,
IsDefaultPermission = IsDefaultPermission
IsDefaultPermission = IsDefaultPermission,
IsDMEnabled = IsDMEnabled,
DefaultMemberPermissions = DefaultMemberPermissions ?? Optional<GuildPermission>.Unspecified
};

return props;
@@ -71,5 +83,27 @@ namespace Discord
IsDefaultPermission = isDefaultPermission;
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
- 0
src/Discord.Net.Core/Entities/Interactions/SlashCommands/SlashCommandBuilder.cs View File

@@ -81,6 +81,16 @@ namespace Discord
/// </summary>
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 _description;
private List<SlashCommandOptionBuilder> _options;
@@ -96,6 +106,8 @@ namespace Discord
Name = Name,
Description = Description,
IsDefaultPermission = IsDefaultPermission,
IsDMEnabled = IsDMEnabled,
DefaultMemberPermissions = DefaultMemberPermissions ?? Optional<GuildPermission>.Unspecified
};

if (Options != null && Options.Any())
@@ -145,6 +157,28 @@ namespace Discord
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>
/// Adds an option to the current slash command.
/// </summary>


+ 7
- 0
src/Discord.Net.Rest/API/Common/ApplicationCommand.cs View File

@@ -24,5 +24,12 @@ namespace Discord.API

[JsonProperty("default_permission")]
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; }
}
}

+ 6
- 0
src/Discord.Net.Rest/API/Rest/CreateApplicationCommandParams.cs View File

@@ -19,6 +19,12 @@ namespace Discord.API.Rest
[JsonProperty("default_permission")]
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(string name, string description, ApplicationCommandType type, ApplicationCommandOption[] options = null)
{


+ 21
- 4
src/Discord.Net.Rest/Entities/Interactions/InteractionHelper.cs View File

@@ -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)


Loading…
Cancel
Save