mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-17 12:03: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,
|
old,
|
||||||
updated: channel,
|
updated: channel,
|
||||||
};
|
};
|
||||||
|
} else {
|
||||||
|
client.channels.add(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
return {};
|
return {};
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ const ThreadMember = require('../structures/ThreadMember');
|
|||||||
const Collection = require('../util/Collection');
|
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}
|
* @extends {BaseManager}
|
||||||
*/
|
*/
|
||||||
class ThreadMemberManager extends BaseManager {
|
class ThreadMemberManager extends BaseManager {
|
||||||
|
|||||||
@@ -297,13 +297,22 @@ class ThreadChannel extends Channel {
|
|||||||
return this.edit({ rateLimitPerUser }, reason);
|
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)
|
* Whether the thread is editable by the client user (name, archived, autoArchiveDuration)
|
||||||
* @type {boolean}
|
* @type {boolean}
|
||||||
* @readonly
|
* @readonly
|
||||||
*/
|
*/
|
||||||
get editable() {
|
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() {
|
get joinable() {
|
||||||
return (
|
return (
|
||||||
!this.archived &&
|
!this.archived &&
|
||||||
|
!this.joined &&
|
||||||
this.permissionsFor(this.client.user)?.has(
|
this.permissionsFor(this.client.user)?.has(
|
||||||
this.type === 'private_thread' ? Permissions.FLAGS.MANAGE_THREADS : Permissions.FLAGS.VIEW_CHANNEL,
|
this.type === 'private_thread' ? Permissions.FLAGS.MANAGE_THREADS : Permissions.FLAGS.VIEW_CHANNEL,
|
||||||
false,
|
false,
|
||||||
@@ -338,6 +348,7 @@ class ThreadChannel extends Channel {
|
|||||||
get sendable() {
|
get sendable() {
|
||||||
return (
|
return (
|
||||||
!this.archived &&
|
!this.archived &&
|
||||||
|
(this.type !== 'private_thread' || this.joined || this.manageable) &&
|
||||||
this.permissionsFor(this.client.user)?.any(
|
this.permissionsFor(this.client.user)?.any(
|
||||||
[
|
[
|
||||||
Permissions.FLAGS.SEND_MESSAGES,
|
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 guild: Guild;
|
||||||
public readonly guildMembers: Collection<Snowflake, GuildMember>;
|
public readonly guildMembers: Collection<Snowflake, GuildMember>;
|
||||||
public readonly joinable: boolean;
|
public readonly joinable: boolean;
|
||||||
|
public readonly joined: boolean;
|
||||||
public locked: boolean;
|
public locked: boolean;
|
||||||
public readonly manageable: boolean;
|
public readonly manageable: boolean;
|
||||||
public readonly sendable: boolean;
|
public readonly sendable: boolean;
|
||||||
|
|||||||
Reference in New Issue
Block a user