Skip to content

Commit 79d999e

Browse files
authored
feat: Guest invites (#11079)
feat(Invite): add `flags`
1 parent 215f8dc commit 79d999e

File tree

5 files changed

+55
-0
lines changed

5 files changed

+55
-0
lines changed

packages/discord.js/src/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ exports.Events = require('./util/Events');
3333
exports.Formatters = require('./util/Formatters');
3434
exports.GuildMemberFlagsBitField = require('./util/GuildMemberFlagsBitField').GuildMemberFlagsBitField;
3535
exports.IntentsBitField = require('./util/IntentsBitField');
36+
exports.InviteFlagsBitField = require('./util/InviteFlagsBitField.js').InviteFlagsBitField;
3637
exports.LimitedCollection = require('./util/LimitedCollection');
3738
exports.MessageFlagsBitField = require('./util/MessageFlagsBitField');
3839
exports.Options = require('./util/Options');

packages/discord.js/src/structures/Invite.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ const { GuildScheduledEvent } = require('./GuildScheduledEvent');
66
const IntegrationApplication = require('./IntegrationApplication');
77
const InviteStageInstance = require('./InviteStageInstance');
88
const { DiscordjsError, ErrorCodes } = require('../errors');
9+
const { InviteFlagsBitField } = require('../util/InviteFlagsBitField.js');
910

1011
/**
1112
* Represents an invitation to a guild channel.
@@ -222,6 +223,17 @@ class Invite extends Base {
222223
} else {
223224
this.guildScheduledEvent ??= null;
224225
}
226+
227+
if ('flags' in data) {
228+
/**
229+
* The flags of this invite.
230+
*
231+
* @type {Readonly<InviteFlagsBitField>}
232+
*/
233+
this.flags = new InviteFlagsBitField(data.flags).freeze();
234+
} else {
235+
this.flags ??= new InviteFlagsBitField().freeze();
236+
}
225237
}
226238

227239
/**

packages/discord.js/src/util/APITypes.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -515,6 +515,11 @@
515515
* @see {@link https://discord-api-types.dev/api/discord-api-types-v10/enum/InteractionResponseType}
516516
*/
517517

518+
/**
519+
* @external InviteFlags
520+
* @see {@link https://discord-api-types.dev/api/discord-api-types-v10/enum/InviteFlags}
521+
*/
522+
518523
/**
519524
* @external InviteType
520525
* @see {@link https://discord-api-types.dev/api/discord-api-types-v10/enum/InviteType}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
'use strict';
2+
3+
const { InviteFlags } = require('discord-api-types/v10');
4+
const { BitField } = require('./BitField.js');
5+
6+
/**
7+
* Data structure that makes it easy to interact with a {@link GuildInvite#flags} bit field.
8+
*
9+
* @extends {BitField}
10+
*/
11+
class InviteFlagsBitField extends BitField {
12+
/**
13+
* Numeric invite flags.
14+
*
15+
* @type {InviteFlags}
16+
* @memberof InviteFlagsBitField
17+
*/
18+
static Flags = InviteFlags;
19+
}
20+
21+
/**
22+
* @name InviteFlagsBitField
23+
* @kind constructor
24+
* @memberof InviteFlagsBitField
25+
* @param {BitFieldResolvable} [bits=0] Bit(s) to read from
26+
*/
27+
28+
exports.InviteFlagsBitField = InviteFlagsBitField;

packages/discord.js/typings/index.d.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,7 @@ import {
215215
APIFileComponent,
216216
APIMessageTopLevelComponent,
217217
EntryPointCommandHandlerType,
218+
InviteFlags,
218219
} from 'discord-api-types/v10';
219220
import { ChildProcess } from 'node:child_process';
220221
import { EventEmitter } from 'node:events';
@@ -2274,6 +2275,7 @@ export class Invite extends Base {
22742275
/** @deprecated Public Stage Instances don't exist anymore */
22752276
public stageInstance: InviteStageInstance | null;
22762277
public guildScheduledEvent: GuildScheduledEvent | null;
2278+
public flags: Readonly<InviteFlagsBitField>;
22772279
}
22782280

22792281
/** @deprecated Public Stage Instances don't exist anymore */
@@ -2294,6 +2296,13 @@ export class InviteGuild extends AnonymousGuild {
22942296
public welcomeScreen: WelcomeScreen | null;
22952297
}
22962298

2299+
export type InviteFlagsString = keyof typeof InviteFlags;
2300+
2301+
export class InviteFlagsBitField extends BitField<InviteFlagsString> {
2302+
public static Flags: typeof InviteFlags;
2303+
public static resolve(bit?: BitFieldResolvable<InviteFlagsString, number>): number;
2304+
}
2305+
22972306
export class LimitedCollection<Key, Value> extends Collection<Key, Value> {
22982307
public constructor(options?: LimitedCollectionOptions<Key, Value>, iterable?: Iterable<readonly [Key, Value]>);
22992308
public maxSize: number;

0 commit comments

Comments
 (0)