From dfd9eb20b2d3e0e7db26744b1f15134ac6eda139 Mon Sep 17 00:00:00 2001
From: Jiralite <33201955+Jiralite@users.noreply.github.com>
Date: Thu, 12 May 2022 09:29:21 +0100
Subject: [PATCH] refactor(ThreadChannel): Remove `MAX` helper from threads
(#7846)
---
.../discord.js/src/managers/GuildChannelManager.js | 6 +-----
packages/discord.js/src/managers/ThreadManager.js | 3 ---
packages/discord.js/src/structures/Message.js | 5 ++---
packages/discord.js/src/structures/ThreadChannel.js | 6 +-----
packages/discord.js/src/util/Util.js | 13 +------------
packages/discord.js/typings/index.d.ts | 11 +++++------
6 files changed, 10 insertions(+), 34 deletions(-)
diff --git a/packages/discord.js/src/managers/GuildChannelManager.js b/packages/discord.js/src/managers/GuildChannelManager.js
index e0be3b1ee..fd520609b 100644
--- a/packages/discord.js/src/managers/GuildChannelManager.js
+++ b/packages/discord.js/src/managers/GuildChannelManager.js
@@ -13,7 +13,6 @@ const Webhook = require('../structures/Webhook');
const { ThreadChannelTypes } = require('../util/Constants');
const DataResolver = require('../util/DataResolver');
const Util = require('../util/Util');
-const { resolveAutoArchiveMaxLimit } = require('../util/Util');
let cacheWarningEmitted = false;
@@ -253,9 +252,6 @@ class GuildChannelManager extends CachedManager {
}
}
- let defaultAutoArchiveDuration = data.defaultAutoArchiveDuration;
- if (defaultAutoArchiveDuration === 'MAX') defaultAutoArchiveDuration = resolveAutoArchiveMaxLimit(this.guild);
-
const newData = await this.client.rest.patch(Routes.channel(channel.id), {
body: {
name: (data.name ?? channel.name).trim(),
@@ -269,7 +265,7 @@ class GuildChannelManager extends CachedManager {
parent_id: parent,
lock_permissions: data.lockPermissions,
rate_limit_per_user: data.rateLimitPerUser,
- default_auto_archive_duration: defaultAutoArchiveDuration,
+ default_auto_archive_duration: data.defaultAutoArchiveDuration,
permission_overwrites,
},
reason,
diff --git a/packages/discord.js/src/managers/ThreadManager.js b/packages/discord.js/src/managers/ThreadManager.js
index e957f2ff3..31e27c71b 100644
--- a/packages/discord.js/src/managers/ThreadManager.js
+++ b/packages/discord.js/src/managers/ThreadManager.js
@@ -6,7 +6,6 @@ const { ChannelType, Routes } = require('discord-api-types/v10');
const CachedManager = require('./CachedManager');
const { TypeError } = require('../errors');
const ThreadChannel = require('../structures/ThreadChannel');
-const { resolveAutoArchiveMaxLimit } = require('../util/Util');
/**
* Manages API methods for {@link ThreadChannel} objects and stores their cache.
@@ -122,8 +121,6 @@ class ThreadManager extends CachedManager {
resolvedType = type ?? resolvedType;
}
- if (autoArchiveDuration === 'MAX') autoArchiveDuration = resolveAutoArchiveMaxLimit(this.channel.guild);
-
const data = await this.client.rest.post(Routes.threads(this.channel.id, startMessageId), {
body: {
name,
diff --git a/packages/discord.js/src/structures/Message.js b/packages/discord.js/src/structures/Message.js
index f2fffb948..bec13b28c 100644
--- a/packages/discord.js/src/structures/Message.js
+++ b/packages/discord.js/src/structures/Message.js
@@ -797,9 +797,8 @@ class Message extends Base {
* archived. This can be:
* * `60` (1 hour)
* * `1440` (1 day)
- * * `4320` (3 days) This is only available when the guild has the `THREE_DAY_THREAD_ARCHIVE` feature.
- * * `10080` (7 days) This is only available when the guild has the `SEVEN_DAY_THREAD_ARCHIVE` feature.
- * * `'MAX'` Based on the guild's features
+ * * `4320` (3 days)
+ * * `10080` (7 days)
* @typedef {number|string} ThreadAutoArchiveDuration
*/
diff --git a/packages/discord.js/src/structures/ThreadChannel.js b/packages/discord.js/src/structures/ThreadChannel.js
index 81146ad3e..5a36c38bb 100644
--- a/packages/discord.js/src/structures/ThreadChannel.js
+++ b/packages/discord.js/src/structures/ThreadChannel.js
@@ -6,7 +6,6 @@ const TextBasedChannel = require('./interfaces/TextBasedChannel');
const { RangeError } = require('../errors');
const MessageManager = require('../managers/MessageManager');
const ThreadMemberManager = require('../managers/ThreadMemberManager');
-const { resolveAutoArchiveMaxLimit } = require('../util/Util');
/**
* Represents a thread channel on Discord.
@@ -313,14 +312,11 @@ class ThreadChannel extends Channel {
* .catch(console.error);
*/
async edit(data, reason) {
- let autoArchiveDuration = data.autoArchiveDuration;
- if (autoArchiveDuration === 'MAX') autoArchiveDuration = resolveAutoArchiveMaxLimit(this.guild);
-
const newData = await this.client.rest.patch(Routes.channel(this.id), {
body: {
name: (data.name ?? this.name).trim(),
archived: data.archived,
- auto_archive_duration: autoArchiveDuration,
+ auto_archive_duration: data.autoArchiveDuration,
rate_limit_per_user: data.rateLimitPerUser,
locked: data.locked,
invitable: this.type === ChannelType.GuildPrivateThread ? data.invitable : undefined,
diff --git a/packages/discord.js/src/util/Util.js b/packages/discord.js/src/util/Util.js
index 0d1da9962..a16cdbea6 100644
--- a/packages/discord.js/src/util/Util.js
+++ b/packages/discord.js/src/util/Util.js
@@ -2,7 +2,7 @@
const { parse } = require('node:path');
const { Collection } = require('@discordjs/collection');
-const { ChannelType, RouteBases, Routes, GuildFeature } = require('discord-api-types/v10');
+const { ChannelType, RouteBases, Routes } = require('discord-api-types/v10');
const { fetch } = require('undici');
const Colors = require('./Colors');
const { Error: DiscordError, RangeError, TypeError } = require('../errors');
@@ -521,17 +521,6 @@ class Util extends null {
static cleanCodeBlockContent(text) {
return text.replaceAll('```', '`\u200b``');
}
-
- /**
- * Resolves the maximum time a guild's thread channels should automatcally archive in case of no recent activity.
- * @param {Guild} guild The guild to resolve this limit from.
- * @returns {number}
- */
- static resolveAutoArchiveMaxLimit({ features }) {
- if (features.includes(GuildFeature.SevenDayThreadArchive)) return 10080;
- if (features.includes(GuildFeature.ThreeDayThreadArchive)) return 4320;
- return 1440;
- }
}
module.exports = Util;
diff --git a/packages/discord.js/typings/index.d.ts b/packages/discord.js/typings/index.d.ts
index 6fea87940..dc6c0e67b 100644
--- a/packages/discord.js/typings/index.d.ts
+++ b/packages/discord.js/typings/index.d.ts
@@ -500,7 +500,7 @@ export class BaseGuildTextChannel extends TextBasedChannelMixin(GuildChannel) {
public createInvite(options?: CreateInviteOptions): Promise;
public fetchInvites(cache?: boolean): Promise>;
public setDefaultAutoArchiveDuration(
- defaultAutoArchiveDuration: ThreadAutoArchiveDuration | 'MAX',
+ defaultAutoArchiveDuration: ThreadAutoArchiveDuration,
reason?: string,
): Promise;
public setNSFW(nsfw?: boolean, reason?: string): Promise;
@@ -2453,7 +2453,7 @@ export class ThreadChannel extends TextBasedChannelMixin(Channel, ['fetchWebhook
public fetchStarterMessage(options?: BaseFetchOptions): Promise;
public setArchived(archived?: boolean, reason?: string): Promise;
public setAutoArchiveDuration(
- autoArchiveDuration: ThreadAutoArchiveDuration | 'MAX',
+ autoArchiveDuration: ThreadAutoArchiveDuration,
reason?: string,
): Promise;
public setInvitable(invitable?: boolean, reason?: string): Promise;
@@ -2582,7 +2582,6 @@ export class Util extends null {
route: string,
reason?: string,
): Promise<{ id: Snowflake; position: number }[]>;
- public static resolveAutoArchiveMaxLimit(guild: Guild): Exclude;
}
export class Components extends null {
@@ -3749,7 +3748,7 @@ export interface ChannelData {
rateLimitPerUser?: number;
lockPermissions?: boolean;
permissionOverwrites?: readonly OverwriteResolvable[] | Collection;
- defaultAutoArchiveDuration?: ThreadAutoArchiveDuration | 'MAX';
+ defaultAutoArchiveDuration?: ThreadAutoArchiveDuration;
rtcRegion?: string | null;
videoQualityMode?: VideoQualityMode | null;
}
@@ -5122,7 +5121,7 @@ export type StageInstanceResolvable = StageInstance | Snowflake;
export interface StartThreadOptions {
name: string;
- autoArchiveDuration?: ThreadAutoArchiveDuration | 'MAX';
+ autoArchiveDuration?: ThreadAutoArchiveDuration;
reason?: string;
rateLimitPerUser?: number;
}
@@ -5230,7 +5229,7 @@ export interface ThreadCreateOptions extends StartThreadOptio
export interface ThreadEditData {
name?: string;
archived?: boolean;
- autoArchiveDuration?: ThreadAutoArchiveDuration | 'MAX';
+ autoArchiveDuration?: ThreadAutoArchiveDuration;
rateLimitPerUser?: number;
locked?: boolean;
invitable?: boolean;