UNPKG

djskage

Version:

A Discord.js extension for utility commands

128 lines (127 loc) 5.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const discord_js_1 = require("discord.js"); module.exports = { name: "permissions", aliases: ["pms"], description: "Check permissions of a user, role or bot in the current or different channel.", usage: "permissions <user/role/bot> (?c <#id> -> channel, ?u <@id> -> user, ?r <@&id> -> role)", execute: async (kage, client, message) => { const args = message.content.split(" ").slice(2); const b = message.guild?.members.me; if (!message.guild) return; if (!b) return; let c; const channelArg = args.findIndex((arg) => arg.startsWith("?c")); if ((channelArg || channelArg === 0) && channelArg !== -1) { const channelInput = args[channelArg + 1]; const channelMention = channelInput.match(/^<#(\d+)>$/); let targetChannel; if (channelMention) { targetChannel = message.guild?.channels.cache.get(channelMention[1]); } else if (/^\d+$/.test(channelInput)) { targetChannel = message.guild?.channels.cache.get(channelInput); } else { targetChannel = message.guild?.channels.cache.find((channel) => channel.name === channelInput); } c = targetChannel; args.splice(channelArg, 2); } let u; let m; const userArg = args.findIndex((arg) => arg.startsWith("?u")); if ((userArg || userArg === 0) && userArg !== -1) { const userInput = args[userArg + 1]; const userMatch = userInput.match(/^<@!?(\d+)>$/); if (userMatch) { const overrideUser = client.users.cache.get(userMatch[1]); if (overrideUser) u = overrideUser; const overrideMember = message.guild?.members.cache.get(userMatch[1]); if (overrideMember) m = overrideMember; } else if (/^\d+$/.test(userInput)) { u = client.users.cache.get(userInput) || u; m = message.guild?.members.cache.get(userInput) || m; } else { u = client.users.cache.find((user) => user.username === userInput) || u; m = message.guild?.members.cache.find((member) => member.user.username === userInput) || m; } args.splice(userArg, 2); } let r; const roleArg = args.findIndex((arg) => arg.startsWith("?r")); if ((roleArg || roleArg === 0) && roleArg !== -1) { const userInput = args[roleArg + 1]; const userMatch = userInput.match(/^<@&!?(\d+)>$/); if (userMatch) { const overideRole = message.guild?.roles.cache.get(userMatch[1]); if (overideRole) r = overideRole; } else if (/^\d+$/.test(userInput)) { r = message.guild?.roles.cache.get(userInput) || r; } else { r = message.guild?.roles.cache.find((role) => role.name === userInput) || r; } args.splice(roleArg, 2); } const bGP = b?.permissions; const bCP = c ? c.permissionsFor(b) : null; const uGP = m ? m.permissions : null; const uCP = m ? c?.permissionsFor(m) : null; const rGP = r ? r.permissions : null; const rCP = r ? c?.permissionsFor(r) : null; const formatPermissions = (permissions) => { return permissions.toArray().length > 0 ? permissions.toArray().join(", ") : "No permissions granted."; }; const title = `Permission Check - ${r ? r.name : u ? u.username : client.user?.username}`; const em = new discord_js_1.EmbedBuilder() .setColor(kage.options.customisation.embedColor) .setTitle(title) .setFooter({ text: "Djskage - v0.2.0" }) .setThumbnail(r ? r.iconURL({ size: 512, extension: "webp" }) || null : u ? u.displayAvatarURL({ size: 512, extension: "webp" }) : client.user?.displayAvatarURL({ size: 512, extension: "webp" }) || ""); if (uCP) { em.setDescription(`**Channel Permissions for User**${u ? ` **${u.username}**\n> <@${u.id}> \n> \`${u.id}\`` : ""}${c ? ` **in ${c.name}**\n> <#${c.id}> \n> \`${c.id}\`` : ""}\n` + `\`\`\`${formatPermissions(uCP)}\`\`\``); } else if (rCP) { em.setDescription(`**Channel Permissions for Role**${r ? ` **${r.name}**\n> <@&${r.id}> \n> \`${r.id}\`` : ""}${c ? ` **in ${c.name}**\n> <#${c.id}> \n> \`${c.id}\`` : ""}\n\`\`\`${formatPermissions(rCP)}\`\`\``); } else if (uGP) { em.setDescription(`**User Permissions**${u ? ` **${u.username}**\n> <@${u.id}> \n> \`${u.id}\`` : ""}\n\`\`\`${formatPermissions(uGP)}\`\`\``); } else if (rGP) { em.setDescription(`**Role Permissions**${r ? ` **${r.name}**\n> <@&${r.id}> \n> \`${r.id}\`` : ""}\n\`\`\`${formatPermissions(rGP)}\`\`\``); } else if (bCP) { em.setDescription(`**Channel Permissions for Bot**${c ? ` **in ${c.name}**\n> <#${c.id}> \n> \`${c.id}\`` : ""}\n\`\`\`${formatPermissions(bCP)}\`\`\``); } else if (bGP) { em.setDescription(`**Bot Permissions**\n\`\`\`${formatPermissions(bGP)}\`\`\``); } try { await message.reply({ embeds: [em] }); } catch (e) { message.reply("Error sending embed."); } }, };