feat(ForumChannel): add defaultSortOrder (#8633)

This commit is contained in:
Almeida
2022-10-01 15:00:30 +01:00
committed by GitHub
parent 2ea2a85e63
commit 883f6e9202
5 changed files with 35 additions and 0 deletions

View File

@@ -53,6 +53,7 @@ class CategoryChannelChildManager extends DataManager {
* @property {GuildForumTagData[]} [availableTags] The tags that can be used in this channel (forum only).
* @property {DefaultReactionEmoji} [defaultReactionEmoji]
* The emoji to show in the add reaction button on a thread in a guild forum channel.
* @property {SortOrderType} [defaultSortOrder] The default sort order mode used to order posts (forum only).
* @property {string} [reason] Reason for creating the new channel
*/

View File

@@ -141,6 +141,7 @@ class GuildChannelManager extends CachedManager {
videoQualityMode,
availableTags,
defaultReactionEmoji,
defaultSortOrder,
reason,
}) {
parent &&= this.client.channels.resolveId(parent);
@@ -162,6 +163,7 @@ class GuildChannelManager extends CachedManager {
video_quality_mode: videoQualityMode,
available_tags: availableTags?.map(availableTag => transformGuildForumTag(availableTag)),
default_reaction_emoji: defaultReactionEmoji && transformGuildDefaultReaction(defaultReactionEmoji),
default_sort_order: defaultSortOrder,
},
reason,
});
@@ -229,6 +231,7 @@ class GuildChannelManager extends CachedManager {
* @property {?DefaultReactionEmoji} [defaultReactionEmoji] The emoji to set as the default reaction emoji
* @property {number} [defaultThreadRateLimitPerUser] The rate limit per user (slowmode) to set on forum posts
* @property {ChannelFlagsResolvable} [flags] The flags to set on the channel
* @property {?SortOrderType} [defaultSortOrder] The default sort order mode to set on the channel
* @property {string} [reason] Reason for editing this channel
*/
@@ -289,6 +292,7 @@ class GuildChannelManager extends CachedManager {
default_reaction_emoji: data.defaultReactionEmoji && transformGuildDefaultReaction(data.defaultReactionEmoji),
default_thread_rate_limit_per_user: data.defaultThreadRateLimitPerUser,
flags: 'flags' in data ? ChannelFlagsBitField.resolve(data.flags) : undefined,
default_sort_order: data.defaultSortOrder,
},
reason: data.reason,
});

View File

@@ -124,6 +124,16 @@ class ForumChannel extends GuildChannel {
*/
this.topic = data.topic;
}
if ('default_sort_order' in data) {
/**
* The default sort order mode used to order posts
* @type {?SortOrderType}
*/
this.defaultSortOrder = data.default_sort_order;
} else {
this.defaultSortOrder ??= null;
}
}
/**
@@ -205,6 +215,16 @@ class ForumChannel extends GuildChannel {
return this.edit({ topic, reason });
}
/**
* Sets the default sort order mode used to order posts
* @param {?SortOrderType} defaultSortOrder The default sort order mode to set on this channel
* @param {string} [reason] Reason for changing the default sort order
* @returns {Promise<ForumChannel>}
*/
setDefaultSortOrder(defaultSortOrder, reason) {
return this.edit({ defaultSortOrder, reason });
}
// These are here only for documentation purposes - they are implemented by TextBasedChannel
/* eslint-disable no-empty-function */
createWebhook() {}

View File

@@ -333,6 +333,11 @@
* @see {@link https://discord-api-types.dev/api/discord-api-types-rest/common/enum/RESTJSONErrorCodes}
*/
/**
* @external SortOrderType
* @see {@link https://discord-api-types.dev/api/discord-api-types-v10/enum/SortOrderType}
*/
/**
* @external StageInstancePrivacyLevel
* @see {@link https://discord-api-types.dev/api/discord-api-types-v10/enum/StageInstancePrivacyLevel}

View File

@@ -125,6 +125,7 @@ import {
AuditLogOptionsType,
TextChannelType,
ChannelFlags,
SortOrderType,
} from 'discord-api-types/v10';
import { ChildProcess } from 'node:child_process';
import { EventEmitter } from 'node:events';
@@ -2097,6 +2098,7 @@ export class ForumChannel extends TextBasedChannelMixin(GuildChannel, true, [
public defaultAutoArchiveDuration: ThreadAutoArchiveDuration | null;
public nsfw: boolean;
public topic: string | null;
public defaultSortOrder: SortOrderType | null;
public setAvailableTags(tags: GuildForumTagData[], reason?: string): Promise<this>;
public setDefaultReactionEmoji(emojiId: DefaultReactionEmoji | null, reason?: string): Promise<this>;
@@ -2108,6 +2110,7 @@ export class ForumChannel extends TextBasedChannelMixin(GuildChannel, true, [
reason?: string,
): Promise<this>;
public setTopic(topic: string | null, reason?: string): Promise<this>;
public setDefaultSortOrder(defaultSortOrder: SortOrderType | null, reason?: string): Promise<this>;
}
export class PermissionOverwrites extends Base {
@@ -4251,6 +4254,7 @@ export interface CategoryCreateChannelOptions {
videoQualityMode?: VideoQualityMode;
availableTags?: GuildForumTagData[];
defaultReactionEmoji?: DefaultReactionEmoji;
defaultSortOrder?: SortOrderType;
reason?: string;
}
@@ -4932,6 +4936,7 @@ export interface GuildChannelEditOptions {
defaultReactionEmoji?: DefaultReactionEmoji | null;
defaultThreadRateLimitPerUser?: number;
flags?: ChannelFlagsResolvable;
defaultSortOrder?: SortOrderType | null;
reason?: string;
}