diff options
author | sowgro <tpoke.ferrari@gmail.com> | 2023-09-02 19:12:47 -0400 |
---|---|---|
committer | sowgro <tpoke.ferrari@gmail.com> | 2023-09-02 19:12:47 -0400 |
commit | e4450c8417624b71d779cb4f41692538f9165e10 (patch) | |
tree | b70826542223ecdf8a7a259f61b0a1abb8a217d8 /node_modules/discord.js/src/structures/ThreadMember.js | |
download | sowbot3-e4450c8417624b71d779cb4f41692538f9165e10.tar.gz sowbot3-e4450c8417624b71d779cb4f41692538f9165e10.tar.bz2 sowbot3-e4450c8417624b71d779cb4f41692538f9165e10.zip |
first commit
Diffstat (limited to 'node_modules/discord.js/src/structures/ThreadMember.js')
-rw-r--r-- | node_modules/discord.js/src/structures/ThreadMember.js | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/node_modules/discord.js/src/structures/ThreadMember.js b/node_modules/discord.js/src/structures/ThreadMember.js new file mode 100644 index 0000000..fc79dd0 --- /dev/null +++ b/node_modules/discord.js/src/structures/ThreadMember.js @@ -0,0 +1,113 @@ +'use strict'; + +const Base = require('./Base'); +const ThreadMemberFlagsBitField = require('../util/ThreadMemberFlagsBitField'); + +/** + * Represents a Member for a Thread. + * @extends {Base} + */ +class ThreadMember extends Base { + constructor(thread, data, extra = {}) { + super(thread.client); + + /** + * The thread that this member is a part of + * @type {ThreadChannel} + */ + this.thread = thread; + + /** + * The timestamp the member last joined the thread at + * @type {?number} + */ + this.joinedTimestamp = null; + + /** + * The flags for this thread member. This will be `null` if partial. + * @type {?ThreadMemberFlagsBitField} + */ + this.flags = null; + + /** + * The id of the thread member + * @type {Snowflake} + */ + this.id = data.user_id; + + this._patch(data, extra); + } + + _patch(data, extra = {}) { + if ('join_timestamp' in data) this.joinedTimestamp = Date.parse(data.join_timestamp); + if ('flags' in data) this.flags = new ThreadMemberFlagsBitField(data.flags).freeze(); + + if ('member' in data) { + /** + * The guild member associated with this thread member. + * @type {?GuildMember} + * @private + */ + this.member = this.thread.guild.members._add(data.member, extra.cache); + } else { + this.member ??= null; + } + } + + /** + * Whether this thread member is a partial + * @type {boolean} + * @readonly + */ + get partial() { + return this.flags === null; + } + + /** + * The guild member associated with this thread member + * @type {?GuildMember} + * @readonly + */ + get guildMember() { + return this.member ?? this.thread.guild.members.resolve(this.id); + } + + /** + * The last time this member joined the thread + * @type {?Date} + * @readonly + */ + get joinedAt() { + return this.joinedTimestamp && new Date(this.joinedTimestamp); + } + + /** + * The user associated with this thread member + * @type {?User} + * @readonly + */ + get user() { + return this.client.users.resolve(this.id); + } + + /** + * Whether the client user can manage this thread member + * @type {boolean} + * @readonly + */ + get manageable() { + return !this.thread.archived && this.thread.editable; + } + + /** + * Removes this member from the thread. + * @param {string} [reason] Reason for removing the member + * @returns {ThreadMember} + */ + async remove(reason) { + await this.thread.members.remove(this.id, reason); + return this; + } +} + +module.exports = ThreadMember; |