diff --git a/DisCatSharp.ApplicationCommands/ApplicationCommandsModule.cs b/DisCatSharp.ApplicationCommands/ApplicationCommandsModule.cs index dcf9377da..9e67bbaeb 100644 --- a/DisCatSharp.ApplicationCommands/ApplicationCommandsModule.cs +++ b/DisCatSharp.ApplicationCommands/ApplicationCommandsModule.cs @@ -1,64 +1,73 @@ // 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.Threading.Tasks; namespace DisCatSharp.ApplicationCommands { /// /// Represents a base class for application command modules /// public abstract class ApplicationCommandsModule { /// /// Called before the execution of a slash command in the module. /// /// The context. /// Whether or not to execute the slash command. public virtual Task BeforeSlashExecutionAsync(InteractionContext ctx) => Task.FromResult(true); /// /// Called after the execution of a slash command in the module. /// /// The context. /// public virtual Task AfterSlashExecutionAsync(InteractionContext ctx) => Task.CompletedTask; /// /// Called before the execution of a context menu in the module. /// /// The context. /// Whether or not to execute the slash command. public virtual Task BeforeContextMenuExecutionAsync(ContextMenuContext ctx) => Task.FromResult(true); /// /// Called after the execution of a context menu in the module. /// /// The context. /// public virtual Task AfterContextMenuExecutionAsync(ContextMenuContext ctx) => Task.CompletedTask; + + /// + /// Generate the default member permissions. + /// To use on + /// + /// The default needed member permissions. + /// Permission long. + public long GenerateDefaultMemberPermission(Permissions permissions) + => (long)permissions; } } diff --git a/DisCatSharp.ApplicationCommands/Attributes/ContextMenu/ContextMenuAttribute.cs b/DisCatSharp.ApplicationCommands/Attributes/ContextMenu/ContextMenuAttribute.cs index 76d105e00..eac10ee2d 100644 --- a/DisCatSharp.ApplicationCommands/Attributes/ContextMenu/ContextMenuAttribute.cs +++ b/DisCatSharp.ApplicationCommands/Attributes/ContextMenu/ContextMenuAttribute.cs @@ -1,81 +1,81 @@ // 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 whether this command is enabled by default. /// public bool DefaultPermission { get; internal set; } /// /// Gets the commands needed permissions. /// public Permissions DefaultMemberPermissions { get; internal set; } /// /// Gets whether the command can be used in direct messages. /// public bool DmPermission { get; internal set; } /// /// Marks this method as a context menu. /// /// The type of the context menu. /// The name of the context menu. /// The default permission of the context menu. /// The default member permissions. /// The dm permission. - public ContextMenuAttribute(ApplicationCommandType type, string name, bool defaultPermission = true, long defaultMemberPermissions = (long)0, bool dmPermission = true) + public ContextMenuAttribute(ApplicationCommandType type, string name, bool defaultPermission = true, long defaultMemberPermissions = 0, bool dmPermission = true) { if (type == ApplicationCommandType.ChatInput) throw new ArgumentException("Context menus cannot be of type ChatInput (Slash)."); this.Type = type; this.Name = name; this.DefaultPermission = defaultPermission; this.DefaultMemberPermissions = (Permissions)defaultMemberPermissions; this.DmPermission = dmPermission; } } } diff --git a/DisCatSharp.ApplicationCommands/Attributes/SlashCommand/SlashCommandAttribute.cs b/DisCatSharp.ApplicationCommands/Attributes/SlashCommand/SlashCommandAttribute.cs index 6c02c51e8..4ca314b76 100644 --- a/DisCatSharp.ApplicationCommands/Attributes/SlashCommand/SlashCommandAttribute.cs +++ b/DisCatSharp.ApplicationCommands/Attributes/SlashCommand/SlashCommandAttribute.cs @@ -1,75 +1,75 @@ // 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 default permission of this command /// public bool DefaultPermission { get; } /// /// Gets the needed permission of this command /// public Permissions DefaultMemberPermissions { get; set; } /// /// Gets the dm permission of this command /// public bool DmPermission { get; set; } /// /// Marks this method as a slash command /// /// The name of this slash command. /// The description of this slash command. /// Whether everyone can execute this command. /// The default member permissions. /// The dm permission. - public SlashCommandAttribute(string name, string description, bool defaultPermission = true, long defaultMemberPermissions = (long)0, bool dmPermission = true) + public SlashCommandAttribute(string name, string description, bool defaultPermission = true, long defaultMemberPermissions = 0, bool dmPermission = true) { this.Name = name.ToLower(); this.Description = description; this.DefaultPermission = defaultPermission; this.DefaultMemberPermissions = (Permissions)defaultMemberPermissions; this.DmPermission = dmPermission; } } } diff --git a/DisCatSharp.ApplicationCommands/Attributes/SlashCommand/SlashCommandGroupAttribute.cs b/DisCatSharp.ApplicationCommands/Attributes/SlashCommand/SlashCommandGroupAttribute.cs index e67837bc9..1f63a7615 100644 --- a/DisCatSharp.ApplicationCommands/Attributes/SlashCommand/SlashCommandGroupAttribute.cs +++ b/DisCatSharp.ApplicationCommands/Attributes/SlashCommand/SlashCommandGroupAttribute.cs @@ -1,75 +1,75 @@ // 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 default permission of this slash command group /// public bool DefaultPermission { get; set; } /// /// Gets the needed permission of this slash command group /// public Permissions DefaultMemberPermissions { get; set; } /// /// Gets the dm permission of this slash command group /// 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. /// Whether everyone can execute this command. /// The default member permissions. /// The dm permission. - public SlashCommandGroupAttribute(string name, string description, bool defaultPermission = true, long defaultMemberPermissions = (long)0, bool dmPermission = true) + public SlashCommandGroupAttribute(string name, string description, bool defaultPermission = true, long defaultMemberPermissions = 0, bool dmPermission = true) { this.Name = name.ToLower(); this.Description = description; this.DefaultPermission = defaultPermission; this.DefaultMemberPermissions = (Permissions)defaultMemberPermissions; this.DmPermission = dmPermission; } } }