mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-16 19:43:29 +01:00
feat(Integration): add missing props and fix docs/types (#6623)
Co-authored-by: Noel <buechler.noel@outlook.com>
This commit is contained in:
@@ -559,7 +559,7 @@ class Guild extends AnonymousGuild {
|
|||||||
/**
|
/**
|
||||||
* Fetches a collection of integrations to this guild.
|
* Fetches a collection of integrations to this guild.
|
||||||
* Resolves with a collection mapping integrations by their ids.
|
* Resolves with a collection mapping integrations by their ids.
|
||||||
* @returns {Promise<Collection<string, Integration>>}
|
* @returns {Promise<Collection<Snowflake|string, Integration>>}
|
||||||
* @example
|
* @example
|
||||||
* // Fetch integrations
|
* // Fetch integrations
|
||||||
* guild.fetchIntegrations()
|
* guild.fetchIntegrations()
|
||||||
|
|||||||
@@ -174,7 +174,7 @@ class GuildAuditLogs {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Cached integrations
|
* Cached integrations
|
||||||
* @type {Collection<Snowflake, Integration>}
|
* @type {Collection<Snowflake|string, Integration>}
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
this.integrations = new Collection();
|
this.integrations = new Collection();
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ const IntegrationApplication = require('./IntegrationApplication');
|
|||||||
/**
|
/**
|
||||||
* The information account for an integration
|
* The information account for an integration
|
||||||
* @typedef {Object} IntegrationAccount
|
* @typedef {Object} IntegrationAccount
|
||||||
* @property {string} id The id of the account
|
* @property {Snowflake|string} id The id of the account
|
||||||
* @property {string} name The name of the account
|
* @property {string} name The name of the account
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -25,7 +25,7 @@ class Integration extends Base {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* The integration id
|
* The integration id
|
||||||
* @type {Snowflake}
|
* @type {Snowflake|string}
|
||||||
*/
|
*/
|
||||||
this.id = data.id;
|
this.id = data.id;
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ class Integration extends Base {
|
|||||||
this.name = data.name;
|
this.name = data.name;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The integration type (twitch, youtube, etc)
|
* The integration type (twitch, youtube or discord)
|
||||||
* @type {string}
|
* @type {string}
|
||||||
*/
|
*/
|
||||||
this.type = data.type;
|
this.type = data.type;
|
||||||
@@ -49,16 +49,26 @@ class Integration extends Base {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether this integration is syncing
|
* Whether this integration is syncing
|
||||||
* @type {boolean}
|
* @type {?boolean}
|
||||||
*/
|
*/
|
||||||
this.syncing = data.syncing;
|
this.syncing = data.syncing;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The role that this integration uses for subscribers
|
* The role that this integration uses for subscribers
|
||||||
* @type {Role}
|
* @type {?Role}
|
||||||
*/
|
*/
|
||||||
this.role = this.guild.roles.cache.get(data.role_id);
|
this.role = this.guild.roles.cache.get(data.role_id);
|
||||||
|
|
||||||
|
if ('enable_emoticons' in data) {
|
||||||
|
/**
|
||||||
|
* Whether emoticons should be synced for this integration (twitch only currently)
|
||||||
|
* @type {?boolean}
|
||||||
|
*/
|
||||||
|
this.enableEmoticons = data.enable_emoticons;
|
||||||
|
} else {
|
||||||
|
this.enableEmoticons ??= null;
|
||||||
|
}
|
||||||
|
|
||||||
if (data.user) {
|
if (data.user) {
|
||||||
/**
|
/**
|
||||||
* The user for this integration
|
* The user for this integration
|
||||||
@@ -77,9 +87,30 @@ class Integration extends Base {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* The last time this integration was last synced
|
* The last time this integration was last synced
|
||||||
* @type {number}
|
* @type {?number}
|
||||||
*/
|
*/
|
||||||
this.syncedAt = data.synced_at;
|
this.syncedAt = data.synced_at;
|
||||||
|
|
||||||
|
if ('subscriber_count' in data) {
|
||||||
|
/**
|
||||||
|
* How many subscribers this integration has
|
||||||
|
* @type {?number}
|
||||||
|
*/
|
||||||
|
this.subscriberCount = data.subscriber_count;
|
||||||
|
} else {
|
||||||
|
this.subscriberCount ??= null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ('revoked' in data) {
|
||||||
|
/**
|
||||||
|
* Whether this integration has been revoked
|
||||||
|
* @type {?boolean}
|
||||||
|
*/
|
||||||
|
this.revoked = data.revoked;
|
||||||
|
} else {
|
||||||
|
this.revoked ??= null;
|
||||||
|
}
|
||||||
|
|
||||||
this._patch(data);
|
this._patch(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,13 +127,13 @@ class Integration extends Base {
|
|||||||
_patch(data) {
|
_patch(data) {
|
||||||
/**
|
/**
|
||||||
* The behavior of expiring subscribers
|
* The behavior of expiring subscribers
|
||||||
* @type {number}
|
* @type {?number}
|
||||||
*/
|
*/
|
||||||
this.expireBehavior = data.expire_behavior;
|
this.expireBehavior = data.expire_behavior;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The grace period before expiring subscribers
|
* The grace period before expiring subscribers
|
||||||
* @type {number}
|
* @type {?number}
|
||||||
*/
|
*/
|
||||||
this.expireGracePeriod = data.expire_grace_period;
|
this.expireGracePeriod = data.expire_grace_period;
|
||||||
|
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ class Role extends Base {
|
|||||||
* The tags this role has
|
* The tags this role has
|
||||||
* @type {?Object}
|
* @type {?Object}
|
||||||
* @property {Snowflake} [botId] The id of the bot this role belongs to
|
* @property {Snowflake} [botId] The id of the bot this role belongs to
|
||||||
* @property {Snowflake} [integrationId] The id of the integration this role belongs to
|
* @property {Snowflake|string} [integrationId] The id of the integration this role belongs to
|
||||||
* @property {true} [premiumSubscriberRole] Whether this is the guild's premium subscription role
|
* @property {true} [premiumSubscriberRole] Whether this is the guild's premium subscription role
|
||||||
*/
|
*/
|
||||||
this.tags = data.tags ? {} : null;
|
this.tags = data.tags ? {} : null;
|
||||||
|
|||||||
@@ -348,6 +348,16 @@ exports.InviteScopes = [
|
|||||||
'webhook.incoming',
|
'webhook.incoming',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
// TODO: change Integration#expireBehavior to this and clean up Integration
|
||||||
|
/**
|
||||||
|
* The behavior of expiring subscribers for Integrations. This can be:
|
||||||
|
* * REMOVE_ROLE
|
||||||
|
* * KICK
|
||||||
|
* @typedef {string} IntegrationExpireBehavior
|
||||||
|
* @see {@link https://discord.com/developers/docs/resources/guild#integration-object-integration-expire-behaviors}
|
||||||
|
*/
|
||||||
|
exports.IntegrationExpireBehaviors = createEnum(['REMOVE_ROLE', 'KICK']);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The type of a message, e.g. `DEFAULT`. Here are the available types:
|
* The type of a message, e.g. `DEFAULT`. Here are the available types:
|
||||||
* * DEFAULT
|
* * DEFAULT
|
||||||
|
|||||||
22
typings/index.d.ts
vendored
22
typings/index.d.ts
vendored
@@ -725,7 +725,7 @@ export class Guild extends AnonymousGuild {
|
|||||||
public editWelcomeScreen(data: WelcomeScreenEditData): Promise<WelcomeScreen>;
|
public editWelcomeScreen(data: WelcomeScreenEditData): Promise<WelcomeScreen>;
|
||||||
public equals(guild: Guild): boolean;
|
public equals(guild: Guild): boolean;
|
||||||
public fetchAuditLogs(options?: GuildAuditLogsFetchOptions): Promise<GuildAuditLogs>;
|
public fetchAuditLogs(options?: GuildAuditLogsFetchOptions): Promise<GuildAuditLogs>;
|
||||||
public fetchIntegrations(): Promise<Collection<string, Integration>>;
|
public fetchIntegrations(): Promise<Collection<Snowflake | string, Integration>>;
|
||||||
public fetchOwner(options?: FetchOwnerOptions): Promise<GuildMember>;
|
public fetchOwner(options?: FetchOwnerOptions): Promise<GuildMember>;
|
||||||
public fetchPreview(): Promise<GuildPreview>;
|
public fetchPreview(): Promise<GuildPreview>;
|
||||||
public fetchTemplates(): Promise<Collection<GuildTemplate['code'], GuildTemplate>>;
|
public fetchTemplates(): Promise<Collection<GuildTemplate['code'], GuildTemplate>>;
|
||||||
@@ -769,7 +769,7 @@ export class Guild extends AnonymousGuild {
|
|||||||
export class GuildAuditLogs {
|
export class GuildAuditLogs {
|
||||||
public constructor(guild: Guild, data: RawGuildAuditLogData);
|
public constructor(guild: Guild, data: RawGuildAuditLogData);
|
||||||
private webhooks: Collection<Snowflake, Webhook>;
|
private webhooks: Collection<Snowflake, Webhook>;
|
||||||
private integrations: Collection<Snowflake, Integration>;
|
private integrations: Collection<Snowflake | string, Integration>;
|
||||||
|
|
||||||
public entries: Collection<Snowflake, GuildAuditLogsEntry>;
|
public entries: Collection<Snowflake, GuildAuditLogsEntry>;
|
||||||
|
|
||||||
@@ -979,17 +979,20 @@ export class Integration extends Base {
|
|||||||
public account: IntegrationAccount;
|
public account: IntegrationAccount;
|
||||||
public application: IntegrationApplication | null;
|
public application: IntegrationApplication | null;
|
||||||
public enabled: boolean;
|
public enabled: boolean;
|
||||||
public expireBehavior: number;
|
public expireBehavior: number | undefined;
|
||||||
public expireGracePeriod: number;
|
public expireGracePeriod: number | undefined;
|
||||||
public guild: Guild;
|
public guild: Guild;
|
||||||
public id: Snowflake;
|
public id: Snowflake | string;
|
||||||
public name: string;
|
public name: string;
|
||||||
public role: Role;
|
public role: Role | undefined;
|
||||||
|
public enableEmoticons: boolean | null;
|
||||||
public readonly roles: Collection<Snowflake, Role>;
|
public readonly roles: Collection<Snowflake, Role>;
|
||||||
public syncedAt: number;
|
public syncedAt: number | undefined;
|
||||||
public syncing: boolean;
|
public syncing: boolean | undefined;
|
||||||
public type: string;
|
public type: string;
|
||||||
public user: User | null;
|
public user: User | null;
|
||||||
|
public subscriberCount: number | null;
|
||||||
|
public revoked: boolean | null;
|
||||||
public delete(reason?: string): Promise<Integration>;
|
public delete(reason?: string): Promise<Integration>;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2344,6 +2347,7 @@ export const Constants: {
|
|||||||
TextBasedChannelTypes: TextBasedChannelTypes[];
|
TextBasedChannelTypes: TextBasedChannelTypes[];
|
||||||
VoiceBasedChannelTypes: VoiceBasedChannelTypes[];
|
VoiceBasedChannelTypes: VoiceBasedChannelTypes[];
|
||||||
ClientApplicationAssetTypes: ConstantsClientApplicationAssetTypes;
|
ClientApplicationAssetTypes: ConstantsClientApplicationAssetTypes;
|
||||||
|
IntegrationExpireBehaviors: IntegrationExpireBehaviors[];
|
||||||
InviteScopes: InviteScope[];
|
InviteScopes: InviteScope[];
|
||||||
MessageTypes: MessageType[];
|
MessageTypes: MessageType[];
|
||||||
SystemMessageTypes: SystemMessageType[];
|
SystemMessageTypes: SystemMessageType[];
|
||||||
@@ -4115,6 +4119,8 @@ export interface CreateInviteOptions {
|
|||||||
targetType?: InviteTargetType;
|
targetType?: InviteTargetType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type IntegrationExpireBehaviors = 'REMOVE_ROLE' | 'KICK';
|
||||||
|
|
||||||
export type InviteResolvable = string;
|
export type InviteResolvable = string;
|
||||||
|
|
||||||
export type InviteScope =
|
export type InviteScope =
|
||||||
|
|||||||
Reference in New Issue
Block a user