@sapphire/framework
Version:
Discord bot framework built for advanced and amazing bots.
114 lines (111 loc) • 4.87 kB
JavaScript
;
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