From 570323ba25fa3a9a3dd74fc0f9225ea0c96419e8 Mon Sep 17 00:00:00 2001 From: Valithor Obsidion Date: Thu, 10 Mar 2022 08:33:29 -0500 Subject: [PATCH] Threads inherit permissions from the channel in which they were created (#759) --- src/Discord/Parts/User/Member.php | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/Discord/Parts/User/Member.php b/src/Discord/Parts/User/Member.php index a2dcf2974..430d4385d 100644 --- a/src/Discord/Parts/User/Member.php +++ b/src/Discord/Parts/User/Member.php @@ -25,6 +25,7 @@ use Discord\Parts\Part; use Discord\Parts\Permissions\Permission; use Discord\Parts\Permissions\RolePermission; +use Discord\Parts\Thread\Thread; use Discord\Parts\WebSockets\PresenceUpdate; use React\Promise\ExtendedPromiseInterface; @@ -301,12 +302,21 @@ public function sendMessage($message, bool $tts = false, $embed = null, $allowed * * @see https://discord.com/developers/docs/topics/permissions * - * @param Channel|null $channel + * @param Channel|Thread|null $channel + * + * @throws \InvalidArgumentException * * @return RolePermission */ - public function getPermissions(?Channel $channel = null): RolePermission + public function getPermissions($channel = null): RolePermission { + if ($channel) { + if ($channel instanceof Thread) { + $channel = $this->guild->channels->get('id', $channel->parent_id); + } elseif (!($channel instanceof Channel)) { + throw new \InvalidArgumentException('$channel must be an instance of Channel, Thread or null.'); + } + } // Get @everyone role guild permission $bitwise = $this->guild->roles->get('id', $this->guild_id)->permissions->bitwise;