UNPKG

@sapphire/framework

Version:

Discord bot framework built for advanced and amazing bots.

69 lines (66 loc) 3.32 kB
'use strict'; var pieces = require('@sapphire/pieces'); var discord_js = require('discord.js'); var Identifiers_cjs = require('../lib/errors/Identifiers.cjs'); var Precondition_cjs = require('../lib/structures/Precondition.cjs'); var ClientPermissions_cjs = require('./ClientPermissions.cjs'); var __defProp = Object.defineProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var _CorePrecondition = class _CorePrecondition extends Precondition_cjs.AllFlowsPrecondition { constructor() { super(...arguments); 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: Identifiers_cjs.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_cjs.Identifiers.PreconditionUserPermissions, message: `You are missing the following permissions to run this command: ${missing.map((perm) => ClientPermissions_cjs.CorePrecondition.readablePermissions[perm]).join(", ")}`, context: { missing } }); } }; __name(_CorePrecondition, "CorePrecondition"); var CorePrecondition = _CorePrecondition; void pieces.container.stores.loadPiece({ name: "UserPermissions", piece: CorePrecondition, store: "preconditions" }); exports.CorePrecondition = CorePrecondition; //# sourceMappingURL=UserPermissions.cjs.map //# sourceMappingURL=UserPermissions.cjs.map