diff --git a/DisCatSharp.ApplicationCommands/Attributes/ContextMenu/ContextMenuAttribute.cs b/DisCatSharp.ApplicationCommands/Attributes/ContextMenu/ContextMenuAttribute.cs index 859abac1f..5bd8598a2 100644 --- a/DisCatSharp.ApplicationCommands/Attributes/ContextMenu/ContextMenuAttribute.cs +++ b/DisCatSharp.ApplicationCommands/Attributes/ContextMenu/ContextMenuAttribute.cs @@ -1,74 +1,90 @@ // This file is part of the DisCatSharp project, based off DSharpPlus. // // Copyright (c) 2021-2022 AITSYS // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. using System; using DisCatSharp.Enums; namespace DisCatSharp.ApplicationCommands { /// /// Marks this method as a context menu. /// [AttributeUsage(AttributeTargets.Method)] public sealed class ContextMenuAttribute : Attribute { /// /// Gets the name of this context menu. /// public string Name { get; internal set; } /// /// Gets the type of this context menu. /// public ApplicationCommandType Type { get; internal set; } /// /// Gets the commands needed permissions. /// - public Permissions DefaultMemberPermissions { get; internal set; } + public Permissions? DefaultMemberPermissions { get; internal set; } /// /// Gets whether the command can be used in direct messages. /// - public bool DmPermission { get; internal set; } + internal bool? DmPermission { get; set; } + + /// + /// Marks this method as a context menu. + /// + /// The type of the context menu. + /// The name of the context menu. + public ContextMenuAttribute(ApplicationCommandType type, string name) + { + if (type == ApplicationCommandType.ChatInput) + throw new ArgumentException("Context menus cannot be of type ChatInput (Slash)."); + + this.Type = type; + this.Name = name; + this.DefaultMemberPermissions = null; + this.DmPermission = null; + } + /// /// Marks this method as a context menu. /// /// The type of the context menu. /// The name of the context menu. /// The default member permissions. - /// The dm permission. - public ContextMenuAttribute(ApplicationCommandType type, string name, long defaultMemberPermissions = 0, bool dmPermission = true) + public ContextMenuAttribute(ApplicationCommandType type, string name, long defaultMemberPermissions) { if (type == ApplicationCommandType.ChatInput) throw new ArgumentException("Context menus cannot be of type ChatInput (Slash)."); this.Type = type; this.Name = name; this.DefaultMemberPermissions = (Permissions)defaultMemberPermissions; - this.DmPermission = dmPermission; - } + this.DmPermission = null; + } } } diff --git a/DisCatSharp.ApplicationCommands/Attributes/SlashCommand/SlashCommandAttribute.cs b/DisCatSharp.ApplicationCommands/Attributes/SlashCommand/SlashCommandAttribute.cs index ebd3296b3..9f876b782 100644 --- a/DisCatSharp.ApplicationCommands/Attributes/SlashCommand/SlashCommandAttribute.cs +++ b/DisCatSharp.ApplicationCommands/Attributes/SlashCommand/SlashCommandAttribute.cs @@ -1,68 +1,109 @@ // This file is part of the DisCatSharp project, based off DSharpPlus. // // Copyright (c) 2021-2022 AITSYS // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. using System; namespace DisCatSharp.ApplicationCommands { /// /// Marks this method as a slash command /// [AttributeUsage(AttributeTargets.Method)] public class SlashCommandAttribute : Attribute { /// /// Gets the name of this command /// public string Name { get; set; } /// /// Gets the description of this command /// public string Description { get; set; } /// /// Gets the needed permission of this command /// - public Permissions DefaultMemberPermissions { get; set; } + public Permissions? DefaultMemberPermissions { get; set; } /// /// Gets the dm permission of this command /// - public bool DmPermission { get; set; } + public bool? DmPermission { get; set; } + + /// + /// Marks this method as a slash command + /// + /// The name of this slash command. + /// The description of this slash command. + public SlashCommandAttribute(string name, string description) + { + this.Name = name.ToLower(); + this.Description = description; + this.DefaultMemberPermissions = null; + this.DmPermission = null; + } + + /// + /// Marks this method as a slash command + /// + /// The name of this slash command. + /// The description of this slash command. + /// The default member permissions. + public SlashCommandAttribute(string name, string description, long defaultMemberPermissions) + { + this.Name = name.ToLower(); + this.Description = description; + this.DefaultMemberPermissions = (Permissions?)defaultMemberPermissions; + this.DmPermission = null; + } + + /// + /// Marks this method as a slash command + /// + /// The name of this slash command. + /// The description of this slash command. + /// The dm permission. + public SlashCommandAttribute(string name, string description, bool dmPermission) + { + this.Name = name.ToLower(); + this.Description = description; + this.DefaultMemberPermissions = null; + this.DmPermission = dmPermission; + } /// /// Marks this method as a slash command /// /// The name of this slash command. /// The description of this slash command. /// The default member permissions. /// The dm permission. - public SlashCommandAttribute(string name, string description, long defaultMemberPermissions = 0, bool dmPermission = true) + public SlashCommandAttribute(string name, string description, long defaultMemberPermissions, bool dmPermission) { this.Name = name.ToLower(); this.Description = description; - this.DefaultMemberPermissions = (Permissions)defaultMemberPermissions; + this.DefaultMemberPermissions = (Permissions?)defaultMemberPermissions; this.DmPermission = dmPermission; } } } diff --git a/DisCatSharp.ApplicationCommands/Attributes/SlashCommand/SlashCommandGroupAttribute.cs b/DisCatSharp.ApplicationCommands/Attributes/SlashCommand/SlashCommandGroupAttribute.cs index 5b85d48fd..184b81b98 100644 --- a/DisCatSharp.ApplicationCommands/Attributes/SlashCommand/SlashCommandGroupAttribute.cs +++ b/DisCatSharp.ApplicationCommands/Attributes/SlashCommand/SlashCommandGroupAttribute.cs @@ -1,68 +1,109 @@ // This file is part of the DisCatSharp project, based off DSharpPlus. // // Copyright (c) 2021-2022 AITSYS // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. using System; namespace DisCatSharp.ApplicationCommands { /// /// Marks this class a slash command group /// [AttributeUsage(AttributeTargets.Class)] public class SlashCommandGroupAttribute : Attribute { /// /// Gets the name of this slash command group /// public string Name { get; set; } /// /// Gets the description of this slash command group /// public string Description { get; set; } /// /// Gets the needed permission of this slash command group /// - public Permissions DefaultMemberPermissions { get; set; } + public Permissions? DefaultMemberPermissions { get; set; } /// /// Gets the dm permission of this slash command group /// - public bool DmPermission { get; set; } + public bool? DmPermission { get; set; } /// /// Marks this class as a slash command group /// /// The name of this slash command group. /// The description of this slash command group. + public SlashCommandGroupAttribute(string name, string description) + { + this.Name = name.ToLower(); + this.Description = description; + this.DefaultMemberPermissions = null; + this.DmPermission = null; + } + + /// + /// Marks this method as a slash command group + /// + /// The name of this slash command. + /// The description of this slash command. + /// The default member permissions. + public SlashCommandGroupAttribute(string name, string description, long defaultMemberPermissions) + { + this.Name = name.ToLower(); + this.Description = description; + this.DefaultMemberPermissions = (Permissions?)defaultMemberPermissions; + this.DmPermission = null; + } + + /// + /// Marks this method as a slash command group + /// + /// The name of this slash command. + /// The description of this slash command. + /// The dm permission. + public SlashCommandGroupAttribute(string name, string description, bool dmPermission) + { + this.Name = name.ToLower(); + this.Description = description; + this.DefaultMemberPermissions = null; + this.DmPermission = dmPermission; + } + + /// + /// Marks this method as a slash command group + /// + /// The name of this slash command. + /// The description of this slash command. /// The default member permissions. /// The dm permission. - public SlashCommandGroupAttribute(string name, string description, long defaultMemberPermissions = 0, bool dmPermission = true) + public SlashCommandGroupAttribute(string name, string description, long defaultMemberPermissions, bool dmPermission) { this.Name = name.ToLower(); this.Description = description; - this.DefaultMemberPermissions = (Permissions)defaultMemberPermissions; + this.DefaultMemberPermissions = (Permissions?)defaultMemberPermissions; this.DmPermission = dmPermission; } } }