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