@sapphire/framework
Version:
Discord bot framework built for advanced and amazing bots.
85 lines (83 loc) • 3.92 kB
JavaScript
import { isFunction } from "@sapphire/utilities";
import { ApplicationCommand, PermissionsBitField } from "discord.js";
import { ApplicationCommandType as ApplicationCommandType$1 } from "discord-api-types/v10";
import { ContextMenuCommandBuilder, SlashCommandBuilder } from "@discordjs/builders";
//#region src/lib/utils/application-commands/normalizeInputs.ts
function isBuilder(command) {
return command instanceof SlashCommandBuilder;
}
function addDefaultsToChatInputJSON(data) {
data.dm_permission ??= true;
data.type ??= ApplicationCommandType$1.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 (isFunction(command)) {
const builder = new 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: ApplicationCommandType$1.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 PermissionsBitField(command.defaultMemberPermissions).bitfield.toString();
if (command.options?.length) finalObject.options = command.options.map((option) => ApplicationCommand["transformOption"](option));
return addDefaultsToChatInputJSON(finalObject);
}
function normalizeContextMenuCommand(command) {
if (isFunction(command)) {
const builder = new ContextMenuCommandBuilder();
command(builder);
return addDefaultsToContextMenuJSON(builder.toJSON());
}
if (command instanceof 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 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 === ApplicationCommandType$1.ChatInput) {
returnData.type = ApplicationCommandType$1.ChatInput;
returnData.description = command.description;
returnData.description_localizations = command.descriptionLocalizations;
} else if (command.type === ApplicationCommandType$1.Message) returnData.type = ApplicationCommandType$1.Message;
else if (command.type === ApplicationCommandType$1.User) returnData.type = ApplicationCommandType$1.User;
else throw new Error(`Unknown command type received: ${command.type}`);
if (command.options.length) returnData.options = command.options.map((option) => ApplicationCommand["transformOption"](option));
return returnData;
}
//#endregion
export { convertApplicationCommandToApiData, normalizeChatInputCommand, normalizeContextMenuCommand };
//# sourceMappingURL=normalizeInputs.mjs.map