From ff421688f1b746d8670b9e4e07ee95e75e7b278d Mon Sep 17 00:00:00 2001 From: Skillz4Killz <23035000+Skillz4Killz@users.noreply.github.com> Date: Mon, 21 Mar 2022 11:04:58 +0000 Subject: [PATCH] fix: add perm checking for timeouts. Closes #1972 --- plugins/permissions/src/members/editMember.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/plugins/permissions/src/members/editMember.ts b/plugins/permissions/src/members/editMember.ts index 1b16b9740..c8f8352e1 100644 --- a/plugins/permissions/src/members/editMember.ts +++ b/plugins/permissions/src/members/editMember.ts @@ -1,5 +1,5 @@ import { BotWithCache, PermissionStrings } from "../../deps.ts"; -import { requireBotGuildPermissions } from "../permissions.ts"; +import { hasGuildPermissions, requireBotGuildPermissions, requireGuildPermissions } from "../permissions.ts"; export default function editMember(bot: BotWithCache) { const editMemberOld = bot.helpers.editMember; @@ -13,6 +13,17 @@ export default function editMember(bot: BotWithCache) { if (options.mute !== undefined) requiredPerms.push("MUTE_MEMBERS"); if (options.deaf !== undefined) requiredPerms.push("DEAFEN_MEMBERS"); + if (options.communicationDisabledUntil) { + const guild = bot.guilds.get(guildId); + if (guild) { + if (guild.ownerId === memberId) throw new Error("You can not timeout the servers owner."); + } + + if (!hasGuildPermissions(bot, guildId, memberId, ["ADMINISTRATOR"])) { + throw new Error("You can not timeout a server administrator."); + } + } + if (requiredPerms.length) { requireBotGuildPermissions(bot, guildId, requiredPerms); }