UNPKG

@sapphire/framework

Version:

Discord bot framework built for advanced and amazing bots.

60 lines (58 loc) 2.8 kB
import { Identifiers } from "../lib/errors/Identifiers.mjs"; import { AllFlowsPrecondition } from "../lib/structures/Precondition.mjs"; import { CorePrecondition as CorePrecondition$1 } from "./ClientPermissions.mjs"; import { container } from "@sapphire/pieces"; import { ChatInputCommandInteraction, ContextMenuCommandInteraction, PermissionFlagsBits, PermissionsBitField } from "discord.js"; //#region src/preconditions/UserPermissions.ts var CorePrecondition = class extends AllFlowsPrecondition { constructor(..._args) { super(..._args); this.dmChannelPermissions = new PermissionsBitField(~new PermissionsBitField([ PermissionFlagsBits.AddReactions, PermissionFlagsBits.AttachFiles, PermissionFlagsBits.EmbedLinks, PermissionFlagsBits.ReadMessageHistory, PermissionFlagsBits.SendMessages, PermissionFlagsBits.UseExternalEmojis, PermissionFlagsBits.ViewChannel, PermissionFlagsBits.UseExternalStickers, PermissionFlagsBits.MentionEveryone ]).bitfield & PermissionsBitField.All).freeze(); } messageRun(message, _command, context) { const required = context.permissions ?? new PermissionsBitField(); const channel = message.channel; const permissions = message.guild ? channel.permissionsFor(message.author) : this.dmChannelPermissions; return this.sharedRun(required, permissions, "message"); } chatInputRun(interaction, _command, context) { const required = context.permissions ?? new PermissionsBitField(); const permissions = interaction.guildId ? interaction.memberPermissions : this.dmChannelPermissions; return this.sharedRun(required, permissions, "chat input"); } contextMenuRun(interaction, _command, context) { const required = context.permissions ?? new PermissionsBitField(); const permissions = interaction.guildId ? interaction.memberPermissions : this.dmChannelPermissions; return this.sharedRun(required, permissions, "context menu"); } sharedRun(requiredPermissions, availablePermissions, commandType) { if (!availablePermissions) return this.error({ identifier: Identifiers.PreconditionUserPermissionsNoPermissions, message: `I was unable to resolve the end-user's permissions in the ${commandType} command invocation channel.` }); const missing = availablePermissions.missing(requiredPermissions); return missing.length === 0 ? this.ok() : this.error({ identifier: Identifiers.PreconditionUserPermissions, message: `You are missing the following permissions to run this command: ${missing.map((perm) => CorePrecondition$1.readablePermissions[perm]).join(", ")}`, context: { missing } }); } }; container.stores.loadPiece({ name: "UserPermissions", piece: CorePrecondition, store: "preconditions" }); //#endregion export { CorePrecondition }; //# sourceMappingURL=UserPermissions.mjs.map