@@ -0,0 +1,25 @@ | |||
using System; | |||
namespace Discord.Interactions | |||
{ | |||
/// <summary> | |||
/// Sets the <see cref="IApplicationCommandInfo.IsNsfw"/> property of an application command or module. | |||
/// </summary> | |||
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] | |||
public class NsfwCommandAttribute : Attribute | |||
{ | |||
/// <summary> | |||
/// Gets whether or not this command is age restricted. | |||
/// </summary> | |||
public bool IsNsfw { get; } | |||
/// <summary> | |||
/// Sets the <see cref="IApplicationCommandInfo.IsNsfw"/> property of an application command or module. | |||
/// </summary> | |||
/// <param name="isNsfw">Whether or not this command is age restricted.</param> | |||
public NsfwCommandAttribute(bool isNsfw) | |||
{ | |||
IsNsfw = isNsfw; | |||
} | |||
} | |||
} |
@@ -25,6 +25,11 @@ namespace Discord.Interactions.Builders | |||
/// </summary> | |||
public bool IsEnabledInDm { get; set; } = true; | |||
/// <summary> | |||
/// Gets whether this command is age restricted. | |||
/// </summary> | |||
public bool IsNsfw { get; set; } = false; | |||
/// <summary> | |||
/// Gets the default permissions needed for executing this command. | |||
/// </summary> | |||
@@ -95,6 +100,19 @@ namespace Discord.Interactions.Builders | |||
return this; | |||
} | |||
/// <summary> | |||
/// Sets <see cref="IsNsfw"/>. | |||
/// </summary> | |||
/// <param name="isNsfw">New value of the <see cref="IsNsfw"/>.</param> | |||
/// <returns> | |||
/// The builder instance. | |||
/// </returns> | |||
public ContextCommandBuilder SetNsfw(bool isNsfw) | |||
{ | |||
IsNsfw = isNsfw; | |||
return this; | |||
} | |||
/// <summary> | |||
/// Sets <see cref="DefaultMemberPermissions"/>. | |||
/// </summary> | |||
@@ -25,6 +25,11 @@ namespace Discord.Interactions.Builders | |||
/// </summary> | |||
public bool IsEnabledInDm { get; set; } = true; | |||
/// <summary> | |||
/// Gets whether this command is age restricted. | |||
/// </summary> | |||
public bool IsNsfw { get; set; } = false; | |||
/// <summary> | |||
/// Gets the default permissions needed for executing this command. | |||
/// </summary> | |||
@@ -95,6 +100,19 @@ namespace Discord.Interactions.Builders | |||
return this; | |||
} | |||
/// <summary> | |||
/// Sets <see cref="IsNsfw"/>. | |||
/// </summary> | |||
/// <param name="isNsfw">New value of the <see cref="IsNsfw"/>.</param> | |||
/// <returns> | |||
/// The builder instance. | |||
/// </returns> | |||
public SlashCommandBuilder SetNsfw(bool isNsfw) | |||
{ | |||
IsNsfw = isNsfw; | |||
return this; | |||
} | |||
/// <summary> | |||
/// Sets <see cref="DefaultMemberPermissions"/>. | |||
/// </summary> | |||
@@ -59,6 +59,11 @@ namespace Discord.Interactions.Builders | |||
/// </summary> | |||
public bool IsEnabledInDm { get; set; } = true; | |||
/// <summary> | |||
/// Gets whether this command is age restricted. | |||
/// </summary> | |||
public bool IsNsfw { get; set; } = false; | |||
/// <summary> | |||
/// Gets the default permissions needed for executing this command. | |||
/// </summary> | |||
@@ -101,6 +101,9 @@ namespace Discord.Interactions.Builders | |||
case DontAutoRegisterAttribute dontAutoRegister: | |||
builder.DontAutoRegister = true; | |||
break; | |||
case NsfwCommandAttribute nsfwCommand: | |||
builder.IsNsfw = nsfwCommand.IsNsfw; | |||
break; | |||
default: | |||
builder.AddAttributes(attribute); | |||
break; | |||
@@ -192,6 +195,9 @@ namespace Discord.Interactions.Builders | |||
case PreconditionAttribute precondition: | |||
builder.WithPreconditions(precondition); | |||
break; | |||
case NsfwCommandAttribute nsfwCommand: | |||
builder.SetNsfw(nsfwCommand.IsNsfw); | |||
break; | |||
default: | |||
builder.WithAttributes(attribute); | |||
break; | |||
@@ -244,6 +250,9 @@ namespace Discord.Interactions.Builders | |||
case PreconditionAttribute precondition: | |||
builder.WithPreconditions(precondition); | |||
break; | |||
case NsfwCommandAttribute nsfwCommand: | |||
builder.SetNsfw(nsfwCommand.IsNsfw); | |||
break; | |||
default: | |||
builder.WithAttributes(attribute); | |||
break; | |||
@@ -20,6 +20,9 @@ namespace Discord.Interactions | |||
/// <inheritdoc/> | |||
public bool IsEnabledInDm { get; } | |||
/// <inheritdoc/> | |||
public bool IsNsfw { get; } | |||
/// <inheritdoc/> | |||
public GuildPermission? DefaultMemberPermissions { get; } | |||
@@ -37,6 +40,7 @@ namespace Discord.Interactions | |||
{ | |||
CommandType = builder.CommandType; | |||
DefaultPermission = builder.DefaultPermission; | |||
IsNsfw = builder.IsNsfw; | |||
IsEnabledInDm = builder.IsEnabledInDm; | |||
DefaultMemberPermissions = builder.DefaultMemberPermissions; | |||
Parameters = builder.Parameters.Select(x => x.Build(this)).ToImmutableArray(); | |||
@@ -29,6 +29,9 @@ namespace Discord.Interactions | |||
/// <inheritdoc/> | |||
public bool IsEnabledInDm { get; } | |||
/// <inheritdoc/> | |||
public bool IsNsfw { get; } | |||
/// <inheritdoc/> | |||
public GuildPermission? DefaultMemberPermissions { get; } | |||
@@ -48,6 +51,7 @@ namespace Discord.Interactions | |||
Description = builder.Description; | |||
DefaultPermission = builder.DefaultPermission; | |||
IsEnabledInDm = builder.IsEnabledInDm; | |||
IsNsfw = builder.IsNsfw; | |||
DefaultMemberPermissions = builder.DefaultMemberPermissions; | |||
Parameters = builder.Parameters.Select(x => x.Build(this)).ToImmutableArray(); | |||
FlattenedParameters = FlattenParameters(Parameters).ToImmutableArray(); | |||
@@ -28,6 +28,11 @@ namespace Discord.Interactions | |||
/// </summary> | |||
public bool IsEnabledInDm { get; } | |||
/// <summary> | |||
/// Gets whether this command can is age restricted. | |||
/// </summary> | |||
public bool IsNsfw { get; } | |||
/// <summary> | |||
/// Gets the default permissions needed for executing this command. | |||
/// </summary> | |||
@@ -49,6 +49,11 @@ namespace Discord.Interactions | |||
/// </summary> | |||
public bool IsEnabledInDm { get; } | |||
/// <summary> | |||
/// Gets whether this command is age restricted. | |||
/// </summary> | |||
public bool IsNsfw { get; } | |||
/// <summary> | |||
/// Gets the default permissions needed for executing this command. | |||
/// </summary> | |||
@@ -121,6 +126,7 @@ namespace Discord.Interactions | |||
Description = builder.Description; | |||
Parent = parent; | |||
DefaultPermission = builder.DefaultPermission; | |||
IsNsfw = builder.IsNsfw; | |||
IsEnabledInDm = builder.IsEnabledInDm; | |||
DefaultMemberPermissions = BuildDefaultMemberPermissions(builder); | |||
SlashCommands = BuildSlashCommands(builder).ToImmutableArray(); | |||
@@ -54,6 +54,7 @@ namespace Discord.Interactions | |||
Description = commandInfo.Description, | |||
IsDefaultPermission = commandInfo.DefaultPermission, | |||
IsDMEnabled = commandInfo.IsEnabledInDm, | |||
IsNsfw = commandInfo.IsNsfw, | |||
DefaultMemberPermissions = ((commandInfo.DefaultMemberPermissions ?? 0) | (commandInfo.Module.DefaultMemberPermissions ?? 0)).SanitizeGuildPermissions(), | |||
}.WithNameLocalizations(localizationManager?.GetAllNames(commandPath, LocalizationTarget.Command) ?? ImmutableDictionary<string, string>.Empty) | |||
.WithDescriptionLocalizations(localizationManager?.GetAllDescriptions(commandPath, LocalizationTarget.Command) ?? ImmutableDictionary<string, string>.Empty) | |||
@@ -97,7 +98,8 @@ namespace Discord.Interactions | |||
Name = commandInfo.Name, | |||
IsDefaultPermission = commandInfo.DefaultPermission, | |||
DefaultMemberPermissions = ((commandInfo.DefaultMemberPermissions ?? 0) | (commandInfo.Module.DefaultMemberPermissions ?? 0)).SanitizeGuildPermissions(), | |||
IsDMEnabled = commandInfo.IsEnabledInDm | |||
IsDMEnabled = commandInfo.IsEnabledInDm, | |||
IsNsfw = commandInfo.IsNsfw, | |||
} | |||
.WithNameLocalizations(localizationManager?.GetAllNames(commandPath, LocalizationTarget.Command) ?? ImmutableDictionary<string, string>.Empty) | |||
.Build(), | |||
@@ -106,6 +108,7 @@ namespace Discord.Interactions | |||
Name = commandInfo.Name, | |||
IsDefaultPermission = commandInfo.DefaultPermission, | |||
DefaultMemberPermissions = ((commandInfo.DefaultMemberPermissions ?? 0) | (commandInfo.Module.DefaultMemberPermissions ?? 0)).SanitizeGuildPermissions(), | |||
IsNsfw = commandInfo.IsNsfw, | |||
IsDMEnabled = commandInfo.IsEnabledInDm | |||
} | |||
.WithNameLocalizations(localizationManager?.GetAllNames(commandPath, LocalizationTarget.Command) ?? ImmutableDictionary<string, string>.Empty) | |||
@@ -225,6 +228,7 @@ namespace Discord.Interactions | |||
IsDefaultPermission = command.IsDefaultPermission, | |||
DefaultMemberPermissions = (GuildPermission)command.DefaultMemberPermissions.RawValue, | |||
IsDMEnabled = command.IsEnabledInDm, | |||
IsNsfw = command.IsNsfw, | |||
Options = command.Options?.Select(x => x.ToApplicationCommandOptionProps())?.ToList() ?? Optional<List<ApplicationCommandOptionProperties>>.Unspecified, | |||
NameLocalizations = command.NameLocalizations?.ToImmutableDictionary() ?? ImmutableDictionary<string, string>.Empty, | |||
DescriptionLocalizations = command.DescriptionLocalizations?.ToImmutableDictionary() ?? ImmutableDictionary<string, string>.Empty, | |||
@@ -234,6 +238,7 @@ namespace Discord.Interactions | |||
Name = command.Name, | |||
IsDefaultPermission = command.IsDefaultPermission, | |||
DefaultMemberPermissions = (GuildPermission)command.DefaultMemberPermissions.RawValue, | |||
IsNsfw = command.IsNsfw, | |||
IsDMEnabled = command.IsEnabledInDm, | |||
NameLocalizations = command.NameLocalizations?.ToImmutableDictionary() ?? ImmutableDictionary<string, string>.Empty, | |||
DescriptionLocalizations = command.DescriptionLocalizations?.ToImmutableDictionary() ?? ImmutableDictionary<string, string>.Empty | |||
@@ -243,6 +248,7 @@ namespace Discord.Interactions | |||
Name = command.Name, | |||
IsDefaultPermission = command.IsDefaultPermission, | |||
DefaultMemberPermissions = (GuildPermission)command.DefaultMemberPermissions.RawValue, | |||
IsNsfw = command.IsNsfw, | |||
IsDMEnabled = command.IsEnabledInDm, | |||
NameLocalizations = command.NameLocalizations?.ToImmutableDictionary() ?? ImmutableDictionary<string, string>.Empty, | |||
DescriptionLocalizations = command.DescriptionLocalizations?.ToImmutableDictionary() ?? ImmutableDictionary<string, string>.Empty | |||