UNPKG

@sapphire/framework

Version:

Discord bot framework built for advanced and amazing bots.

114 lines (111 loc) 4.87 kB
'use strict'; var builders = require('@discordjs/builders'); var utilities = require('@sapphire/utilities'); var v10 = require('discord-api-types/v10'); var discord_js = require('discord.js'); var __defProp = Object.defineProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); function isBuilder(command) { return command instanceof builders.SlashCommandBuilder; } __name(isBuilder, "isBuilder"); function addDefaultsToChatInputJSON(data) { data.dm_permission ??= true; data.type ??= v10.ApplicationCommandType.ChatInput; data.default_member_permissions ??= null; return data; } __name(addDefaultsToChatInputJSON, "addDefaultsToChatInputJSON"); function addDefaultsToContextMenuJSON(data) { data.dm_permission ??= true; data.default_member_permissions ??= null; return data; } __name(addDefaultsToContextMenuJSON, "addDefaultsToContextMenuJSON"); function normalizeChatInputCommand(command) { if (utilities.isFunction(command)) { const builder = new builders.SlashCommandBuilder(); command(builder); return addDefaultsToChatInputJSON(builder.toJSON()); } if (isBuilder(command)) { return addDefaultsToChatInputJSON(command.toJSON()); } const finalObject = { name: command.name, name_localizations: command.nameLocalizations, description: command.description, description_localizations: command.descriptionLocalizations, type: v10.ApplicationCommandType.ChatInput, dm_permission: command.dmPermission, nsfw: command.nsfw, integration_types: command.integrationTypes, contexts: command.contexts }; if (typeof command.defaultMemberPermissions !== "undefined") { finalObject.default_member_permissions = command.defaultMemberPermissions === null ? null : new discord_js.PermissionsBitField(command.defaultMemberPermissions).bitfield.toString(); } if (command.options?.length) { finalObject.options = command.options.map((option) => discord_js.ApplicationCommand["transformOption"](option)); } return addDefaultsToChatInputJSON(finalObject); } __name(normalizeChatInputCommand, "normalizeChatInputCommand"); function normalizeContextMenuCommand(command) { if (utilities.isFunction(command)) { const builder = new builders.ContextMenuCommandBuilder(); command(builder); return addDefaultsToContextMenuJSON(builder.toJSON()); } if (command instanceof builders.ContextMenuCommandBuilder) { return addDefaultsToContextMenuJSON(command.toJSON()); } const finalObject = { name: command.name, name_localizations: command.nameLocalizations, // TODO (favna 2024-10-19): Remove this line after discord.js has been updated past 14.16.3 // @ts-ignore temporarily ignore the error because discord.js broke types type: command.type, dm_permission: command.dmPermission, nsfw: command.nsfw, integration_types: command.integrationTypes, contexts: command.contexts }; if (typeof command.defaultMemberPermissions !== "undefined") { finalObject.default_member_permissions = command.defaultMemberPermissions === null ? null : new discord_js.PermissionsBitField(command.defaultMemberPermissions).bitfield.toString(); } return addDefaultsToContextMenuJSON(finalObject); } __name(normalizeContextMenuCommand, "normalizeContextMenuCommand"); function convertApplicationCommandToApiData(command) { const returnData = { name: command.name, name_localizations: command.nameLocalizations, dm_permission: command.dmPermission, nsfw: command.nsfw, default_member_permissions: command.defaultMemberPermissions?.bitfield.toString() ?? null, integration_types: command.integrationTypes, contexts: command.contexts }; if (command.type === v10.ApplicationCommandType.ChatInput) { returnData.type = v10.ApplicationCommandType.ChatInput; returnData.description = command.description; returnData.description_localizations = command.descriptionLocalizations; } else if (command.type === v10.ApplicationCommandType.Message) { returnData.type = v10.ApplicationCommandType.Message; } else if (command.type === v10.ApplicationCommandType.User) { returnData.type = v10.ApplicationCommandType.User; } else { throw new Error(`Unknown command type received: ${command.type}`); } if (command.options.length) { returnData.options = command.options.map((option) => discord_js.ApplicationCommand["transformOption"](option)); } return returnData; } __name(convertApplicationCommandToApiData, "convertApplicationCommandToApiData"); exports.convertApplicationCommandToApiData = convertApplicationCommandToApiData; exports.normalizeChatInputCommand = normalizeChatInputCommand; exports.normalizeContextMenuCommand = normalizeContextMenuCommand; //# sourceMappingURL=normalizeInputs.cjs.map //# sourceMappingURL=normalizeInputs.cjs.map