UNPKG

@sapphire/framework

Version:

Discord bot framework built for advanced and amazing bots.

88 lines (86 loc) 4.3 kB
"use strict"; let __sapphire_utilities = require("@sapphire/utilities"); let discord_js = require("discord.js"); let discord_api_types_v10 = require("discord-api-types/v10"); let __discordjs_builders = require("@discordjs/builders"); //#region src/lib/utils/application-commands/normalizeInputs.ts function isBuilder(command) { return command instanceof __discordjs_builders.SlashCommandBuilder; } function addDefaultsToChatInputJSON(data) { data.dm_permission ??= true; data.type ??= discord_api_types_v10.ApplicationCommandType.ChatInput; data.default_member_permissions ??= null; return data; } function addDefaultsToContextMenuJSON(data) { data.dm_permission ??= true; data.default_member_permissions ??= null; return data; } function normalizeChatInputCommand(command) { if ((0, __sapphire_utilities.isFunction)(command)) { const builder = new __discordjs_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: discord_api_types_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); } function normalizeContextMenuCommand(command) { if ((0, __sapphire_utilities.isFunction)(command)) { const builder = new __discordjs_builders.ContextMenuCommandBuilder(); command(builder); return addDefaultsToContextMenuJSON(builder.toJSON()); } if (command instanceof __discordjs_builders.ContextMenuCommandBuilder) return addDefaultsToContextMenuJSON(command.toJSON()); const finalObject = { name: command.name, name_localizations: command.nameLocalizations, 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); } 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 === discord_api_types_v10.ApplicationCommandType.ChatInput) { returnData.type = discord_api_types_v10.ApplicationCommandType.ChatInput; returnData.description = command.description; returnData.description_localizations = command.descriptionLocalizations; } else if (command.type === discord_api_types_v10.ApplicationCommandType.Message) returnData.type = discord_api_types_v10.ApplicationCommandType.Message; else if (command.type === discord_api_types_v10.ApplicationCommandType.User) returnData.type = discord_api_types_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; } //#endregion exports.convertApplicationCommandToApiData = convertApplicationCommandToApiData; exports.normalizeChatInputCommand = normalizeChatInputCommand; exports.normalizeContextMenuCommand = normalizeContextMenuCommand; //# sourceMappingURL=normalizeInputs.cjs.map