diff --git a/lib/structures/GuildChannel.js b/lib/structures/GuildChannel.js index 51acb7ad9..5c3bf2264 100644 --- a/lib/structures/GuildChannel.js +++ b/lib/structures/GuildChannel.js @@ -5,6 +5,7 @@ const Collection = require("../util/Collection"); const Permission = require("./Permission"); const {Permissions} = require("../Constants"); const PermissionOverwrite = require("./PermissionOverwrite"); +const ThreadChannel = require("./ThreadChannel"); /** * Represents a guild channel. You also probably want to look at CategoryChannel, NewsChannel, StoreChannel, TextChannel, and VoiceChannel. See Channel for extra properties. @@ -127,20 +128,21 @@ class GuildChannel extends Channel { if(permission & Permissions.administrator) { return new Permission(Permissions.all); } - let overwrite = this.permissionOverwrites.get(this.guild.id); + const channel = this instanceof ThreadChannel ? this.guild.channels.get(this.parentID) : this; + let overwrite = channel && channel.permissionOverwrites.get(this.guild.id); if(overwrite) { permission = (permission & ~overwrite.deny) | overwrite.allow; } let deny = 0n; let allow = 0n; for(const roleID of member.roles) { - if((overwrite = this.permissionOverwrites.get(roleID))) { + if((overwrite = channel && channel.permissionOverwrites.get(roleID))) { deny |= overwrite.deny; allow |= overwrite.allow; } } permission = (permission & ~deny) | allow; - overwrite = this.permissionOverwrites.get(member.id); + overwrite = channel && channel.permissionOverwrites.get(member.id); if(overwrite) { permission = (permission & ~overwrite.deny) | overwrite.allow; }