UNPKG

@sapphire/framework

Version:

Discord bot framework built for advanced and amazing bots.

61 lines (59 loc) 3.1 kB
"use strict"; const require_lib_errors_Identifiers = require('../lib/errors/Identifiers.cjs'); const require_lib_structures_Precondition = require('../lib/structures/Precondition.cjs'); const require_preconditions_ClientPermissions = require('./ClientPermissions.cjs'); let __sapphire_pieces = require("@sapphire/pieces"); let discord_js = require("discord.js"); //#region src/preconditions/UserPermissions.ts var CorePrecondition = class extends require_lib_structures_Precondition.AllFlowsPrecondition { constructor(..._args) { super(..._args); this.dmChannelPermissions = new discord_js.PermissionsBitField(~new discord_js.PermissionsBitField([ discord_js.PermissionFlagsBits.AddReactions, discord_js.PermissionFlagsBits.AttachFiles, discord_js.PermissionFlagsBits.EmbedLinks, discord_js.PermissionFlagsBits.ReadMessageHistory, discord_js.PermissionFlagsBits.SendMessages, discord_js.PermissionFlagsBits.UseExternalEmojis, discord_js.PermissionFlagsBits.ViewChannel, discord_js.PermissionFlagsBits.UseExternalStickers, discord_js.PermissionFlagsBits.MentionEveryone ]).bitfield & discord_js.PermissionsBitField.All).freeze(); } messageRun(message, _command, context) { const required = context.permissions ?? new discord_js.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 discord_js.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 discord_js.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: require_lib_errors_Identifiers.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: require_lib_errors_Identifiers.Identifiers.PreconditionUserPermissions, message: `You are missing the following permissions to run this command: ${missing.map((perm) => require_preconditions_ClientPermissions.CorePrecondition.readablePermissions[perm]).join(", ")}`, context: { missing } }); } }; __sapphire_pieces.container.stores.loadPiece({ name: "UserPermissions", piece: CorePrecondition, store: "preconditions" }); //#endregion exports.CorePrecondition = CorePrecondition; //# sourceMappingURL=UserPermissions.cjs.map