lunibee 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/builders/attachment.d.ts +1 -0
- package/dist/builders/clone.d.ts +10 -0
- package/dist/builders/commands.d.ts +1 -1
- package/dist/builders/components.d.ts +24 -5
- package/dist/builders/index.js +64 -17
- package/dist/builders/index.js.map +10 -9
- package/dist/collection/index.d.ts +1 -0
- package/dist/collection/index.js +297 -19
- package/dist/collection/index.js.map +5 -4
- package/dist/collection/redis.d.ts +98 -0
- package/dist/core/collector.d.ts +8 -0
- package/dist/core/events.d.ts +1 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.js +6213 -4716
- package/dist/core/index.js.map +46 -39
- package/dist/core/permissions.d.ts +3 -402
- package/dist/core/redis-cache.d.ts +85 -0
- package/dist/formatters/index.d.ts +5 -1
- package/dist/formatters/index.js +7 -3
- package/dist/formatters/index.js.map +3 -3
- package/dist/handlers/index.js +11 -2
- package/dist/handlers/index.js.map +3 -3
- package/dist/index.js +8272 -6085
- package/dist/index.js.map +64 -58
- package/dist/managers/application.d.ts +10 -6
- package/dist/managers/base.d.ts +4 -1
- package/dist/managers/guild.d.ts +3 -1
- package/dist/managers/index.d.ts +6 -1
- package/dist/managers/index.js +365 -103
- package/dist/managers/index.js.map +19 -22
- package/dist/managers/member.d.ts +3 -1
- package/dist/managers/message.d.ts +13 -4
- package/dist/managers/thread.d.ts +3 -3
- package/dist/rest/decoder.d.ts +2 -0
- package/dist/rest/errors.d.ts +5 -2
- package/dist/rest/headers.d.ts +31 -0
- package/dist/rest/identity.d.ts +31 -0
- package/dist/rest/index.d.ts +97 -6
- package/dist/rest/index.js +1350 -220
- package/dist/rest/index.js.map +16 -13
- package/dist/rest/limiter.d.ts +75 -10
- package/dist/rest/redis.d.ts +103 -22
- package/dist/rest/scheduler.d.ts +13 -0
- package/dist/rest/store.d.ts +135 -12
- package/dist/rest/telemetry.d.ts +151 -0
- package/dist/rest/webhook.d.ts +18 -6
- package/dist/sharding/bus.d.ts +4 -2
- package/dist/sharding/cluster.d.ts +1 -1
- package/dist/sharding/health.d.ts +1 -1
- package/dist/sharding/host.d.ts +6 -0
- package/dist/sharding/identify.d.ts +2 -0
- package/dist/sharding/index.d.ts +6 -0
- package/dist/sharding/index.js +205 -39
- package/dist/sharding/index.js.map +14 -14
- package/dist/sharding/remote.d.ts +18 -2
- package/dist/sharding/supervisor.d.ts +1 -1
- package/dist/sharding/transport.d.ts +6 -5
- package/dist/sharding/worker.d.ts +11 -1
- package/dist/structures/base.d.ts +16 -5
- package/dist/structures/index.d.ts +1 -1
- package/dist/structures/index.js +57 -91
- package/dist/structures/index.js.map +10 -18
- package/dist/structures/options.d.ts +3 -2
- package/dist/structures/permissions.d.ts +409 -0
- package/dist/structures/resources.d.ts +4 -1
- package/dist/types/gateway.d.ts +4 -0
- package/dist/types/index.d.ts +14 -4
- package/dist/types/index.js.map +3 -3
- package/dist/utils/args.d.ts +3 -1
- package/dist/utils/index.d.ts +6 -1
- package/dist/utils/index.js +17 -10
- package/dist/utils/index.js.map +4 -4
- package/dist/voice/index.d.ts +7 -1
- package/dist/voice/index.js +33 -10
- package/dist/voice/index.js.map +3 -3
- package/dist/ws/index.d.ts +2 -0
- package/dist/ws/index.js +32 -4
- package/dist/ws/index.js.map +5 -5
- package/package.json +19 -16
|
@@ -40,10 +40,26 @@ export interface RemoteOptions {
|
|
|
40
40
|
* a shard never runs in two places. Default 15,000.
|
|
41
41
|
*/
|
|
42
42
|
lease?: number;
|
|
43
|
-
/** Milliseconds a new connection has to authenticate before it is closed. Default
|
|
43
|
+
/** Milliseconds a new connection has to authenticate before it is closed. Default 3,000. */
|
|
44
44
|
helloTimeout?: number;
|
|
45
|
-
/**
|
|
45
|
+
/**
|
|
46
|
+
* Most connections that may be waiting to authenticate at once. When full,
|
|
47
|
+
* the one that has waited longest is closed to make room: a host answers
|
|
48
|
+
* the challenge within a round trip, a connection that holds a slot idle
|
|
49
|
+
* does not. Default 16.
|
|
50
|
+
*/
|
|
46
51
|
maxUnauthenticated?: number;
|
|
52
|
+
/** The same limit for one client address (see `clientAddress`). Default 4. */
|
|
53
|
+
maxUnauthenticatedPerAddress?: number;
|
|
54
|
+
/** New connections one client address may open per second; more are refused. Default 10. */
|
|
55
|
+
connectionsPerSecond?: number;
|
|
56
|
+
/**
|
|
57
|
+
* The client address the per-address limits count by. Default: the peer
|
|
58
|
+
* address of the TCP connection. Behind a TLS proxy every peer is the
|
|
59
|
+
* proxy, so return the client address the proxy forwards (only from a
|
|
60
|
+
* header your proxy sets and overwrites).
|
|
61
|
+
*/
|
|
62
|
+
clientAddress?: (request: Request, peer: string | undefined) => string;
|
|
47
63
|
/** Also run clusters on the coordinator's own machine. Default false: clusters run on the hosts only. */
|
|
48
64
|
local?: boolean;
|
|
49
65
|
}
|
|
@@ -4,7 +4,7 @@ export interface SupervisorOptions {
|
|
|
4
4
|
restartDelay?: number;
|
|
5
5
|
/** Each further crash in the window multiplies the delay by this (default 1: a fixed delay). */
|
|
6
6
|
backoff?: number;
|
|
7
|
-
/** The longest delay (default 5 minutes). */
|
|
7
|
+
/** The longest delay, jitter included (default 5 minutes). */
|
|
8
8
|
maxDelay?: number;
|
|
9
9
|
/** Random spread added to each delay, as a fraction of it (0-1, default 0). */
|
|
10
10
|
jitter?: number;
|
|
@@ -28,14 +28,15 @@ export interface IpcEndpoint {
|
|
|
28
28
|
on(event: "message", listener: (message: unknown) => void): unknown;
|
|
29
29
|
off(event: "message", listener: (message: unknown) => void): unknown;
|
|
30
30
|
}
|
|
31
|
-
/**
|
|
32
|
-
* Forked clusters: a worker `send()`s to its parent, and the parent
|
|
33
|
-
* ({@link ClusterManager}) relays to every other worker. Selected
|
|
34
|
-
* automatically in a worker forked by `ClusterManager`.
|
|
35
|
-
*/
|
|
36
31
|
export declare class IpcTransport implements ShardBusTransport {
|
|
37
32
|
#private;
|
|
38
33
|
constructor(endpoint?: IpcEndpoint);
|
|
34
|
+
/**
|
|
35
|
+
* Sends to the parent, which relays to other clusters, and delivers to the
|
|
36
|
+
* other buses in this process: the parent never sends a message back to the
|
|
37
|
+
* cluster it came from, so without this a shard could not reach a shard in
|
|
38
|
+
* its own worker. Each bus drops what is not addressed to it.
|
|
39
|
+
*/
|
|
39
40
|
post(message: ShardMessage): void;
|
|
40
41
|
onMessage(listener: (message: ShardMessage) => void): void;
|
|
41
42
|
onPeerDown(listener: (shardIds: readonly number[]) => void): void;
|
|
@@ -27,7 +27,17 @@ export declare class ClusterWorker {
|
|
|
27
27
|
/** Forgets the process-wide worker (tests). */
|
|
28
28
|
static reset(): void;
|
|
29
29
|
readonly context: ClusterContext;
|
|
30
|
-
constructor(context: ClusterContext, endpoint?: WorkerEndpoint
|
|
30
|
+
constructor(context: ClusterContext, endpoint?: WorkerEndpoint, options?: {
|
|
31
|
+
/**
|
|
32
|
+
* Exit when the parent's IPC channel closes. Without a parent
|
|
33
|
+
* nothing coordinates IDENTIFY or fences this process, and its
|
|
34
|
+
* Gateway sessions would keep running beside a replacement.
|
|
35
|
+
* Default: true for the real process, false for an injected endpoint.
|
|
36
|
+
*/
|
|
37
|
+
exitOnParentLoss?: boolean;
|
|
38
|
+
/** Replaces `process.exit`; for tests. */
|
|
39
|
+
exit?: (code: number) => void;
|
|
40
|
+
});
|
|
31
41
|
/** The gate to use when the parent coordinates IDENTIFY, otherwise `undefined`. */
|
|
32
42
|
get identifyGate(): IdentifyGate | undefined;
|
|
33
43
|
/** Tells the parent every shard of this process finished its handshake. */
|
|
@@ -11,6 +11,7 @@ export declare class BaseStructure {
|
|
|
11
11
|
/** Returns the timestamp this snowflake was created at. */
|
|
12
12
|
get createdAt(): Date;
|
|
13
13
|
}
|
|
14
|
+
/** What a structure uses to act on Discord (send, edit, fetch, compute permissions). `Client` supplies it; tests can supply their own. */
|
|
14
15
|
export interface ResourceContext {
|
|
15
16
|
sendMessage(channelId: string, options: MessageCreateOptions): Promise<import("./index.js").Message>;
|
|
16
17
|
editMessage(channelId: string, messageId: string, options: MessageEditOptions): Promise<import("./index.js").Message>;
|
|
@@ -29,7 +30,9 @@ export interface ResourceContext {
|
|
|
29
30
|
* (with overwrites) when a channel ID is given. Null when the guild (or
|
|
30
31
|
* channel) is not cached.
|
|
31
32
|
*/
|
|
32
|
-
|
|
33
|
+
/** The cached channel, when the client has a complete one (not a partial placeholder). */
|
|
34
|
+
cachedChannel?(channelId: string): Channel | undefined;
|
|
35
|
+
memberPermissions?(guildId: string, memberId: string, roleIds: readonly string[], channelId?: string, timedOutUntil?: Date | null): import("./permissions.js").PermissionSet | null;
|
|
33
36
|
kickMember?(guildId: string, userId: string, reason?: string): Promise<void>;
|
|
34
37
|
banMember?(guildId: string, userId: string, options?: {
|
|
35
38
|
reason?: string;
|
|
@@ -49,7 +52,7 @@ export interface ResourceContext {
|
|
|
49
52
|
* Permissions to change on one overwrite: `true` allows, `false` denies,
|
|
50
53
|
* `null` goes back to inheriting. Permissions not named keep their state.
|
|
51
54
|
*/
|
|
52
|
-
export type PermissionOverwriteChanges = Partial<Record<import("
|
|
55
|
+
export type PermissionOverwriteChanges = Partial<Record<import("./permissions.js").PermissionName, boolean | null>>;
|
|
53
56
|
export declare const CDN_BASE = "https://cdn.discordapp.com";
|
|
54
57
|
/** Options for CDN image URLs. */
|
|
55
58
|
export interface ImageURLOptions {
|
|
@@ -94,8 +97,16 @@ export declare class Channel extends BaseStructure {
|
|
|
94
97
|
position?: number;
|
|
95
98
|
/** Role and member permission overwrites (empty for DMs and when not provided). */
|
|
96
99
|
permissionOverwrites: import("@lunibee/types").APIOverwrite[];
|
|
97
|
-
/**
|
|
98
|
-
|
|
100
|
+
/**
|
|
101
|
+
* A placeholder built from a message's `channel_id`, not from channel
|
|
102
|
+
* data: its `type`, `name`, `parentId` and `permissionOverwrites` are not
|
|
103
|
+
* the real channel's, so nothing may decide access from them.
|
|
104
|
+
*/
|
|
105
|
+
partial: boolean;
|
|
106
|
+
/** Creates a channel structure from Discord channel data. `options.partial` marks a placeholder. */
|
|
107
|
+
constructor(data: import("@lunibee/types").APIChannel, context?: ResourceContext, options?: {
|
|
108
|
+
partial?: boolean;
|
|
109
|
+
});
|
|
99
110
|
/** Sends a message to this channel. @param options Message payload. @returns The created message. @throws {Error} If the channel is not attached to a client. */
|
|
100
111
|
send(options: MessageCreateOptions): Promise<import("./index.js").Message>;
|
|
101
112
|
/** Edits this channel. @param options Channel fields to change. @returns The updated channel. @throws {Error} If the channel is not attached to a client. */
|
|
@@ -125,7 +136,7 @@ export declare class Channel extends BaseStructure {
|
|
|
125
136
|
get kind(): ChannelKind | UnknownChannelKind;
|
|
126
137
|
/**
|
|
127
138
|
* Whether this channel is one of `kinds`, narrowing its type to match.
|
|
128
|
-
* @example if (channel.is("text", "announcement")) await channel.send("hi");
|
|
139
|
+
* @example if (channel.is("text", "announcement")) await channel.send({ content: "hi" });
|
|
129
140
|
*/
|
|
130
141
|
is<K extends ChannelKind | UnknownChannelKind>(...kinds: K[]): this is ChannelOfKind<K>;
|
|
131
142
|
/**
|
|
@@ -116,4 +116,4 @@ export * from "./interactions.js";
|
|
|
116
116
|
export { Embed } from "./embed.js";
|
|
117
117
|
export { AuditLog, AuditLogEntry, type AuditLogAutoModInfo, type AuditLogInfo, type AuditLogInfoByType, type AuditLogOverwriteInfo, type AuditLogQuery, } from "./audit-log.js";
|
|
118
118
|
export { Sticker, stickerURL } from "./sticker.js";
|
|
119
|
-
export { PermissionsBitField } from "
|
|
119
|
+
export { Permission, Permissions, PermissionFlagsBits, PermissionSet, PermissionsBitField, PermissionOverwriteEnum, computePermissions, type PermissionContext, type PermissionOverwrite, type PermissionRole, type PermissionName, type PermissionResolvable, } from "./permissions.js";
|
package/dist/structures/index.js
CHANGED
|
@@ -162,8 +162,9 @@ class Channel extends BaseStructure {
|
|
|
162
162
|
rateLimitPerUser;
|
|
163
163
|
position;
|
|
164
164
|
permissionOverwrites;
|
|
165
|
+
partial;
|
|
165
166
|
#context;
|
|
166
|
-
constructor(data, context) {
|
|
167
|
+
constructor(data, context, options = {}) {
|
|
167
168
|
super(data.id);
|
|
168
169
|
if (!Number.isInteger(data.type) || data.type < 0)
|
|
169
170
|
throw new RangeError("A Discord channel requires a valid channel type.");
|
|
@@ -176,6 +177,7 @@ class Channel extends BaseStructure {
|
|
|
176
177
|
this.rateLimitPerUser = data.rate_limit_per_user;
|
|
177
178
|
this.position = data.position;
|
|
178
179
|
this.permissionOverwrites = (data.permission_overwrites ?? []).map((overwrite) => ({ ...overwrite }));
|
|
180
|
+
this.partial = options.partial ?? false;
|
|
179
181
|
this.#context = context;
|
|
180
182
|
}
|
|
181
183
|
send(options) {
|
|
@@ -366,7 +368,12 @@ class Guild extends BaseStructure {
|
|
|
366
368
|
}
|
|
367
369
|
}
|
|
368
370
|
|
|
369
|
-
// packages/
|
|
371
|
+
// packages/structures/src/permissions.ts
|
|
372
|
+
var PermissionOverwriteEnum;
|
|
373
|
+
((PermissionOverwriteEnum) => {
|
|
374
|
+
PermissionOverwriteEnum[PermissionOverwriteEnum["Role"] = 0] = "Role";
|
|
375
|
+
PermissionOverwriteEnum[PermissionOverwriteEnum["Member"] = 1] = "Member";
|
|
376
|
+
})(PermissionOverwriteEnum ||= {});
|
|
370
377
|
var Permission = {
|
|
371
378
|
createInstantInvite: 1n << 0n,
|
|
372
379
|
kickMembers: 1n << 1n,
|
|
@@ -648,6 +655,15 @@ class PermissionSet {
|
|
|
648
655
|
get useExternalApps() {
|
|
649
656
|
return (this.bitfield & Permission.useExternalApps) === Permission.useExternalApps;
|
|
650
657
|
}
|
|
658
|
+
get setVoiceChannelStatus() {
|
|
659
|
+
return (this.bitfield & Permission.setVoiceChannelStatus) === Permission.setVoiceChannelStatus;
|
|
660
|
+
}
|
|
661
|
+
get pinMessages() {
|
|
662
|
+
return (this.bitfield & Permission.pinMessages) === Permission.pinMessages;
|
|
663
|
+
}
|
|
664
|
+
get bypassSlowmode() {
|
|
665
|
+
return (this.bitfield & Permission.bypassSlowmode) === Permission.bypassSlowmode;
|
|
666
|
+
}
|
|
651
667
|
has(...permissions) {
|
|
652
668
|
if (permissions.length === 1) {
|
|
653
669
|
const p = permissions[0];
|
|
@@ -750,94 +766,38 @@ class PermissionsBitField extends PermissionSet {
|
|
|
750
766
|
}
|
|
751
767
|
}
|
|
752
768
|
var ALL_PERMISSIONS = Object.values(Permission).reduce((bits, bit) => bits | bit, 0n);
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
module: "./src/index.ts",
|
|
785
|
-
types: "./src/index.ts",
|
|
786
|
-
exports: {
|
|
787
|
-
".": "./src/index.ts"
|
|
788
|
-
},
|
|
789
|
-
dependencies: {
|
|
790
|
-
"@lunibee/types": "workspace:*"
|
|
791
|
-
}
|
|
792
|
-
};
|
|
793
|
-
|
|
794
|
-
// packages/rest/src/index.ts
|
|
795
|
-
var LIBRARY_VERSION = package_default.version;
|
|
796
|
-
var LIBRARY_URL = "https://github.com/Ekretos/lunibee";
|
|
797
|
-
var USER_AGENT = `DiscordBot (${LIBRARY_URL}, ${LIBRARY_VERSION})`;
|
|
798
|
-
var REQUEST_DATA_KEYS = new Set([
|
|
799
|
-
"body",
|
|
800
|
-
"files",
|
|
801
|
-
"query",
|
|
802
|
-
"headers",
|
|
803
|
-
"reason",
|
|
804
|
-
"auth",
|
|
805
|
-
"signal"
|
|
806
|
-
]);
|
|
807
|
-
// packages/managers/src/index.ts
|
|
808
|
-
var BULK_DELETE_MAX_AGE_MS = 14 * 24 * 60 * 60000;
|
|
809
|
-
|
|
810
|
-
// packages/ws/src/close-codes.ts
|
|
811
|
-
var GatewayCloseCodes = {
|
|
812
|
-
UnknownError: 4000,
|
|
813
|
-
UnknownOpcode: 4001,
|
|
814
|
-
DecodeError: 4002,
|
|
815
|
-
NotAuthenticated: 4003,
|
|
816
|
-
AuthenticationFailed: 4004,
|
|
817
|
-
AlreadyAuthenticated: 4005,
|
|
818
|
-
InvalidSeq: 4007,
|
|
819
|
-
RateLimited: 4008,
|
|
820
|
-
SessionTimedOut: 4009,
|
|
821
|
-
InvalidShard: 4010,
|
|
822
|
-
ShardingRequired: 4011,
|
|
823
|
-
InvalidAPIVersion: 4012,
|
|
824
|
-
InvalidIntents: 4013,
|
|
825
|
-
DisallowedIntents: 4014
|
|
826
|
-
};
|
|
769
|
+
var bits = (value) => new PermissionSet(value).bitfield;
|
|
770
|
+
function computePermissions(context) {
|
|
771
|
+
if (context.ownerId !== undefined && context.ownerId === context.memberId)
|
|
772
|
+
return new PermissionSet(ALL_PERMISSIONS);
|
|
773
|
+
const roles = new Map(context.roles.map((role) => [role.id, role]));
|
|
774
|
+
let base = bits(roles.get(context.guildId)?.permissions ?? 0n);
|
|
775
|
+
for (const id of context.memberRoleIds)
|
|
776
|
+
base |= bits(roles.get(id)?.permissions ?? 0n);
|
|
777
|
+
if (base & Permission.administrator)
|
|
778
|
+
return new PermissionSet(ALL_PERMISSIONS);
|
|
779
|
+
const overwrites = context.overwrites ?? [];
|
|
780
|
+
const everyone = overwrites.find((o) => o.id === context.guildId);
|
|
781
|
+
if (everyone)
|
|
782
|
+
base = base & ~bits(everyone.deny) | bits(everyone.allow);
|
|
783
|
+
const memberRoles = new Set(context.memberRoleIds);
|
|
784
|
+
let allow = 0n;
|
|
785
|
+
let deny = 0n;
|
|
786
|
+
for (const overwrite of overwrites)
|
|
787
|
+
if (overwrite.type === 0 /* Role */ && overwrite.id !== context.guildId && memberRoles.has(overwrite.id)) {
|
|
788
|
+
allow |= bits(overwrite.allow);
|
|
789
|
+
deny |= bits(overwrite.deny);
|
|
790
|
+
}
|
|
791
|
+
base = base & ~deny | allow;
|
|
792
|
+
const member = overwrites.find((o) => o.type === 1 /* Member */ && o.id === context.memberId);
|
|
793
|
+
if (member)
|
|
794
|
+
base = base & ~bits(member.deny) | bits(member.allow);
|
|
795
|
+
const until = context.timedOutUntil instanceof Date ? context.timedOutUntil.getTime() : context.timedOutUntil ?? 0;
|
|
796
|
+
if (until > Date.now())
|
|
797
|
+
base &= Permission.viewChannel | Permission.readMessageHistory;
|
|
798
|
+
return new PermissionSet(base);
|
|
799
|
+
}
|
|
827
800
|
|
|
828
|
-
// packages/ws/src/reconnect.ts
|
|
829
|
-
var FATAL_CLOSE_CODES = [
|
|
830
|
-
GatewayCloseCodes.AuthenticationFailed,
|
|
831
|
-
GatewayCloseCodes.InvalidShard,
|
|
832
|
-
GatewayCloseCodes.ShardingRequired,
|
|
833
|
-
GatewayCloseCodes.InvalidAPIVersion,
|
|
834
|
-
GatewayCloseCodes.InvalidIntents,
|
|
835
|
-
GatewayCloseCodes.DisallowedIntents
|
|
836
|
-
];
|
|
837
|
-
var IDENTIFY_CLOSE_CODES = [
|
|
838
|
-
GatewayCloseCodes.InvalidSeq,
|
|
839
|
-
GatewayCloseCodes.SessionTimedOut
|
|
840
|
-
];
|
|
841
801
|
// packages/structures/src/resources.ts
|
|
842
802
|
function toDateOrNull(value) {
|
|
843
803
|
if (!value)
|
|
@@ -2243,7 +2203,7 @@ class Message extends BaseStructure {
|
|
|
2243
2203
|
user: data.member.user ?? data.author,
|
|
2244
2204
|
guild_id: data.guild_id
|
|
2245
2205
|
}, context) : null;
|
|
2246
|
-
this.channel = new Channel({ id: data.channel_id, type: 0, guild_id: data.guild_id }, context);
|
|
2206
|
+
this.channel = context?.cachedChannel?.(data.channel_id) ?? new Channel({ id: data.channel_id, type: 0, guild_id: data.guild_id }, context, { partial: true });
|
|
2247
2207
|
}
|
|
2248
2208
|
get embedsSuppressed() {
|
|
2249
2209
|
return (this.flags & 4) !== 0;
|
|
@@ -2400,6 +2360,11 @@ export {
|
|
|
2400
2360
|
NewsChannel,
|
|
2401
2361
|
OnboardingPrompt,
|
|
2402
2362
|
OnboardingPromptOption,
|
|
2363
|
+
Permission,
|
|
2364
|
+
PermissionFlagsBits,
|
|
2365
|
+
PermissionOverwriteEnum,
|
|
2366
|
+
PermissionSet,
|
|
2367
|
+
Permissions,
|
|
2403
2368
|
PermissionsBitField,
|
|
2404
2369
|
Role,
|
|
2405
2370
|
StageChannel,
|
|
@@ -2412,9 +2377,10 @@ export {
|
|
|
2412
2377
|
WebhookEnum,
|
|
2413
2378
|
WelcomeScreenChannel,
|
|
2414
2379
|
cdnURL,
|
|
2380
|
+
computePermissions,
|
|
2415
2381
|
createChannel,
|
|
2416
2382
|
createInteraction,
|
|
2417
2383
|
stickerURL
|
|
2418
2384
|
};
|
|
2419
2385
|
|
|
2420
|
-
//# debugId=
|
|
2386
|
+
//# debugId=E9D552024AFDACBA64756E2164756E21
|