feat: Add role subscription data (#9025)

* feat: add role subscription data

* docs: specify message type

* types: use interface

* docs: add word

---------

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
This commit is contained in:
Jiralite
2023-02-17 19:47:08 +00:00
committed by GitHub
parent 0b76ab4c40
commit 1ba22f4c9e
2 changed files with 33 additions and 0 deletions

View File

@@ -198,6 +198,31 @@ class Message extends Base {
this.position ??= null;
}
if ('role_subscription_data' in data) {
/**
* Role subscription data found on {@link MessageType.RoleSubscriptionPurchase} messages.
* @typedef {Object} RoleSubscriptionData
* @property {Snowflake} roleSubscriptionListingId The id of the SKU and listing the user is subscribed to
* @property {string} tierName The name of the tier the user is subscribed to
* @property {number} totalMonthsSubscribed The total number of months the user has been subscribed for
* @property {boolean} isRenewal Whether this notification is a renewal
*/
/**
* The data of the role subscription purchase or renewal.
* <info>This is present on {@link MessageType.RoleSubscriptionPurchase} messages.</info>
* @type {?RoleSubscriptionData}
*/
this.roleSubscriptionData = {
roleSubscriptionListingId: data.role_subscription_data.role_subscription_listing_id,
tierName: data.role_subscription_data.tier_name,
totalMonthsSubscribed: data.role_subscription_data.total_months_subscribed,
isRenewal: data.role_subscription_data.is_renewal,
};
} else {
this.roleSubscriptionData ??= null;
}
// Discord sends null if the message has not been edited
if (data.edited_timestamp) {
/**

View File

@@ -1921,6 +1921,7 @@ export class Message<InGuild extends boolean = boolean> extends Base {
public reactions: ReactionManager;
public stickers: Collection<Snowflake, Sticker>;
public position: number | null;
public roleSubscriptionData: RoleSubscriptionData | null;
public system: boolean;
public get thread(): AnyThreadChannel | null;
public tts: boolean;
@@ -6016,6 +6017,13 @@ export interface RolePosition {
export type RoleResolvable = Role | Snowflake;
export interface RoleSubscriptionData {
roleSubscriptionListingId: Snowflake;
tierName: string;
totalMonthsSubscribed: number;
isRenewal: boolean;
}
export interface RoleTagData {
botId?: Snowflake;
integrationId?: Snowflake;