@fluxerjs/core 1.0.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/README.md +26 -0
- package/dist/Channel-HM2UY4DN.mjs +17 -0
- package/dist/Channel-TOAQGSRX.mjs +17 -0
- package/dist/ClientUser-RNDKHQ3Z.mjs +9 -0
- package/dist/Guild-36EGAAEW.mjs +8 -0
- package/dist/Guild-GOQZ7XP4.mjs +8 -0
- package/dist/GuildMember-RGVPVUAG.mjs +9 -0
- package/dist/Message-23Z3RPCZ.mjs +9 -0
- package/dist/Message-XB5WNMHL.mjs +9 -0
- package/dist/chunk-6CEMF2LO.mjs +14 -0
- package/dist/chunk-6EBNOON4.mjs +86 -0
- package/dist/chunk-7H3TKJUT.mjs +53 -0
- package/dist/chunk-F2EEQP5O.mjs +86 -0
- package/dist/chunk-GUNWHOQO.mjs +42 -0
- package/dist/chunk-HQMYRYMY.mjs +6 -0
- package/dist/chunk-LBBIQOSH.mjs +53 -0
- package/dist/chunk-P4IRDGB4.mjs +43 -0
- package/dist/chunk-TE5IC7IP.mjs +36 -0
- package/dist/chunk-WFONGZGK.mjs +42 -0
- package/dist/chunk-XNS4O6QJ.mjs +7 -0
- package/dist/index.d.mts +228 -0
- package/dist/index.d.ts +228 -0
- package/dist/index.js +665 -0
- package/dist/index.mjs +329 -0
- package/package.json +41 -0
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Message
|
|
3
|
+
} from "./chunk-LBBIQOSH.mjs";
|
|
4
|
+
import {
|
|
5
|
+
Guild
|
|
6
|
+
} from "./chunk-GUNWHOQO.mjs";
|
|
7
|
+
import {
|
|
8
|
+
CategoryChannel,
|
|
9
|
+
Channel,
|
|
10
|
+
GuildChannel,
|
|
11
|
+
LinkChannel,
|
|
12
|
+
TextChannel,
|
|
13
|
+
VoiceChannel
|
|
14
|
+
} from "./chunk-F2EEQP5O.mjs";
|
|
15
|
+
import {
|
|
16
|
+
GuildMember
|
|
17
|
+
} from "./chunk-TE5IC7IP.mjs";
|
|
18
|
+
import {
|
|
19
|
+
ClientUser
|
|
20
|
+
} from "./chunk-6CEMF2LO.mjs";
|
|
21
|
+
import {
|
|
22
|
+
User
|
|
23
|
+
} from "./chunk-P4IRDGB4.mjs";
|
|
24
|
+
import "./chunk-HQMYRYMY.mjs";
|
|
25
|
+
import {
|
|
26
|
+
Base
|
|
27
|
+
} from "./chunk-XNS4O6QJ.mjs";
|
|
28
|
+
|
|
29
|
+
// src/client/Client.ts
|
|
30
|
+
import { EventEmitter } from "events";
|
|
31
|
+
import { REST } from "@fluxerjs/rest";
|
|
32
|
+
import { WebSocketManager } from "@fluxerjs/ws";
|
|
33
|
+
import { Routes } from "@fluxerjs/types";
|
|
34
|
+
import { Collection } from "@fluxerjs/collection";
|
|
35
|
+
|
|
36
|
+
// src/util/Events.ts
|
|
37
|
+
var Events = {
|
|
38
|
+
Ready: "ready",
|
|
39
|
+
MessageCreate: "messageCreate",
|
|
40
|
+
MessageUpdate: "messageUpdate",
|
|
41
|
+
MessageDelete: "messageDelete",
|
|
42
|
+
InteractionCreate: "interactionCreate",
|
|
43
|
+
GuildCreate: "guildCreate",
|
|
44
|
+
GuildUpdate: "guildUpdate",
|
|
45
|
+
GuildDelete: "guildDelete",
|
|
46
|
+
ChannelCreate: "channelCreate",
|
|
47
|
+
ChannelUpdate: "channelUpdate",
|
|
48
|
+
ChannelDelete: "channelDelete",
|
|
49
|
+
GuildMemberAdd: "guildMemberAdd",
|
|
50
|
+
GuildMemberUpdate: "guildMemberUpdate",
|
|
51
|
+
GuildMemberRemove: "guildMemberRemove",
|
|
52
|
+
VoiceStateUpdate: "voiceStateUpdate",
|
|
53
|
+
VoiceServerUpdate: "voiceServerUpdate",
|
|
54
|
+
VoiceStatesSync: "voiceStatesSync",
|
|
55
|
+
Error: "error",
|
|
56
|
+
Debug: "debug"
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
// src/client/Client.ts
|
|
60
|
+
var Client = class extends EventEmitter {
|
|
61
|
+
constructor(options = {}) {
|
|
62
|
+
super();
|
|
63
|
+
this.options = options;
|
|
64
|
+
this.rest = new REST({
|
|
65
|
+
api: options.rest?.api ?? "https://api.fluxer.app",
|
|
66
|
+
version: options.rest?.version ?? "1",
|
|
67
|
+
...options.rest
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
rest;
|
|
71
|
+
guilds = new Collection();
|
|
72
|
+
channels = new Collection();
|
|
73
|
+
users = new Collection();
|
|
74
|
+
user = null;
|
|
75
|
+
readyAt = null;
|
|
76
|
+
_ws = null;
|
|
77
|
+
get ws() {
|
|
78
|
+
if (!this._ws) throw new Error("Client is not logged in");
|
|
79
|
+
return this._ws;
|
|
80
|
+
}
|
|
81
|
+
/** Send a payload to the gateway (e.g. Voice State Update). Uses shard 0 when single-shard. */
|
|
82
|
+
sendToGateway(shardId, payload) {
|
|
83
|
+
this.ws.send(shardId, payload);
|
|
84
|
+
}
|
|
85
|
+
async handleDispatch(payload) {
|
|
86
|
+
if (payload.op !== 0 || !payload.t) return;
|
|
87
|
+
const { t: event, d } = payload;
|
|
88
|
+
try {
|
|
89
|
+
switch (event) {
|
|
90
|
+
case "MESSAGE_CREATE": {
|
|
91
|
+
const { Message: Message2 } = await import("./Message-23Z3RPCZ.mjs");
|
|
92
|
+
this.emit(Events.MessageCreate, new Message2(this, d));
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
case "MESSAGE_UPDATE": {
|
|
96
|
+
const { Message: Message2 } = await import("./Message-23Z3RPCZ.mjs");
|
|
97
|
+
this.emit(Events.MessageUpdate, null, new Message2(this, d));
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
case "MESSAGE_DELETE":
|
|
101
|
+
this.emit(Events.MessageDelete, { id: d.id, channelId: d.channel_id });
|
|
102
|
+
break;
|
|
103
|
+
case "GUILD_CREATE": {
|
|
104
|
+
const { Guild: Guild2 } = await import("./Guild-GOQZ7XP4.mjs");
|
|
105
|
+
const { Channel: Channel2 } = await import("./Channel-TOAQGSRX.mjs");
|
|
106
|
+
const guild = new Guild2(this, d);
|
|
107
|
+
this.guilds.set(guild.id, guild);
|
|
108
|
+
const g = d;
|
|
109
|
+
for (const ch of g.channels ?? []) {
|
|
110
|
+
const channel = Channel2.from(this, ch);
|
|
111
|
+
if (channel) this.channels.set(channel.id, channel);
|
|
112
|
+
}
|
|
113
|
+
this.emit(Events.GuildCreate, guild);
|
|
114
|
+
if (g.voice_states?.length) {
|
|
115
|
+
this.emit(Events.VoiceStatesSync, { guildId: guild.id, voiceStates: g.voice_states });
|
|
116
|
+
}
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
case "GUILD_UPDATE": {
|
|
120
|
+
const { Guild: Guild2 } = await import("./Guild-GOQZ7XP4.mjs");
|
|
121
|
+
const g = d;
|
|
122
|
+
const old = this.guilds.get(g.id);
|
|
123
|
+
const updated = new Guild2(this, g);
|
|
124
|
+
this.guilds.set(updated.id, updated);
|
|
125
|
+
this.emit(Events.GuildUpdate, old ?? updated, updated);
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
case "GUILD_DELETE": {
|
|
129
|
+
const g = d;
|
|
130
|
+
const guild = this.guilds.get(g.id);
|
|
131
|
+
if (guild) {
|
|
132
|
+
this.guilds.delete(g.id);
|
|
133
|
+
this.emit(Events.GuildDelete, guild);
|
|
134
|
+
}
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
case "CHANNEL_CREATE": {
|
|
138
|
+
const { Channel: Channel2 } = await import("./Channel-TOAQGSRX.mjs");
|
|
139
|
+
const ch = Channel2.from(this, d);
|
|
140
|
+
if (ch) {
|
|
141
|
+
this.channels.set(ch.id, ch);
|
|
142
|
+
this.emit(Events.ChannelCreate, ch);
|
|
143
|
+
}
|
|
144
|
+
break;
|
|
145
|
+
}
|
|
146
|
+
case "CHANNEL_UPDATE": {
|
|
147
|
+
const { Channel: Channel2 } = await import("./Channel-TOAQGSRX.mjs");
|
|
148
|
+
const ch = d;
|
|
149
|
+
const oldCh = this.channels.get(ch.id);
|
|
150
|
+
const newCh = Channel2.from(this, ch);
|
|
151
|
+
if (newCh) {
|
|
152
|
+
this.channels.set(newCh.id, newCh);
|
|
153
|
+
this.emit(Events.ChannelUpdate, oldCh ?? newCh, newCh);
|
|
154
|
+
}
|
|
155
|
+
break;
|
|
156
|
+
}
|
|
157
|
+
case "CHANNEL_DELETE": {
|
|
158
|
+
const ch = d;
|
|
159
|
+
const channel = this.channels.get(ch.id);
|
|
160
|
+
if (channel) {
|
|
161
|
+
this.channels.delete(ch.id);
|
|
162
|
+
this.emit(Events.ChannelDelete, channel);
|
|
163
|
+
}
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
case "GUILD_MEMBER_ADD": {
|
|
167
|
+
const { GuildMember: GuildMember2 } = await import("./GuildMember-RGVPVUAG.mjs");
|
|
168
|
+
const data = d;
|
|
169
|
+
const guild = this.guilds.get(data.guild_id);
|
|
170
|
+
if (guild) {
|
|
171
|
+
const member = new GuildMember2(this, data, guild);
|
|
172
|
+
guild.members.set(member.id, member);
|
|
173
|
+
this.emit(Events.GuildMemberAdd, member);
|
|
174
|
+
}
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
case "GUILD_MEMBER_UPDATE": {
|
|
178
|
+
const { GuildMember: GuildMember2 } = await import("./GuildMember-RGVPVUAG.mjs");
|
|
179
|
+
const data = d;
|
|
180
|
+
const guild = this.guilds.get(data.guild_id);
|
|
181
|
+
if (guild) {
|
|
182
|
+
const oldM = guild.members.get(data.user.id);
|
|
183
|
+
const newM = new GuildMember2(this, data, guild);
|
|
184
|
+
guild.members.set(newM.id, newM);
|
|
185
|
+
this.emit(Events.GuildMemberUpdate, oldM ?? newM, newM);
|
|
186
|
+
}
|
|
187
|
+
break;
|
|
188
|
+
}
|
|
189
|
+
case "GUILD_MEMBER_REMOVE": {
|
|
190
|
+
const data = d;
|
|
191
|
+
const guild = this.guilds.get(data.guild_id);
|
|
192
|
+
if (guild) {
|
|
193
|
+
const member = guild.members.get(data.user.id);
|
|
194
|
+
if (member) {
|
|
195
|
+
guild.members.delete(data.user.id);
|
|
196
|
+
this.emit(Events.GuildMemberRemove, member);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
case "INTERACTION_CREATE": {
|
|
202
|
+
this.emit(Events.InteractionCreate, d);
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
205
|
+
case "VOICE_STATE_UPDATE": {
|
|
206
|
+
this.emit(Events.VoiceStateUpdate, d);
|
|
207
|
+
break;
|
|
208
|
+
}
|
|
209
|
+
case "VOICE_SERVER_UPDATE": {
|
|
210
|
+
this.emit(Events.VoiceServerUpdate, d);
|
|
211
|
+
break;
|
|
212
|
+
}
|
|
213
|
+
default:
|
|
214
|
+
break;
|
|
215
|
+
}
|
|
216
|
+
} catch (err) {
|
|
217
|
+
this.emit(Events.Error, err instanceof Error ? err : new Error(String(err)));
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
async login(token) {
|
|
221
|
+
this.rest.setToken(token);
|
|
222
|
+
let intents = this.options.intents ?? 0;
|
|
223
|
+
if (intents !== 0) {
|
|
224
|
+
if (typeof process !== "undefined" && process.emitWarning) {
|
|
225
|
+
process.emitWarning(
|
|
226
|
+
"Fluxer does not support intents yet. Value has been set to 0.",
|
|
227
|
+
{ type: "FluxerIntents" }
|
|
228
|
+
);
|
|
229
|
+
} else {
|
|
230
|
+
console.warn("Fluxer does not support intents yet. Value has been set to 0.");
|
|
231
|
+
}
|
|
232
|
+
intents = 0;
|
|
233
|
+
}
|
|
234
|
+
this._ws = new WebSocketManager({
|
|
235
|
+
token,
|
|
236
|
+
intents,
|
|
237
|
+
rest: { get: (route) => this.rest.get(route) },
|
|
238
|
+
version: this.options.rest?.version ?? "1",
|
|
239
|
+
WebSocket: this.options.WebSocket
|
|
240
|
+
});
|
|
241
|
+
this._ws.on("dispatch", ({ payload }) => {
|
|
242
|
+
this.handleDispatch(payload);
|
|
243
|
+
});
|
|
244
|
+
this._ws.on("ready", async ({ data }) => {
|
|
245
|
+
const { ClientUser: ClientUser2 } = await import("./ClientUser-RNDKHQ3Z.mjs");
|
|
246
|
+
const { Guild: Guild2 } = await import("./Guild-GOQZ7XP4.mjs");
|
|
247
|
+
const { Channel: Channel2 } = await import("./Channel-TOAQGSRX.mjs");
|
|
248
|
+
this.user = new ClientUser2(this, data.user);
|
|
249
|
+
for (const g of data.guilds ?? []) {
|
|
250
|
+
const guild = new Guild2(this, g);
|
|
251
|
+
this.guilds.set(guild.id, guild);
|
|
252
|
+
const withCh = g;
|
|
253
|
+
for (const ch of withCh.channels ?? []) {
|
|
254
|
+
const channel = Channel2.from(this, ch);
|
|
255
|
+
if (channel) this.channels.set(channel.id, channel);
|
|
256
|
+
}
|
|
257
|
+
if (withCh.voice_states?.length) {
|
|
258
|
+
this.emit(Events.VoiceStatesSync, { guildId: guild.id, voiceStates: withCh.voice_states });
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
this.readyAt = /* @__PURE__ */ new Date();
|
|
262
|
+
this.emit(Events.Ready);
|
|
263
|
+
});
|
|
264
|
+
this._ws.on("error", ({ error }) => this.emit(Events.Error, error));
|
|
265
|
+
this._ws.on("debug", (msg) => this.emit(Events.Debug, msg));
|
|
266
|
+
await this._ws.connect();
|
|
267
|
+
return token;
|
|
268
|
+
}
|
|
269
|
+
async destroy() {
|
|
270
|
+
if (this._ws) {
|
|
271
|
+
this._ws.destroy();
|
|
272
|
+
this._ws = null;
|
|
273
|
+
}
|
|
274
|
+
this.rest.setToken(null);
|
|
275
|
+
this.user = null;
|
|
276
|
+
this.readyAt = null;
|
|
277
|
+
this.guilds.clear();
|
|
278
|
+
this.channels.clear();
|
|
279
|
+
this.users.clear();
|
|
280
|
+
}
|
|
281
|
+
isReady() {
|
|
282
|
+
return this.readyAt !== null && this.user !== null;
|
|
283
|
+
}
|
|
284
|
+
static get Routes() {
|
|
285
|
+
return Routes;
|
|
286
|
+
}
|
|
287
|
+
};
|
|
288
|
+
|
|
289
|
+
// src/errors/FluxerError.ts
|
|
290
|
+
var FluxerError = class _FluxerError extends Error {
|
|
291
|
+
constructor(message) {
|
|
292
|
+
super(message);
|
|
293
|
+
this.name = "FluxerError";
|
|
294
|
+
Object.setPrototypeOf(this, _FluxerError.prototype);
|
|
295
|
+
}
|
|
296
|
+
};
|
|
297
|
+
|
|
298
|
+
// src/errors/ErrorCodes.ts
|
|
299
|
+
var ErrorCodes = {
|
|
300
|
+
ClientNotReady: "CLIENT_NOT_READY",
|
|
301
|
+
InvalidToken: "INVALID_TOKEN"
|
|
302
|
+
};
|
|
303
|
+
|
|
304
|
+
// src/index.ts
|
|
305
|
+
import { EmbedBuilder, MessagePayload, AttachmentBuilder } from "@fluxerjs/builders";
|
|
306
|
+
import { Routes as Routes2, GatewayOpcodes } from "@fluxerjs/types";
|
|
307
|
+
export {
|
|
308
|
+
AttachmentBuilder,
|
|
309
|
+
Base,
|
|
310
|
+
CategoryChannel,
|
|
311
|
+
Channel,
|
|
312
|
+
Client,
|
|
313
|
+
ClientUser,
|
|
314
|
+
EmbedBuilder,
|
|
315
|
+
ErrorCodes,
|
|
316
|
+
Events,
|
|
317
|
+
FluxerError,
|
|
318
|
+
GatewayOpcodes,
|
|
319
|
+
Guild,
|
|
320
|
+
GuildChannel,
|
|
321
|
+
GuildMember,
|
|
322
|
+
LinkChannel,
|
|
323
|
+
Message,
|
|
324
|
+
MessagePayload,
|
|
325
|
+
Routes2 as Routes,
|
|
326
|
+
TextChannel,
|
|
327
|
+
User,
|
|
328
|
+
VoiceChannel
|
|
329
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@fluxerjs/core",
|
|
3
|
+
"publishConfig": {
|
|
4
|
+
"access": "public"
|
|
5
|
+
},
|
|
6
|
+
"version": "1.0.2",
|
|
7
|
+
"description": "A fully-featured SDK for Fluxer bots",
|
|
8
|
+
"main": "./dist/index.js",
|
|
9
|
+
"module": "./dist/index.mjs",
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"import": "./dist/index.mjs",
|
|
15
|
+
"require": "./dist/index.js"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"dist"
|
|
20
|
+
],
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"@fluxerjs/builders": "1.0.2",
|
|
23
|
+
"@fluxerjs/types": "1.0.2",
|
|
24
|
+
"@fluxerjs/rest": "1.0.2",
|
|
25
|
+
"@fluxerjs/ws": "1.0.2",
|
|
26
|
+
"@fluxerjs/collection": "1.0.2",
|
|
27
|
+
"@fluxerjs/util": "1.0.2"
|
|
28
|
+
},
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"@types/node": "^20.0.0",
|
|
31
|
+
"tsup": "^8.3.0",
|
|
32
|
+
"typescript": "^5.6.0"
|
|
33
|
+
},
|
|
34
|
+
"engines": {
|
|
35
|
+
"node": ">=18.0.0"
|
|
36
|
+
},
|
|
37
|
+
"scripts": {
|
|
38
|
+
"build": "tsup src/index.ts --format cjs,esm --dts",
|
|
39
|
+
"clean": "rm -rf dist"
|
|
40
|
+
}
|
|
41
|
+
}
|