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