|
1 | 1 | 'use strict';
|
2 | 2 |
|
| 3 | +const { DiscordAPIError } = require('@discordjs/rest'); |
3 | 4 | const { lazy } = require('@discordjs/util');
|
4 |
| -const { ChannelType, PermissionFlagsBits, Routes, ChannelFlags } = require('discord-api-types/v10'); |
| 5 | +const { RESTJSONErrorCodes, ChannelFlags, ChannelType, PermissionFlagsBits, Routes } = require('discord-api-types/v10'); |
5 | 6 | const { BaseChannel } = require('./BaseChannel');
|
6 | 7 | const getThreadOnlyChannel = lazy(() => require('./ThreadOnlyChannel'));
|
7 | 8 | const TextBasedChannel = require('./interfaces/TextBasedChannel');
|
8 |
| -const { DiscordjsRangeError, ErrorCodes } = require('../errors'); |
| 9 | +const { DiscordjsError, DiscordjsRangeError, ErrorCodes } = require('../errors'); |
9 | 10 | const GuildMessageManager = require('../managers/GuildMessageManager');
|
10 | 11 | const ThreadMemberManager = require('../managers/ThreadMemberManager');
|
11 | 12 | const ChannelFlagsBitField = require('../util/ChannelFlagsBitField');
|
@@ -293,15 +294,21 @@ class ThreadChannel extends BaseChannel {
|
293 | 294 | * @param {BaseFetchOptions} [options] The options for fetching the member
|
294 | 295 | * @returns {Promise<?ThreadMember>}
|
295 | 296 | */
|
296 |
| - async fetchOwner({ cache = true, force = false } = {}) { |
297 |
| - if (!force) { |
298 |
| - const existing = this.members.cache.get(this.ownerId); |
299 |
| - if (existing) return existing; |
| 297 | + async fetchOwner(options) { |
| 298 | + if (!this.ownerId) { |
| 299 | + throw new DiscordjsError(ErrorCodes.FetchOwnerId, 'thread'); |
300 | 300 | }
|
301 | 301 |
|
302 |
| - // We cannot fetch a single thread member, as of this commit's date, Discord API responds with 405 |
303 |
| - const members = await this.members.fetch({ cache }); |
304 |
| - return members.get(this.ownerId) ?? null; |
| 302 | + // TODO: Remove that catch in the next major version |
| 303 | + const member = await this.members._fetchSingle({ ...options, user: this.ownerId }).catch(error => { |
| 304 | + if (error instanceof DiscordAPIError && error.code === RESTJSONErrorCodes.UnknownMember) { |
| 305 | + return null; |
| 306 | + } |
| 307 | + |
| 308 | + throw error; |
| 309 | + }); |
| 310 | + |
| 311 | + return member; |
305 | 312 | }
|
306 | 313 |
|
307 | 314 | /**
|
|
0 commit comments