feat(ThreadChannel): add ThreadChannel#viewable (#6975)

This commit is contained in:
Suneet Tipirneni
2021-11-18 01:58:05 -05:00
committed by GitHub
parent 0c5c7210e7
commit db09d79423
3 changed files with 22 additions and 1 deletions

View File

@@ -551,7 +551,15 @@ class Message extends Base {
* @readonly
*/
get editable() {
return Boolean(this.author.id === this.client.user.id && !this.deleted && (!this.guild || this.channel?.viewable));
const precheck = Boolean(
this.author.id === this.client.user.id && !this.deleted && (!this.guild || this.channel?.viewable),
);
// Regardless of permissions thread messages cannot be edited if
// the thread is locked.
if (this.channel?.isThread()) {
return precheck && !this.channel.locked;
}
return precheck;
}
/**

View File

@@ -442,6 +442,18 @@ class ThreadChannel extends Channel {
return this.permissionsFor(this.client.user)?.has(Permissions.FLAGS.MANAGE_THREADS, false);
}
/**
* Whether the thread is viewable by the client user
* @type {boolean}
* @readonly
*/
get viewable() {
if (this.client.user.id === this.guild.ownerId) return true;
const permissions = this.permissionsFor(this.client.user);
if (!permissions) return false;
return permissions.has(Permissions.FLAGS.VIEW_CHANNEL, false);
}
/**
* Whether the client user can send messages in this thread
* @type {boolean}

1
typings/index.d.ts vendored
View File

@@ -2099,6 +2099,7 @@ export class ThreadChannel extends TextBasedChannel(Channel) {
public readonly joined: boolean;
public locked: boolean | null;
public readonly manageable: boolean;
public readonly viewable: boolean;
public readonly sendable: boolean;
public memberCount: number | null;
public messageCount: number | null;