@fluxerjs/core 1.0.6 → 1.0.8
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/{Channel-2WNJ445K.mjs → Channel-TWPDKW2P.mjs} +3 -1
- package/dist/{ClientUser-J6HQVSDJ.mjs → ClientUser-2K2BACK7.mjs} +1 -2
- package/dist/{Guild-GOQZ7XP4.mjs → Guild-CMZGA6DW.mjs} +3 -1
- package/dist/GuildMember-DW2N6ITI.mjs +7 -0
- package/dist/{Webhook-NUQCJAWZ.mjs → Message-G2QIKZQK.mjs} +3 -3
- package/dist/MessageReaction-XRPYZDSC.mjs +7 -0
- package/dist/Role-SVLWIAMN.mjs +7 -0
- package/dist/{Webhook-2RHBXH7R.mjs → Webhook-2MQESB7Z.mjs} +1 -1
- package/dist/chunk-4GCZFOS5.mjs +86 -0
- package/dist/chunk-CO5EL5LH.mjs +168 -0
- package/dist/chunk-CZIO2D7F.mjs +207 -0
- package/dist/chunk-HBF5QEDH.mjs +42 -0
- package/dist/chunk-JVEOQFUX.mjs +52 -0
- package/dist/chunk-SQVCCSNN.mjs +41 -0
- package/dist/chunk-TJVZEILY.mjs +120 -0
- package/dist/{chunk-BUEXP5SZ.mjs → chunk-ZGMM6IPQ.mjs} +12 -3
- package/dist/index.d.mts +539 -73
- package/dist/index.d.ts +539 -73
- package/dist/index.js +1125 -355
- package/dist/index.mjs +520 -194
- package/package.json +27 -8
- package/dist/Channel-HM2UY4DN.mjs +0 -17
- package/dist/Channel-IKL3SJXN.mjs +0 -17
- package/dist/Channel-KILNV5V3.mjs +0 -17
- package/dist/Channel-TOAQGSRX.mjs +0 -17
- package/dist/Channel-VENHOL7S.mjs +0 -17
- package/dist/ClientUser-RNDKHQ3Z.mjs +0 -9
- package/dist/Guild-36EGAAEW.mjs +0 -8
- package/dist/Guild-CA3W6DOD.mjs +0 -8
- package/dist/Guild-NHNQ5TIA.mjs +0 -8
- package/dist/Guild-ZOFF5LFR.mjs +0 -8
- package/dist/GuildMember-RGVPVUAG.mjs +0 -9
- package/dist/GuildMember-XF7K2R45.mjs +0 -9
- package/dist/Message-23Z3RPCZ.mjs +0 -9
- package/dist/Message-33APPS76.mjs +0 -9
- package/dist/Message-PZUU7ZFR.mjs +0 -9
- package/dist/Message-XB5WNMHL.mjs +0 -9
- package/dist/chunk-3CNUPFDI.mjs +0 -59
- package/dist/chunk-4DBGMFOQ.mjs +0 -14
- package/dist/chunk-6CEMF2LO.mjs +0 -14
- package/dist/chunk-6EBNOON4.mjs +0 -86
- package/dist/chunk-72OY7B3D.mjs +0 -72
- package/dist/chunk-7FYM4D2E.mjs +0 -50
- package/dist/chunk-7GZN6JXT.mjs +0 -50
- package/dist/chunk-7H3TKJUT.mjs +0 -53
- package/dist/chunk-EF32ILJL.mjs +0 -102
- package/dist/chunk-F2EEQP5O.mjs +0 -86
- package/dist/chunk-GUNWHOQO.mjs +0 -42
- package/dist/chunk-L25ON7WB.mjs +0 -52
- package/dist/chunk-LBBIQOSH.mjs +0 -53
- package/dist/chunk-OHIHIQAS.mjs +0 -102
- package/dist/chunk-P4IRDGB4.mjs +0 -43
- package/dist/chunk-QDCFQF6J.mjs +0 -36
- package/dist/chunk-QDNFJVVE.mjs +0 -70
- package/dist/chunk-SW6KNICI.mjs +0 -52
- package/dist/chunk-TE5IC7IP.mjs +0 -36
- package/dist/chunk-WFONGZGK.mjs +0 -42
- package/dist/chunk-XXCBJJZE.mjs +0 -88
- package/dist/chunk-ZHRQQZ4X.mjs +0 -102
package/dist/index.mjs
CHANGED
|
@@ -1,30 +1,36 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
ClientUser,
|
|
3
|
+
User
|
|
4
|
+
} from "./chunk-4GCZFOS5.mjs";
|
|
4
5
|
import {
|
|
5
6
|
Webhook
|
|
6
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-ZGMM6IPQ.mjs";
|
|
7
8
|
import {
|
|
8
|
-
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
Message
|
|
10
|
+
} from "./chunk-CO5EL5LH.mjs";
|
|
10
11
|
import {
|
|
11
12
|
CategoryChannel,
|
|
12
13
|
Channel,
|
|
14
|
+
DMChannel,
|
|
13
15
|
GuildChannel,
|
|
14
16
|
LinkChannel,
|
|
17
|
+
MessageManager,
|
|
15
18
|
TextChannel,
|
|
16
19
|
VoiceChannel
|
|
17
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-CZIO2D7F.mjs";
|
|
21
|
+
import {
|
|
22
|
+
Guild
|
|
23
|
+
} from "./chunk-TJVZEILY.mjs";
|
|
24
|
+
import "./chunk-HQMYRYMY.mjs";
|
|
18
25
|
import {
|
|
19
26
|
GuildMember
|
|
20
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-JVEOQFUX.mjs";
|
|
21
28
|
import {
|
|
22
|
-
|
|
23
|
-
} from "./chunk-
|
|
29
|
+
Role
|
|
30
|
+
} from "./chunk-SQVCCSNN.mjs";
|
|
24
31
|
import {
|
|
25
|
-
|
|
26
|
-
} from "./chunk-
|
|
27
|
-
import "./chunk-HQMYRYMY.mjs";
|
|
32
|
+
MessageReaction
|
|
33
|
+
} from "./chunk-HBF5QEDH.mjs";
|
|
28
34
|
import {
|
|
29
35
|
Base
|
|
30
36
|
} from "./chunk-XNS4O6QJ.mjs";
|
|
@@ -33,8 +39,120 @@ import {
|
|
|
33
39
|
import { EventEmitter } from "events";
|
|
34
40
|
import { REST } from "@fluxerjs/rest";
|
|
35
41
|
import { WebSocketManager } from "@fluxerjs/ws";
|
|
36
|
-
import { Routes } from "@fluxerjs/types";
|
|
42
|
+
import { Routes as Routes3 } from "@fluxerjs/types";
|
|
43
|
+
import { Collection as Collection3 } from "@fluxerjs/collection";
|
|
44
|
+
|
|
45
|
+
// src/client/ChannelManager.ts
|
|
37
46
|
import { Collection } from "@fluxerjs/collection";
|
|
47
|
+
import { Routes } from "@fluxerjs/types";
|
|
48
|
+
var ChannelManager = class extends Collection {
|
|
49
|
+
constructor(client) {
|
|
50
|
+
super();
|
|
51
|
+
this.client = client;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Fetch a channel by ID from the API (or return from cache if present).
|
|
55
|
+
* @param channelId - Snowflake of the channel
|
|
56
|
+
* @returns The channel, or null if not found
|
|
57
|
+
* @example
|
|
58
|
+
* const channel = await client.channels.fetch(channelId);
|
|
59
|
+
* if (channel?.isSendable()) await channel.send('Hello!');
|
|
60
|
+
*/
|
|
61
|
+
async fetch(channelId) {
|
|
62
|
+
const cached = this.get(channelId);
|
|
63
|
+
if (cached) return cached;
|
|
64
|
+
try {
|
|
65
|
+
const { Channel: Channel2 } = await import("./Channel-TWPDKW2P.mjs");
|
|
66
|
+
const data = await this.client.rest.get(
|
|
67
|
+
Routes.channel(channelId)
|
|
68
|
+
);
|
|
69
|
+
const channel = Channel2.fromOrCreate(this.client, data);
|
|
70
|
+
if (channel) this.set(channel.id, channel);
|
|
71
|
+
return channel;
|
|
72
|
+
} catch {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Fetch a message by ID from the API.
|
|
78
|
+
* @param channelId - Snowflake of the channel
|
|
79
|
+
* @param messageId - Snowflake of the message
|
|
80
|
+
* @returns The message, or null if not found
|
|
81
|
+
* @deprecated Use channel.messages.fetch(messageId). Prefer (await client.channels.fetch(channelId))?.messages?.fetch(messageId).
|
|
82
|
+
* @example
|
|
83
|
+
* const channel = await client.channels.fetch(channelId);
|
|
84
|
+
* const message = await channel?.messages?.fetch(messageId);
|
|
85
|
+
*/
|
|
86
|
+
async fetchMessage(channelId, messageId) {
|
|
87
|
+
try {
|
|
88
|
+
const { Message: Message2 } = await import("./Message-G2QIKZQK.mjs");
|
|
89
|
+
const data = await this.client.rest.get(
|
|
90
|
+
Routes.channelMessage(channelId, messageId)
|
|
91
|
+
);
|
|
92
|
+
return new Message2(this.client, data);
|
|
93
|
+
} catch {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Send a message to a channel by ID. Works even when the channel is not cached.
|
|
99
|
+
* Skips the fetch when you only need to send.
|
|
100
|
+
* @param channelId - Snowflake of the channel (text channel or DM)
|
|
101
|
+
* @param payload - Text content or object with content and/or embeds
|
|
102
|
+
* @returns The created message
|
|
103
|
+
* @example
|
|
104
|
+
* await client.channels.send(logChannelId, 'User joined!');
|
|
105
|
+
* await client.channels.send(channelId, { embeds: [embed.toJSON()] });
|
|
106
|
+
*/
|
|
107
|
+
async send(channelId, payload) {
|
|
108
|
+
const body = typeof payload === "string" ? { content: payload } : payload;
|
|
109
|
+
const { Message: Message2 } = await import("./Message-G2QIKZQK.mjs");
|
|
110
|
+
const data = await this.client.rest.post(Routes.channelMessages(channelId), { body });
|
|
111
|
+
return new Message2(this.client, data);
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
// src/client/GuildManager.ts
|
|
116
|
+
import { Collection as Collection2 } from "@fluxerjs/collection";
|
|
117
|
+
import { Routes as Routes2 } from "@fluxerjs/types";
|
|
118
|
+
var GuildManager = class extends Collection2 {
|
|
119
|
+
constructor(client) {
|
|
120
|
+
super();
|
|
121
|
+
this.client = client;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Fetch a guild by ID from the API (or return from cache if present).
|
|
125
|
+
* @param guildId - Snowflake of the guild
|
|
126
|
+
* @returns The guild, or null if not found
|
|
127
|
+
* @example
|
|
128
|
+
* const guild = await client.guilds.fetch(guildId);
|
|
129
|
+
* if (guild) console.log(guild.name);
|
|
130
|
+
*/
|
|
131
|
+
async fetch(guildId) {
|
|
132
|
+
const cached = this.get(guildId);
|
|
133
|
+
if (cached) return cached;
|
|
134
|
+
try {
|
|
135
|
+
const { Guild: Guild2 } = await import("./Guild-CMZGA6DW.mjs");
|
|
136
|
+
const data = await this.client.rest.get(
|
|
137
|
+
Routes2.guild(guildId)
|
|
138
|
+
);
|
|
139
|
+
const guild = new Guild2(this.client, data);
|
|
140
|
+
this.set(guild.id, guild);
|
|
141
|
+
return guild;
|
|
142
|
+
} catch {
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
// src/errors/FluxerError.ts
|
|
149
|
+
var FluxerError = class _FluxerError extends Error {
|
|
150
|
+
constructor(message) {
|
|
151
|
+
super(message);
|
|
152
|
+
this.name = "FluxerError";
|
|
153
|
+
Object.setPrototypeOf(this, _FluxerError.prototype);
|
|
154
|
+
}
|
|
155
|
+
};
|
|
38
156
|
|
|
39
157
|
// src/util/Events.ts
|
|
40
158
|
var Events = {
|
|
@@ -42,6 +160,7 @@ var Events = {
|
|
|
42
160
|
MessageCreate: "messageCreate",
|
|
43
161
|
MessageUpdate: "messageUpdate",
|
|
44
162
|
MessageDelete: "messageDelete",
|
|
163
|
+
MessageDeleteBulk: "messageDeleteBulk",
|
|
45
164
|
MessageReactionAdd: "messageReactionAdd",
|
|
46
165
|
MessageReactionRemove: "messageReactionRemove",
|
|
47
166
|
MessageReactionRemoveAll: "messageReactionRemoveAll",
|
|
@@ -50,24 +169,284 @@ var Events = {
|
|
|
50
169
|
GuildCreate: "guildCreate",
|
|
51
170
|
GuildUpdate: "guildUpdate",
|
|
52
171
|
GuildDelete: "guildDelete",
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
172
|
+
GuildBanAdd: "guildBanAdd",
|
|
173
|
+
GuildBanRemove: "guildBanRemove",
|
|
174
|
+
GuildEmojisUpdate: "guildEmojisUpdate",
|
|
175
|
+
GuildStickersUpdate: "guildStickersUpdate",
|
|
176
|
+
GuildIntegrationsUpdate: "guildIntegrationsUpdate",
|
|
56
177
|
GuildMemberAdd: "guildMemberAdd",
|
|
57
178
|
GuildMemberUpdate: "guildMemberUpdate",
|
|
58
179
|
GuildMemberRemove: "guildMemberRemove",
|
|
180
|
+
GuildRoleCreate: "guildRoleCreate",
|
|
181
|
+
GuildRoleUpdate: "guildRoleUpdate",
|
|
182
|
+
GuildRoleDelete: "guildRoleDelete",
|
|
183
|
+
GuildScheduledEventCreate: "guildScheduledEventCreate",
|
|
184
|
+
GuildScheduledEventUpdate: "guildScheduledEventUpdate",
|
|
185
|
+
GuildScheduledEventDelete: "guildScheduledEventDelete",
|
|
186
|
+
ChannelCreate: "channelCreate",
|
|
187
|
+
ChannelUpdate: "channelUpdate",
|
|
188
|
+
ChannelDelete: "channelDelete",
|
|
189
|
+
ChannelPinsUpdate: "channelPinsUpdate",
|
|
190
|
+
InviteCreate: "inviteCreate",
|
|
191
|
+
InviteDelete: "inviteDelete",
|
|
192
|
+
TypingStart: "typingStart",
|
|
193
|
+
UserUpdate: "userUpdate",
|
|
194
|
+
PresenceUpdate: "presenceUpdate",
|
|
59
195
|
VoiceStateUpdate: "voiceStateUpdate",
|
|
60
196
|
VoiceServerUpdate: "voiceServerUpdate",
|
|
61
197
|
VoiceStatesSync: "voiceStatesSync",
|
|
198
|
+
WebhooksUpdate: "webhooksUpdate",
|
|
199
|
+
Resumed: "resumed",
|
|
62
200
|
Error: "error",
|
|
63
201
|
Debug: "debug"
|
|
64
202
|
};
|
|
65
203
|
|
|
204
|
+
// src/client/Client.ts
|
|
205
|
+
import { formatEmoji, parseEmoji } from "@fluxerjs/util";
|
|
206
|
+
|
|
207
|
+
// src/client/EventHandlerRegistry.ts
|
|
208
|
+
var handlers = /* @__PURE__ */ new Map();
|
|
209
|
+
handlers.set("MESSAGE_CREATE", async (client, d) => {
|
|
210
|
+
const { Message: Message2 } = await import("./Message-G2QIKZQK.mjs");
|
|
211
|
+
client.emit(Events.MessageCreate, new Message2(client, d));
|
|
212
|
+
});
|
|
213
|
+
handlers.set("MESSAGE_UPDATE", async (client, d) => {
|
|
214
|
+
const { Message: Message2 } = await import("./Message-G2QIKZQK.mjs");
|
|
215
|
+
client.emit(Events.MessageUpdate, null, new Message2(client, d));
|
|
216
|
+
});
|
|
217
|
+
handlers.set("MESSAGE_DELETE", async (client, d) => {
|
|
218
|
+
const data = d;
|
|
219
|
+
const channel = client.channels.get(data.channel_id) ?? null;
|
|
220
|
+
client.emit(Events.MessageDelete, {
|
|
221
|
+
id: data.id,
|
|
222
|
+
channelId: data.channel_id,
|
|
223
|
+
channel
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
handlers.set("MESSAGE_REACTION_ADD", async (client, d) => {
|
|
227
|
+
const data = d;
|
|
228
|
+
const { MessageReaction: MessageReaction2 } = await import("./MessageReaction-XRPYZDSC.mjs");
|
|
229
|
+
const reaction = new MessageReaction2(client, data);
|
|
230
|
+
const user = client.getOrCreateUser({
|
|
231
|
+
id: data.user_id,
|
|
232
|
+
username: "Unknown",
|
|
233
|
+
discriminator: "0"
|
|
234
|
+
});
|
|
235
|
+
client.emit(Events.MessageReactionAdd, reaction, user);
|
|
236
|
+
});
|
|
237
|
+
handlers.set("MESSAGE_REACTION_REMOVE", async (client, d) => {
|
|
238
|
+
const data = d;
|
|
239
|
+
const { MessageReaction: MessageReaction2 } = await import("./MessageReaction-XRPYZDSC.mjs");
|
|
240
|
+
const reaction = new MessageReaction2(client, data);
|
|
241
|
+
const user = client.getOrCreateUser({
|
|
242
|
+
id: data.user_id,
|
|
243
|
+
username: "Unknown",
|
|
244
|
+
discriminator: "0"
|
|
245
|
+
});
|
|
246
|
+
client.emit(Events.MessageReactionRemove, reaction, user);
|
|
247
|
+
});
|
|
248
|
+
handlers.set("MESSAGE_REACTION_REMOVE_ALL", async (client, d) => {
|
|
249
|
+
client.emit(Events.MessageReactionRemoveAll, d);
|
|
250
|
+
});
|
|
251
|
+
handlers.set("MESSAGE_REACTION_REMOVE_EMOJI", async (client, d) => {
|
|
252
|
+
client.emit(
|
|
253
|
+
Events.MessageReactionRemoveEmoji,
|
|
254
|
+
d
|
|
255
|
+
);
|
|
256
|
+
});
|
|
257
|
+
handlers.set("GUILD_CREATE", async (client, d) => {
|
|
258
|
+
const { Guild: Guild2 } = await import("./Guild-CMZGA6DW.mjs");
|
|
259
|
+
const { Channel: Channel2 } = await import("./Channel-TWPDKW2P.mjs");
|
|
260
|
+
const guild = new Guild2(client, d);
|
|
261
|
+
client.guilds.set(guild.id, guild);
|
|
262
|
+
const g = d;
|
|
263
|
+
for (const ch of g.channels ?? []) {
|
|
264
|
+
const channel = Channel2.from(client, ch);
|
|
265
|
+
if (channel) client.channels.set(channel.id, channel);
|
|
266
|
+
}
|
|
267
|
+
client.emit(Events.GuildCreate, guild);
|
|
268
|
+
if (g.voice_states?.length) {
|
|
269
|
+
client.emit(Events.VoiceStatesSync, { guildId: guild.id, voiceStates: g.voice_states });
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
handlers.set("GUILD_UPDATE", async (client, d) => {
|
|
273
|
+
const { Guild: Guild2 } = await import("./Guild-CMZGA6DW.mjs");
|
|
274
|
+
const g = d;
|
|
275
|
+
const old = client.guilds.get(g.id);
|
|
276
|
+
const updated = new Guild2(client, g);
|
|
277
|
+
client.guilds.set(updated.id, updated);
|
|
278
|
+
client.emit(Events.GuildUpdate, old ?? updated, updated);
|
|
279
|
+
});
|
|
280
|
+
handlers.set("GUILD_DELETE", async (client, d) => {
|
|
281
|
+
const g = d;
|
|
282
|
+
const guild = client.guilds.get(g.id);
|
|
283
|
+
if (guild) {
|
|
284
|
+
client.guilds.delete(g.id);
|
|
285
|
+
client.emit(Events.GuildDelete, guild);
|
|
286
|
+
}
|
|
287
|
+
});
|
|
288
|
+
handlers.set("CHANNEL_CREATE", async (client, d) => {
|
|
289
|
+
const { Channel: Channel2 } = await import("./Channel-TWPDKW2P.mjs");
|
|
290
|
+
const ch = Channel2.from(client, d);
|
|
291
|
+
if (ch) {
|
|
292
|
+
client.channels.set(ch.id, ch);
|
|
293
|
+
client.emit(Events.ChannelCreate, ch);
|
|
294
|
+
}
|
|
295
|
+
});
|
|
296
|
+
handlers.set("CHANNEL_UPDATE", async (client, d) => {
|
|
297
|
+
const { Channel: Channel2 } = await import("./Channel-TWPDKW2P.mjs");
|
|
298
|
+
const ch = d;
|
|
299
|
+
const oldCh = client.channels.get(ch.id);
|
|
300
|
+
const newCh = Channel2.from(client, ch);
|
|
301
|
+
if (newCh) {
|
|
302
|
+
client.channels.set(newCh.id, newCh);
|
|
303
|
+
client.emit(Events.ChannelUpdate, oldCh ?? newCh, newCh);
|
|
304
|
+
}
|
|
305
|
+
});
|
|
306
|
+
handlers.set("CHANNEL_DELETE", async (client, d) => {
|
|
307
|
+
const ch = d;
|
|
308
|
+
const channel = client.channels.get(ch.id);
|
|
309
|
+
if (channel) {
|
|
310
|
+
client.channels.delete(ch.id);
|
|
311
|
+
client.emit(Events.ChannelDelete, channel);
|
|
312
|
+
}
|
|
313
|
+
});
|
|
314
|
+
handlers.set("GUILD_MEMBER_ADD", async (client, d) => {
|
|
315
|
+
const { GuildMember: GuildMember2 } = await import("./GuildMember-DW2N6ITI.mjs");
|
|
316
|
+
const data = d;
|
|
317
|
+
const guild = client.guilds.get(data.guild_id);
|
|
318
|
+
if (guild) {
|
|
319
|
+
const member = new GuildMember2(client, data, guild);
|
|
320
|
+
guild.members.set(member.id, member);
|
|
321
|
+
client.emit(Events.GuildMemberAdd, member);
|
|
322
|
+
}
|
|
323
|
+
});
|
|
324
|
+
handlers.set("GUILD_MEMBER_UPDATE", async (client, d) => {
|
|
325
|
+
const { GuildMember: GuildMember2 } = await import("./GuildMember-DW2N6ITI.mjs");
|
|
326
|
+
const data = d;
|
|
327
|
+
const guild = client.guilds.get(data.guild_id);
|
|
328
|
+
if (guild) {
|
|
329
|
+
const oldM = guild.members.get(data.user.id);
|
|
330
|
+
const newM = new GuildMember2(client, data, guild);
|
|
331
|
+
guild.members.set(newM.id, newM);
|
|
332
|
+
client.emit(Events.GuildMemberUpdate, oldM ?? newM, newM);
|
|
333
|
+
}
|
|
334
|
+
});
|
|
335
|
+
handlers.set("GUILD_MEMBER_REMOVE", async (client, d) => {
|
|
336
|
+
const data = d;
|
|
337
|
+
const guild = client.guilds.get(data.guild_id);
|
|
338
|
+
if (guild) {
|
|
339
|
+
const member = guild.members.get(data.user.id);
|
|
340
|
+
if (member) {
|
|
341
|
+
guild.members.delete(data.user.id);
|
|
342
|
+
client.emit(Events.GuildMemberRemove, member);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
});
|
|
346
|
+
handlers.set("INTERACTION_CREATE", async (client, d) => {
|
|
347
|
+
client.emit(Events.InteractionCreate, d);
|
|
348
|
+
});
|
|
349
|
+
handlers.set("VOICE_STATE_UPDATE", async (client, d) => {
|
|
350
|
+
client.emit(Events.VoiceStateUpdate, d);
|
|
351
|
+
});
|
|
352
|
+
handlers.set("VOICE_SERVER_UPDATE", async (client, d) => {
|
|
353
|
+
client.emit(Events.VoiceServerUpdate, d);
|
|
354
|
+
});
|
|
355
|
+
handlers.set("MESSAGE_DELETE_BULK", async (client, d) => {
|
|
356
|
+
client.emit(Events.MessageDeleteBulk, d);
|
|
357
|
+
});
|
|
358
|
+
handlers.set("GUILD_BAN_ADD", async (client, d) => {
|
|
359
|
+
client.emit(Events.GuildBanAdd, d);
|
|
360
|
+
});
|
|
361
|
+
handlers.set("GUILD_BAN_REMOVE", async (client, d) => {
|
|
362
|
+
client.emit(Events.GuildBanRemove, d);
|
|
363
|
+
});
|
|
364
|
+
handlers.set("GUILD_EMOJIS_UPDATE", async (client, d) => {
|
|
365
|
+
client.emit(Events.GuildEmojisUpdate, d);
|
|
366
|
+
});
|
|
367
|
+
handlers.set("GUILD_STICKERS_UPDATE", async (client, d) => {
|
|
368
|
+
client.emit(Events.GuildStickersUpdate, d);
|
|
369
|
+
});
|
|
370
|
+
handlers.set("GUILD_INTEGRATIONS_UPDATE", async (client, d) => {
|
|
371
|
+
client.emit(Events.GuildIntegrationsUpdate, d);
|
|
372
|
+
});
|
|
373
|
+
handlers.set("GUILD_ROLE_CREATE", async (client, d) => {
|
|
374
|
+
const data = d;
|
|
375
|
+
const guild = client.guilds.get(data.guild_id);
|
|
376
|
+
if (guild) {
|
|
377
|
+
const { Role: Role2 } = await import("./Role-SVLWIAMN.mjs");
|
|
378
|
+
guild.roles.set(data.role.id, new Role2(client, data.role, guild.id));
|
|
379
|
+
}
|
|
380
|
+
client.emit(Events.GuildRoleCreate, data);
|
|
381
|
+
});
|
|
382
|
+
handlers.set("GUILD_ROLE_UPDATE", async (client, d) => {
|
|
383
|
+
const data = d;
|
|
384
|
+
const guild = client.guilds.get(data.guild_id);
|
|
385
|
+
if (guild) {
|
|
386
|
+
const { Role: Role2 } = await import("./Role-SVLWIAMN.mjs");
|
|
387
|
+
guild.roles.set(data.role.id, new Role2(client, data.role, guild.id));
|
|
388
|
+
}
|
|
389
|
+
client.emit(Events.GuildRoleUpdate, data);
|
|
390
|
+
});
|
|
391
|
+
handlers.set("GUILD_ROLE_DELETE", async (client, d) => {
|
|
392
|
+
const data = d;
|
|
393
|
+
const guild = client.guilds.get(data.guild_id);
|
|
394
|
+
if (guild) guild.roles.delete(data.role_id);
|
|
395
|
+
client.emit(Events.GuildRoleDelete, data);
|
|
396
|
+
});
|
|
397
|
+
handlers.set("GUILD_SCHEDULED_EVENT_CREATE", async (client, d) => {
|
|
398
|
+
client.emit(Events.GuildScheduledEventCreate, d);
|
|
399
|
+
});
|
|
400
|
+
handlers.set("GUILD_SCHEDULED_EVENT_UPDATE", async (client, d) => {
|
|
401
|
+
client.emit(Events.GuildScheduledEventUpdate, d);
|
|
402
|
+
});
|
|
403
|
+
handlers.set("GUILD_SCHEDULED_EVENT_DELETE", async (client, d) => {
|
|
404
|
+
client.emit(Events.GuildScheduledEventDelete, d);
|
|
405
|
+
});
|
|
406
|
+
handlers.set("CHANNEL_PINS_UPDATE", async (client, d) => {
|
|
407
|
+
client.emit(Events.ChannelPinsUpdate, d);
|
|
408
|
+
});
|
|
409
|
+
handlers.set("INVITE_CREATE", async (client, d) => {
|
|
410
|
+
client.emit(Events.InviteCreate, d);
|
|
411
|
+
});
|
|
412
|
+
handlers.set("INVITE_DELETE", async (client, d) => {
|
|
413
|
+
client.emit(Events.InviteDelete, d);
|
|
414
|
+
});
|
|
415
|
+
handlers.set("TYPING_START", async (client, d) => {
|
|
416
|
+
client.emit(Events.TypingStart, d);
|
|
417
|
+
});
|
|
418
|
+
handlers.set("USER_UPDATE", async (client, d) => {
|
|
419
|
+
const data = d;
|
|
420
|
+
if (client.user?.id === data.id) {
|
|
421
|
+
client.user._patch(data);
|
|
422
|
+
}
|
|
423
|
+
client.emit(Events.UserUpdate, data);
|
|
424
|
+
});
|
|
425
|
+
handlers.set("PRESENCE_UPDATE", async (client, d) => {
|
|
426
|
+
client.emit(Events.PresenceUpdate, d);
|
|
427
|
+
});
|
|
428
|
+
handlers.set("WEBHOOKS_UPDATE", async (client, d) => {
|
|
429
|
+
client.emit(Events.WebhooksUpdate, d);
|
|
430
|
+
});
|
|
431
|
+
handlers.set("RESUMED", async (client) => {
|
|
432
|
+
client.emit(Events.Resumed);
|
|
433
|
+
});
|
|
434
|
+
var eventHandlers = handlers;
|
|
435
|
+
|
|
66
436
|
// src/client/Client.ts
|
|
67
437
|
var Client = class extends EventEmitter {
|
|
438
|
+
/** @param options - Token, REST config, WebSocket, presence, etc. */
|
|
68
439
|
constructor(options = {}) {
|
|
69
440
|
super();
|
|
70
441
|
this.options = options;
|
|
442
|
+
Object.defineProperty(this.channels, "cache", {
|
|
443
|
+
get: () => this.channels,
|
|
444
|
+
configurable: true
|
|
445
|
+
});
|
|
446
|
+
Object.defineProperty(this.guilds, "cache", {
|
|
447
|
+
get: () => this.guilds,
|
|
448
|
+
configurable: true
|
|
449
|
+
});
|
|
71
450
|
this.rest = new REST({
|
|
72
451
|
api: options.rest?.api ?? "https://api.fluxer.app",
|
|
73
452
|
version: options.rest?.version ?? "1",
|
|
@@ -75,17 +454,87 @@ var Client = class extends EventEmitter {
|
|
|
75
454
|
});
|
|
76
455
|
}
|
|
77
456
|
rest;
|
|
78
|
-
guilds = new
|
|
79
|
-
channels = new
|
|
80
|
-
users = new
|
|
457
|
+
guilds = new GuildManager(this);
|
|
458
|
+
channels = new ChannelManager(this);
|
|
459
|
+
users = new Collection3();
|
|
81
460
|
user = null;
|
|
82
461
|
readyAt = null;
|
|
83
462
|
_ws = null;
|
|
463
|
+
/**
|
|
464
|
+
* Resolve an emoji argument to the API format (unicode or "name:id").
|
|
465
|
+
* Supports: <:name:id>, :name:, name:id, { name, id }, unicode.
|
|
466
|
+
* When id is missing (e.g. :name:), fetches guild emojis if guildId provided.
|
|
467
|
+
* @param emoji - Emoji string or object
|
|
468
|
+
* @param guildId - Guild ID for resolving custom emoji by name (required when id is missing)
|
|
469
|
+
* @returns API-formatted string for reactions
|
|
470
|
+
*/
|
|
471
|
+
async resolveEmoji(emoji, guildId) {
|
|
472
|
+
if (typeof emoji === "object" && emoji.id) {
|
|
473
|
+
return formatEmoji({ name: emoji.name, id: emoji.id, animated: emoji.animated });
|
|
474
|
+
}
|
|
475
|
+
const parsed = parseEmoji(typeof emoji === "string" ? emoji : `:${emoji.name}:`);
|
|
476
|
+
if (!parsed) throw new Error("Invalid emoji");
|
|
477
|
+
if (parsed.id) return formatEmoji(parsed);
|
|
478
|
+
if (guildId) {
|
|
479
|
+
const emojis = await this.rest.get(Routes3.guildEmojis(guildId));
|
|
480
|
+
const list = Array.isArray(emojis) ? emojis : Object.values(emojis ?? {});
|
|
481
|
+
const found = list.find((e) => e.name && e.name.toLowerCase() === parsed.name.toLowerCase());
|
|
482
|
+
if (found) return formatEmoji({ ...parsed, id: found.id, animated: found.animated });
|
|
483
|
+
throw new Error(
|
|
484
|
+
`Custom emoji ":${parsed.name}:" not found in guild. Use name:id or <:name:id> format.`
|
|
485
|
+
);
|
|
486
|
+
}
|
|
487
|
+
if (/^\w+$/.test(parsed.name)) {
|
|
488
|
+
throw new Error(
|
|
489
|
+
`Custom emoji ":${parsed.name}:" requires guild context. Use message.react() in a guild channel, or pass guildId to client.resolveEmoji().`
|
|
490
|
+
);
|
|
491
|
+
}
|
|
492
|
+
return encodeURIComponent(parsed.name);
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* Fetch a message by channel and message ID. Use when you have IDs (e.g. from a DB).
|
|
496
|
+
* @param channelId - Snowflake of the channel
|
|
497
|
+
* @param messageId - Snowflake of the message
|
|
498
|
+
* @returns The message, or null if not found
|
|
499
|
+
* @deprecated Use channel.messages.fetch(messageId). For IDs-only: (await client.channels.fetch(channelId))?.messages?.fetch(messageId)
|
|
500
|
+
* @example
|
|
501
|
+
* const channel = await client.channels.fetch(channelId);
|
|
502
|
+
* const message = await channel?.messages?.fetch(messageId);
|
|
503
|
+
*/
|
|
504
|
+
async fetchMessage(channelId, messageId) {
|
|
505
|
+
return this.channels.fetchMessage(channelId, messageId);
|
|
506
|
+
}
|
|
507
|
+
/**
|
|
508
|
+
* Send a message to any channel by ID. Shorthand for client.channels.send().
|
|
509
|
+
* Works even when the channel is not cached.
|
|
510
|
+
*/
|
|
511
|
+
async sendToChannel(channelId, payload) {
|
|
512
|
+
return this.channels.send(channelId, payload);
|
|
513
|
+
}
|
|
514
|
+
/**
|
|
515
|
+
* Get or create a User from API data. Caches in client.users.
|
|
516
|
+
* Updates existing user's username, avatar, etc. when fresh data is provided.
|
|
517
|
+
*/
|
|
518
|
+
getOrCreateUser(data) {
|
|
519
|
+
const existing = this.users.get(data.id);
|
|
520
|
+
if (existing) {
|
|
521
|
+
existing._patch(data);
|
|
522
|
+
return existing;
|
|
523
|
+
}
|
|
524
|
+
const user = new User(this, data);
|
|
525
|
+
this.users.set(user.id, user);
|
|
526
|
+
return user;
|
|
527
|
+
}
|
|
528
|
+
/** WebSocket manager. Throws if not logged in. */
|
|
84
529
|
get ws() {
|
|
85
530
|
if (!this._ws) throw new Error("Client is not logged in");
|
|
86
531
|
return this._ws;
|
|
87
532
|
}
|
|
88
|
-
/**
|
|
533
|
+
/**
|
|
534
|
+
* Send a payload to the gateway (e.g. Voice State Update).
|
|
535
|
+
* @param shardId - Shard ID (use 0 for single-shard)
|
|
536
|
+
* @param payload - Gateway payload to send
|
|
537
|
+
*/
|
|
89
538
|
sendToGateway(shardId, payload) {
|
|
90
539
|
this.ws.send(shardId, payload);
|
|
91
540
|
}
|
|
@@ -93,158 +542,27 @@ var Client = class extends EventEmitter {
|
|
|
93
542
|
if (payload.op !== 0 || !payload.t) return;
|
|
94
543
|
const { t: event, d } = payload;
|
|
95
544
|
try {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
const { Message: Message2 } = await import("./Message-33APPS76.mjs");
|
|
99
|
-
this.emit(Events.MessageCreate, new Message2(this, d));
|
|
100
|
-
break;
|
|
101
|
-
}
|
|
102
|
-
case "MESSAGE_UPDATE": {
|
|
103
|
-
const { Message: Message2 } = await import("./Message-33APPS76.mjs");
|
|
104
|
-
this.emit(Events.MessageUpdate, null, new Message2(this, d));
|
|
105
|
-
break;
|
|
106
|
-
}
|
|
107
|
-
case "MESSAGE_DELETE":
|
|
108
|
-
this.emit(Events.MessageDelete, { id: d.id, channelId: d.channel_id });
|
|
109
|
-
break;
|
|
110
|
-
case "MESSAGE_REACTION_ADD":
|
|
111
|
-
this.emit(Events.MessageReactionAdd, d);
|
|
112
|
-
break;
|
|
113
|
-
case "MESSAGE_REACTION_REMOVE":
|
|
114
|
-
this.emit(Events.MessageReactionRemove, d);
|
|
115
|
-
break;
|
|
116
|
-
case "MESSAGE_REACTION_REMOVE_ALL":
|
|
117
|
-
this.emit(Events.MessageReactionRemoveAll, d);
|
|
118
|
-
break;
|
|
119
|
-
case "MESSAGE_REACTION_REMOVE_EMOJI":
|
|
120
|
-
this.emit(Events.MessageReactionRemoveEmoji, d);
|
|
121
|
-
break;
|
|
122
|
-
case "GUILD_CREATE": {
|
|
123
|
-
const { Guild: Guild2 } = await import("./Guild-NHNQ5TIA.mjs");
|
|
124
|
-
const { Channel: Channel2 } = await import("./Channel-IKL3SJXN.mjs");
|
|
125
|
-
const guild = new Guild2(this, d);
|
|
126
|
-
this.guilds.set(guild.id, guild);
|
|
127
|
-
const g = d;
|
|
128
|
-
for (const ch of g.channels ?? []) {
|
|
129
|
-
const channel = Channel2.from(this, ch);
|
|
130
|
-
if (channel) this.channels.set(channel.id, channel);
|
|
131
|
-
}
|
|
132
|
-
this.emit(Events.GuildCreate, guild);
|
|
133
|
-
if (g.voice_states?.length) {
|
|
134
|
-
this.emit(Events.VoiceStatesSync, { guildId: guild.id, voiceStates: g.voice_states });
|
|
135
|
-
}
|
|
136
|
-
break;
|
|
137
|
-
}
|
|
138
|
-
case "GUILD_UPDATE": {
|
|
139
|
-
const { Guild: Guild2 } = await import("./Guild-NHNQ5TIA.mjs");
|
|
140
|
-
const g = d;
|
|
141
|
-
const old = this.guilds.get(g.id);
|
|
142
|
-
const updated = new Guild2(this, g);
|
|
143
|
-
this.guilds.set(updated.id, updated);
|
|
144
|
-
this.emit(Events.GuildUpdate, old ?? updated, updated);
|
|
145
|
-
break;
|
|
146
|
-
}
|
|
147
|
-
case "GUILD_DELETE": {
|
|
148
|
-
const g = d;
|
|
149
|
-
const guild = this.guilds.get(g.id);
|
|
150
|
-
if (guild) {
|
|
151
|
-
this.guilds.delete(g.id);
|
|
152
|
-
this.emit(Events.GuildDelete, guild);
|
|
153
|
-
}
|
|
154
|
-
break;
|
|
155
|
-
}
|
|
156
|
-
case "CHANNEL_CREATE": {
|
|
157
|
-
const { Channel: Channel2 } = await import("./Channel-IKL3SJXN.mjs");
|
|
158
|
-
const ch = Channel2.from(this, d);
|
|
159
|
-
if (ch) {
|
|
160
|
-
this.channels.set(ch.id, ch);
|
|
161
|
-
this.emit(Events.ChannelCreate, ch);
|
|
162
|
-
}
|
|
163
|
-
break;
|
|
164
|
-
}
|
|
165
|
-
case "CHANNEL_UPDATE": {
|
|
166
|
-
const { Channel: Channel2 } = await import("./Channel-IKL3SJXN.mjs");
|
|
167
|
-
const ch = d;
|
|
168
|
-
const oldCh = this.channels.get(ch.id);
|
|
169
|
-
const newCh = Channel2.from(this, ch);
|
|
170
|
-
if (newCh) {
|
|
171
|
-
this.channels.set(newCh.id, newCh);
|
|
172
|
-
this.emit(Events.ChannelUpdate, oldCh ?? newCh, newCh);
|
|
173
|
-
}
|
|
174
|
-
break;
|
|
175
|
-
}
|
|
176
|
-
case "CHANNEL_DELETE": {
|
|
177
|
-
const ch = d;
|
|
178
|
-
const channel = this.channels.get(ch.id);
|
|
179
|
-
if (channel) {
|
|
180
|
-
this.channels.delete(ch.id);
|
|
181
|
-
this.emit(Events.ChannelDelete, channel);
|
|
182
|
-
}
|
|
183
|
-
break;
|
|
184
|
-
}
|
|
185
|
-
case "GUILD_MEMBER_ADD": {
|
|
186
|
-
const { GuildMember: GuildMember2 } = await import("./GuildMember-RGVPVUAG.mjs");
|
|
187
|
-
const data = d;
|
|
188
|
-
const guild = this.guilds.get(data.guild_id);
|
|
189
|
-
if (guild) {
|
|
190
|
-
const member = new GuildMember2(this, data, guild);
|
|
191
|
-
guild.members.set(member.id, member);
|
|
192
|
-
this.emit(Events.GuildMemberAdd, member);
|
|
193
|
-
}
|
|
194
|
-
break;
|
|
195
|
-
}
|
|
196
|
-
case "GUILD_MEMBER_UPDATE": {
|
|
197
|
-
const { GuildMember: GuildMember2 } = await import("./GuildMember-RGVPVUAG.mjs");
|
|
198
|
-
const data = d;
|
|
199
|
-
const guild = this.guilds.get(data.guild_id);
|
|
200
|
-
if (guild) {
|
|
201
|
-
const oldM = guild.members.get(data.user.id);
|
|
202
|
-
const newM = new GuildMember2(this, data, guild);
|
|
203
|
-
guild.members.set(newM.id, newM);
|
|
204
|
-
this.emit(Events.GuildMemberUpdate, oldM ?? newM, newM);
|
|
205
|
-
}
|
|
206
|
-
break;
|
|
207
|
-
}
|
|
208
|
-
case "GUILD_MEMBER_REMOVE": {
|
|
209
|
-
const data = d;
|
|
210
|
-
const guild = this.guilds.get(data.guild_id);
|
|
211
|
-
if (guild) {
|
|
212
|
-
const member = guild.members.get(data.user.id);
|
|
213
|
-
if (member) {
|
|
214
|
-
guild.members.delete(data.user.id);
|
|
215
|
-
this.emit(Events.GuildMemberRemove, member);
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
break;
|
|
219
|
-
}
|
|
220
|
-
case "INTERACTION_CREATE": {
|
|
221
|
-
this.emit(Events.InteractionCreate, d);
|
|
222
|
-
break;
|
|
223
|
-
}
|
|
224
|
-
case "VOICE_STATE_UPDATE": {
|
|
225
|
-
this.emit(Events.VoiceStateUpdate, d);
|
|
226
|
-
break;
|
|
227
|
-
}
|
|
228
|
-
case "VOICE_SERVER_UPDATE": {
|
|
229
|
-
this.emit(Events.VoiceServerUpdate, d);
|
|
230
|
-
break;
|
|
231
|
-
}
|
|
232
|
-
default:
|
|
233
|
-
break;
|
|
234
|
-
}
|
|
545
|
+
const handler = eventHandlers.get(event);
|
|
546
|
+
if (handler) await handler(this, d);
|
|
235
547
|
} catch (err) {
|
|
236
548
|
this.emit(Events.Error, err instanceof Error ? err : new Error(String(err)));
|
|
237
549
|
}
|
|
238
550
|
}
|
|
551
|
+
/**
|
|
552
|
+
* Connect to the Fluxer gateway and authenticate.
|
|
553
|
+
* @param token - Bot token (e.g. from FLUXER_BOT_TOKEN)
|
|
554
|
+
*/
|
|
239
555
|
async login(token) {
|
|
556
|
+
if (this._ws) {
|
|
557
|
+
throw new FluxerError("Client is already logged in. Call destroy() first.");
|
|
558
|
+
}
|
|
240
559
|
this.rest.setToken(token);
|
|
241
560
|
let intents = this.options.intents ?? 0;
|
|
242
561
|
if (intents !== 0) {
|
|
243
562
|
if (typeof process !== "undefined" && process.emitWarning) {
|
|
244
|
-
process.emitWarning(
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
);
|
|
563
|
+
process.emitWarning("Fluxer does not support intents yet. Value has been set to 0.", {
|
|
564
|
+
type: "FluxerIntents"
|
|
565
|
+
});
|
|
248
566
|
} else {
|
|
249
567
|
console.warn("Fluxer does not support intents yet. Value has been set to 0.");
|
|
250
568
|
}
|
|
@@ -259,33 +577,44 @@ var Client = class extends EventEmitter {
|
|
|
259
577
|
WebSocket: this.options.WebSocket
|
|
260
578
|
});
|
|
261
579
|
this._ws.on("dispatch", ({ payload }) => {
|
|
262
|
-
this.handleDispatch(payload)
|
|
580
|
+
this.handleDispatch(payload).catch(
|
|
581
|
+
(err) => this.emit(Events.Error, err instanceof Error ? err : new Error(String(err)))
|
|
582
|
+
);
|
|
263
583
|
});
|
|
264
|
-
this._ws.on(
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
const
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
for (const
|
|
274
|
-
const
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
584
|
+
this._ws.on(
|
|
585
|
+
"ready",
|
|
586
|
+
async ({
|
|
587
|
+
data
|
|
588
|
+
}) => {
|
|
589
|
+
const { ClientUser: ClientUser2 } = await import("./ClientUser-2K2BACK7.mjs");
|
|
590
|
+
const { Guild: Guild2 } = await import("./Guild-CMZGA6DW.mjs");
|
|
591
|
+
const { Channel: Channel2 } = await import("./Channel-TWPDKW2P.mjs");
|
|
592
|
+
this.user = new ClientUser2(this, data.user);
|
|
593
|
+
for (const g of data.guilds ?? []) {
|
|
594
|
+
const guild = new Guild2(this, g);
|
|
595
|
+
this.guilds.set(guild.id, guild);
|
|
596
|
+
const withCh = g;
|
|
597
|
+
for (const ch of withCh.channels ?? []) {
|
|
598
|
+
const channel = Channel2.from(this, ch);
|
|
599
|
+
if (channel) this.channels.set(channel.id, channel);
|
|
600
|
+
}
|
|
601
|
+
if (withCh.voice_states?.length) {
|
|
602
|
+
this.emit(Events.VoiceStatesSync, {
|
|
603
|
+
guildId: guild.id,
|
|
604
|
+
voiceStates: withCh.voice_states
|
|
605
|
+
});
|
|
606
|
+
}
|
|
279
607
|
}
|
|
608
|
+
this.readyAt = /* @__PURE__ */ new Date();
|
|
609
|
+
this.emit(Events.Ready);
|
|
280
610
|
}
|
|
281
|
-
|
|
282
|
-
this.emit(Events.Ready);
|
|
283
|
-
});
|
|
611
|
+
);
|
|
284
612
|
this._ws.on("error", ({ error }) => this.emit(Events.Error, error));
|
|
285
613
|
this._ws.on("debug", (msg) => this.emit(Events.Debug, msg));
|
|
286
614
|
await this._ws.connect();
|
|
287
615
|
return token;
|
|
288
616
|
}
|
|
617
|
+
/** Disconnect from the gateway and clear cached data. */
|
|
289
618
|
async destroy() {
|
|
290
619
|
if (this._ws) {
|
|
291
620
|
this._ws.destroy();
|
|
@@ -298,20 +627,12 @@ var Client = class extends EventEmitter {
|
|
|
298
627
|
this.channels.clear();
|
|
299
628
|
this.users.clear();
|
|
300
629
|
}
|
|
630
|
+
/** Returns true if the client has received Ready and `user` is set. */
|
|
301
631
|
isReady() {
|
|
302
632
|
return this.readyAt !== null && this.user !== null;
|
|
303
633
|
}
|
|
304
634
|
static get Routes() {
|
|
305
|
-
return
|
|
306
|
-
}
|
|
307
|
-
};
|
|
308
|
-
|
|
309
|
-
// src/errors/FluxerError.ts
|
|
310
|
-
var FluxerError = class _FluxerError extends Error {
|
|
311
|
-
constructor(message) {
|
|
312
|
-
super(message);
|
|
313
|
-
this.name = "FluxerError";
|
|
314
|
-
Object.setPrototypeOf(this, _FluxerError.prototype);
|
|
635
|
+
return Routes3;
|
|
315
636
|
}
|
|
316
637
|
};
|
|
317
638
|
|
|
@@ -323,14 +644,16 @@ var ErrorCodes = {
|
|
|
323
644
|
|
|
324
645
|
// src/index.ts
|
|
325
646
|
import { EmbedBuilder, MessagePayload, AttachmentBuilder } from "@fluxerjs/builders";
|
|
326
|
-
import { Routes as
|
|
647
|
+
import { Routes as Routes4, GatewayOpcodes } from "@fluxerjs/types";
|
|
327
648
|
export {
|
|
328
649
|
AttachmentBuilder,
|
|
329
650
|
Base,
|
|
330
651
|
CategoryChannel,
|
|
331
652
|
Channel,
|
|
653
|
+
ChannelManager,
|
|
332
654
|
Client,
|
|
333
655
|
ClientUser,
|
|
656
|
+
DMChannel,
|
|
334
657
|
EmbedBuilder,
|
|
335
658
|
ErrorCodes,
|
|
336
659
|
Events,
|
|
@@ -341,8 +664,11 @@ export {
|
|
|
341
664
|
GuildMember,
|
|
342
665
|
LinkChannel,
|
|
343
666
|
Message,
|
|
667
|
+
MessageManager,
|
|
344
668
|
MessagePayload,
|
|
345
|
-
|
|
669
|
+
MessageReaction,
|
|
670
|
+
Role,
|
|
671
|
+
Routes4 as Routes,
|
|
346
672
|
TextChannel,
|
|
347
673
|
User,
|
|
348
674
|
VoiceChannel,
|