@sapphire/framework
Version:
Discord bot framework built for advanced and amazing bots.
1 lines • 4.91 kB
Source Map (JSON)
{"version":3,"file":"UserPermissions.cjs","names":["AllFlowsPrecondition","PermissionsBitField","PermissionFlagsBits","Identifiers","ClientPrecondition","container"],"sources":["../../../src/preconditions/UserPermissions.ts"],"sourcesContent":["import { container } from '@sapphire/pieces';\nimport {\n\tChatInputCommandInteraction,\n\tContextMenuCommandInteraction,\n\tPermissionFlagsBits,\n\tPermissionsBitField,\n\ttype Message,\n\ttype NewsChannel,\n\ttype TextChannel\n} from 'discord.js';\nimport { Identifiers } from '../lib/errors/Identifiers';\nimport type { Command } from '../lib/structures/Command';\nimport { AllFlowsPrecondition } from '../lib/structures/Precondition';\nimport { CorePrecondition as ClientPrecondition, type PermissionPreconditionContext } from './ClientPermissions';\n\nexport class CorePrecondition extends AllFlowsPrecondition {\n\tprivate readonly dmChannelPermissions = new PermissionsBitField(\n\t\t~new PermissionsBitField([\n\t\t\tPermissionFlagsBits.AddReactions,\n\t\t\tPermissionFlagsBits.AttachFiles,\n\t\t\tPermissionFlagsBits.EmbedLinks,\n\t\t\tPermissionFlagsBits.ReadMessageHistory,\n\t\t\tPermissionFlagsBits.SendMessages,\n\t\t\tPermissionFlagsBits.UseExternalEmojis,\n\t\t\tPermissionFlagsBits.ViewChannel,\n\t\t\tPermissionFlagsBits.UseExternalStickers,\n\t\t\tPermissionFlagsBits.MentionEveryone\n\t\t]).bitfield & PermissionsBitField.All\n\t).freeze();\n\n\tpublic messageRun(message: Message, _command: Command, context: PermissionPreconditionContext): AllFlowsPrecondition.Result {\n\t\tconst required = context.permissions ?? new PermissionsBitField();\n\t\tconst channel = message.channel as TextChannel | NewsChannel;\n\t\tconst permissions = message.guild ? channel.permissionsFor(message.author) : this.dmChannelPermissions;\n\n\t\treturn this.sharedRun(required, permissions, 'message');\n\t}\n\n\tpublic chatInputRun(\n\t\tinteraction: ChatInputCommandInteraction,\n\t\t_command: Command,\n\t\tcontext: PermissionPreconditionContext\n\t): AllFlowsPrecondition.Result {\n\t\tconst required = context.permissions ?? new PermissionsBitField();\n\t\tconst permissions = interaction.guildId ? interaction.memberPermissions : this.dmChannelPermissions;\n\n\t\treturn this.sharedRun(required, permissions, 'chat input');\n\t}\n\n\tpublic contextMenuRun(\n\t\tinteraction: ContextMenuCommandInteraction,\n\t\t_command: Command,\n\t\tcontext: PermissionPreconditionContext\n\t): AllFlowsPrecondition.Result {\n\t\tconst required = context.permissions ?? new PermissionsBitField();\n\t\tconst permissions = interaction.guildId ? interaction.memberPermissions : this.dmChannelPermissions;\n\n\t\treturn this.sharedRun(required, permissions, 'context menu');\n\t}\n\n\tprivate sharedRun(\n\t\trequiredPermissions: PermissionsBitField,\n\t\tavailablePermissions: PermissionsBitField | null,\n\t\tcommandType: string\n\t): AllFlowsPrecondition.Result {\n\t\tif (!availablePermissions) {\n\t\t\treturn this.error({\n\t\t\t\tidentifier: Identifiers.PreconditionUserPermissionsNoPermissions,\n\t\t\t\tmessage: `I was unable to resolve the end-user's permissions in the ${commandType} command invocation channel.`\n\t\t\t});\n\t\t}\n\n\t\tconst missing = availablePermissions.missing(requiredPermissions);\n\t\treturn missing.length === 0\n\t\t\t? this.ok()\n\t\t\t: this.error({\n\t\t\t\t\tidentifier: Identifiers.PreconditionUserPermissions,\n\t\t\t\t\tmessage: `You are missing the following permissions to run this command: ${missing\n\t\t\t\t\t\t.map((perm) => ClientPrecondition.readablePermissions[perm])\n\t\t\t\t\t\t.join(', ')}`,\n\t\t\t\t\tcontext: { missing }\n\t\t\t\t});\n\t}\n}\n\nvoid container.stores.loadPiece({\n\tname: 'UserPermissions',\n\tpiece: CorePrecondition,\n\tstore: 'preconditions'\n});\n"],"mappings":";;;;;;;;AAeA,IAAa,mBAAb,cAAsCA,yDAAqB;;;OACzC,uBAAuB,IAAIC,+BAC3C,CAAC,IAAIA,+BAAoB;GACxBC,+BAAoB;GACpBA,+BAAoB;GACpBA,+BAAoB;GACpBA,+BAAoB;GACpBA,+BAAoB;GACpBA,+BAAoB;GACpBA,+BAAoB;GACpBA,+BAAoB;GACpBA,+BAAoB;GACpB,CAAC,CAAC,WAAWD,+BAAoB,IAClC,CAAC,QAAQ;;CAEV,AAAO,WAAW,SAAkB,UAAmB,SAAqE;EAC3H,MAAM,WAAW,QAAQ,eAAe,IAAIA,gCAAqB;EACjE,MAAM,UAAU,QAAQ;EACxB,MAAM,cAAc,QAAQ,QAAQ,QAAQ,eAAe,QAAQ,OAAO,GAAG,KAAK;AAElF,SAAO,KAAK,UAAU,UAAU,aAAa,UAAU;;CAGxD,AAAO,aACN,aACA,UACA,SAC8B;EAC9B,MAAM,WAAW,QAAQ,eAAe,IAAIA,gCAAqB;EACjE,MAAM,cAAc,YAAY,UAAU,YAAY,oBAAoB,KAAK;AAE/E,SAAO,KAAK,UAAU,UAAU,aAAa,aAAa;;CAG3D,AAAO,eACN,aACA,UACA,SAC8B;EAC9B,MAAM,WAAW,QAAQ,eAAe,IAAIA,gCAAqB;EACjE,MAAM,cAAc,YAAY,UAAU,YAAY,oBAAoB,KAAK;AAE/E,SAAO,KAAK,UAAU,UAAU,aAAa,eAAe;;CAG7D,AAAQ,UACP,qBACA,sBACA,aAC8B;AAC9B,MAAI,CAAC,qBACJ,QAAO,KAAK,MAAM;GACjB,YAAYE,2CAAY;GACxB,SAAS,6DAA6D,YAAY;GAClF,CAAC;EAGH,MAAM,UAAU,qBAAqB,QAAQ,oBAAoB;AACjE,SAAO,QAAQ,WAAW,IACvB,KAAK,IAAI,GACT,KAAK,MAAM;GACX,YAAYA,2CAAY;GACxB,SAAS,kEAAkE,QACzE,KAAK,SAASC,yDAAmB,oBAAoB,MAAM,CAC3D,KAAK,KAAK;GACZ,SAAS,EAAE,SAAS;GACpB,CAAC;;;AAIDC,4BAAU,OAAO,UAAU;CAC/B,MAAM;CACN,OAAO;CACP,OAAO;CACP,CAAC"}