mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
fix: correct permissions checks and cache on update (#6015)
This commit is contained in:
@@ -24,6 +24,8 @@ class ChannelUpdateAction extends Action {
|
||||
old,
|
||||
updated: channel,
|
||||
};
|
||||
} else {
|
||||
client.channels.add(data);
|
||||
}
|
||||
|
||||
return {};
|
||||
|
||||
@@ -6,7 +6,7 @@ const ThreadMember = require('../structures/ThreadMember');
|
||||
const Collection = require('../util/Collection');
|
||||
|
||||
/**
|
||||
* Manages API methods for GuildMembers and stores their cache.
|
||||
* Manages API methods for ThreadMembers and stores their cache.
|
||||
* @extends {BaseManager}
|
||||
*/
|
||||
class ThreadMemberManager extends BaseManager {
|
||||
|
||||
@@ -297,13 +297,22 @@ class ThreadChannel extends Channel {
|
||||
return this.edit({ rateLimitPerUser }, reason);
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether the client user is a member of the thread.
|
||||
* @type {boolean}
|
||||
* @readonly
|
||||
*/
|
||||
get joined() {
|
||||
return this.members.cache.has(this.client.user?.id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether the thread is editable by the client user (name, archived, autoArchiveDuration)
|
||||
* @type {boolean}
|
||||
* @readonly
|
||||
*/
|
||||
get editable() {
|
||||
return this.ownerID === this.client.user.id || this.manageable;
|
||||
return (this.ownerID === this.client.user.id && (this.type !== 'private_thread' || this.joined)) || this.manageable;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -314,6 +323,7 @@ class ThreadChannel extends Channel {
|
||||
get joinable() {
|
||||
return (
|
||||
!this.archived &&
|
||||
!this.joined &&
|
||||
this.permissionsFor(this.client.user)?.has(
|
||||
this.type === 'private_thread' ? Permissions.FLAGS.MANAGE_THREADS : Permissions.FLAGS.VIEW_CHANNEL,
|
||||
false,
|
||||
@@ -338,6 +348,7 @@ class ThreadChannel extends Channel {
|
||||
get sendable() {
|
||||
return (
|
||||
!this.archived &&
|
||||
(this.type !== 'private_thread' || this.joined || this.manageable) &&
|
||||
this.permissionsFor(this.client.user)?.any(
|
||||
[
|
||||
Permissions.FLAGS.SEND_MESSAGES,
|
||||
|
||||
1
typings/index.d.ts
vendored
1
typings/index.d.ts
vendored
@@ -1982,6 +1982,7 @@ declare module 'discord.js' {
|
||||
public guild: Guild;
|
||||
public readonly guildMembers: Collection<Snowflake, GuildMember>;
|
||||
public readonly joinable: boolean;
|
||||
public readonly joined: boolean;
|
||||
public locked: boolean;
|
||||
public readonly manageable: boolean;
|
||||
public readonly sendable: boolean;
|
||||
|
||||
Reference in New Issue
Block a user