@fluxerjs/core 1.0.2 → 1.0.5
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 +17 -0
- package/dist/Channel-KILNV5V3.mjs +17 -0
- package/dist/Channel-VENHOL7S.mjs +17 -0
- package/dist/ClientUser-J6HQVSDJ.mjs +9 -0
- package/dist/Guild-CA3W6DOD.mjs +8 -0
- package/dist/Guild-NHNQ5TIA.mjs +8 -0
- package/dist/Guild-ZOFF5LFR.mjs +8 -0
- package/dist/GuildMember-XF7K2R45.mjs +9 -0
- package/dist/Message-PZUU7ZFR.mjs +9 -0
- package/dist/Webhook-2RHBXH7R.mjs +7 -0
- package/dist/Webhook-NUQCJAWZ.mjs +7 -0
- package/dist/chunk-4DBGMFOQ.mjs +14 -0
- package/dist/chunk-72OY7B3D.mjs +72 -0
- package/dist/chunk-7FYM4D2E.mjs +50 -0
- package/dist/chunk-7GZN6JXT.mjs +50 -0
- package/dist/chunk-BUEXP5SZ.mjs +70 -0
- package/dist/chunk-EF32ILJL.mjs +102 -0
- package/dist/chunk-L25ON7WB.mjs +52 -0
- package/dist/chunk-QDCFQF6J.mjs +36 -0
- package/dist/chunk-QDNFJVVE.mjs +70 -0
- package/dist/chunk-SW6KNICI.mjs +52 -0
- package/dist/chunk-XXCBJJZE.mjs +88 -0
- package/dist/chunk-ZHRQQZ4X.mjs +102 -0
- package/dist/index.d.mts +66 -2
- package/dist/index.d.ts +66 -2
- package/dist/index.js +133 -15
- package/dist/index.mjs +31 -10
- package/package.json +7 -7
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CategoryChannel,
|
|
3
|
+
Channel,
|
|
4
|
+
GuildChannel,
|
|
5
|
+
LinkChannel,
|
|
6
|
+
TextChannel,
|
|
7
|
+
VoiceChannel
|
|
8
|
+
} from "./chunk-ZHRQQZ4X.mjs";
|
|
9
|
+
import "./chunk-XNS4O6QJ.mjs";
|
|
10
|
+
export {
|
|
11
|
+
CategoryChannel,
|
|
12
|
+
Channel,
|
|
13
|
+
GuildChannel,
|
|
14
|
+
LinkChannel,
|
|
15
|
+
TextChannel,
|
|
16
|
+
VoiceChannel
|
|
17
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CategoryChannel,
|
|
3
|
+
Channel,
|
|
4
|
+
GuildChannel,
|
|
5
|
+
LinkChannel,
|
|
6
|
+
TextChannel,
|
|
7
|
+
VoiceChannel
|
|
8
|
+
} from "./chunk-XXCBJJZE.mjs";
|
|
9
|
+
import "./chunk-XNS4O6QJ.mjs";
|
|
10
|
+
export {
|
|
11
|
+
CategoryChannel,
|
|
12
|
+
Channel,
|
|
13
|
+
GuildChannel,
|
|
14
|
+
LinkChannel,
|
|
15
|
+
TextChannel,
|
|
16
|
+
VoiceChannel
|
|
17
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CategoryChannel,
|
|
3
|
+
Channel,
|
|
4
|
+
GuildChannel,
|
|
5
|
+
LinkChannel,
|
|
6
|
+
TextChannel,
|
|
7
|
+
VoiceChannel
|
|
8
|
+
} from "./chunk-EF32ILJL.mjs";
|
|
9
|
+
import "./chunk-XNS4O6QJ.mjs";
|
|
10
|
+
export {
|
|
11
|
+
CategoryChannel,
|
|
12
|
+
Channel,
|
|
13
|
+
GuildChannel,
|
|
14
|
+
LinkChannel,
|
|
15
|
+
TextChannel,
|
|
16
|
+
VoiceChannel
|
|
17
|
+
};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import {
|
|
2
|
+
User
|
|
3
|
+
} from "./chunk-SW6KNICI.mjs";
|
|
4
|
+
import {
|
|
5
|
+
Base
|
|
6
|
+
} from "./chunk-XNS4O6QJ.mjs";
|
|
7
|
+
|
|
8
|
+
// src/structures/Message.ts
|
|
9
|
+
import { Collection } from "@fluxerjs/collection";
|
|
10
|
+
import { Routes } from "@fluxerjs/types";
|
|
11
|
+
var Message = class _Message extends Base {
|
|
12
|
+
/** The client that received this message. */
|
|
13
|
+
client;
|
|
14
|
+
/** Snowflake ID of the message. */
|
|
15
|
+
id;
|
|
16
|
+
/** Channel ID. */
|
|
17
|
+
channelId;
|
|
18
|
+
/** Guild ID, or null for DMs. */
|
|
19
|
+
guildId;
|
|
20
|
+
/** User who sent the message. */
|
|
21
|
+
author;
|
|
22
|
+
/** Text content. */
|
|
23
|
+
content;
|
|
24
|
+
/** When the message was created. */
|
|
25
|
+
createdAt;
|
|
26
|
+
/** When the message was last edited, or null. */
|
|
27
|
+
editedAt;
|
|
28
|
+
/** Whether the message is pinned. */
|
|
29
|
+
pinned;
|
|
30
|
+
/** Attachments. */
|
|
31
|
+
attachments;
|
|
32
|
+
/** Resolved channel, when available. */
|
|
33
|
+
channel;
|
|
34
|
+
/** @internal */
|
|
35
|
+
constructor(client, data) {
|
|
36
|
+
super();
|
|
37
|
+
this.client = client;
|
|
38
|
+
this.id = data.id;
|
|
39
|
+
this.channelId = data.channel_id;
|
|
40
|
+
this.guildId = data.guild_id ?? null;
|
|
41
|
+
this.author = new User(client, data.author);
|
|
42
|
+
this.content = data.content;
|
|
43
|
+
this.createdAt = new Date(data.timestamp);
|
|
44
|
+
this.editedAt = data.edited_timestamp ? new Date(data.edited_timestamp) : null;
|
|
45
|
+
this.pinned = data.pinned;
|
|
46
|
+
this.attachments = new Collection();
|
|
47
|
+
for (const a of data.attachments ?? []) this.attachments.set(a.id, a);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Reply to this message (creates a reply reference).
|
|
51
|
+
* @param options - Content string or object with content/embeds
|
|
52
|
+
* @returns The new Message
|
|
53
|
+
*/
|
|
54
|
+
async reply(options) {
|
|
55
|
+
const body = typeof options === "string" ? { content: options, message_reference: { channel_id: this.channelId, message_id: this.id, guild_id: this.guildId ?? void 0 } } : { ...options, message_reference: { channel_id: this.channelId, message_id: this.id, guild_id: this.guildId ?? void 0 } };
|
|
56
|
+
const data = await this.client.rest.post(Routes.channelMessages(this.channelId), { body });
|
|
57
|
+
return new _Message(this.client, data);
|
|
58
|
+
}
|
|
59
|
+
/** Edit this message. */
|
|
60
|
+
async edit(options) {
|
|
61
|
+
const data = await this.client.rest.patch(Routes.channelMessage(this.channelId, this.id), { body: options });
|
|
62
|
+
return new _Message(this.client, data);
|
|
63
|
+
}
|
|
64
|
+
/** Delete this message. */
|
|
65
|
+
async delete() {
|
|
66
|
+
await this.client.rest.delete(Routes.channelMessage(this.channelId, this.id));
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
export {
|
|
71
|
+
Message
|
|
72
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CDN_URL
|
|
3
|
+
} from "./chunk-HQMYRYMY.mjs";
|
|
4
|
+
import {
|
|
5
|
+
Base
|
|
6
|
+
} from "./chunk-XNS4O6QJ.mjs";
|
|
7
|
+
|
|
8
|
+
// src/structures/Guild.ts
|
|
9
|
+
import { Collection } from "@fluxerjs/collection";
|
|
10
|
+
import { Routes } from "@fluxerjs/types";
|
|
11
|
+
var Guild = class extends Base {
|
|
12
|
+
client;
|
|
13
|
+
id;
|
|
14
|
+
name;
|
|
15
|
+
icon;
|
|
16
|
+
banner;
|
|
17
|
+
ownerId;
|
|
18
|
+
members = new Collection();
|
|
19
|
+
channels = new Collection();
|
|
20
|
+
constructor(client, data) {
|
|
21
|
+
super();
|
|
22
|
+
this.client = client;
|
|
23
|
+
this.id = data.id;
|
|
24
|
+
this.name = data.name;
|
|
25
|
+
this.icon = data.icon ?? null;
|
|
26
|
+
this.banner = data.banner ?? null;
|
|
27
|
+
this.ownerId = data.owner_id;
|
|
28
|
+
}
|
|
29
|
+
iconURL(options) {
|
|
30
|
+
if (!this.icon) return null;
|
|
31
|
+
const size = options?.size ? `?size=${options.size}` : "";
|
|
32
|
+
return `${CDN_URL}/icons/${this.id}/${this.icon}.png${size}`;
|
|
33
|
+
}
|
|
34
|
+
bannerURL(options) {
|
|
35
|
+
if (!this.banner) return null;
|
|
36
|
+
const size = options?.size ? `?size=${options.size}` : "";
|
|
37
|
+
return `${CDN_URL}/banners/${this.id}/${this.banner}.png${size}`;
|
|
38
|
+
}
|
|
39
|
+
/** Fetch all webhooks in this guild. Returned webhooks do not include the token (cannot send). */
|
|
40
|
+
async fetchWebhooks() {
|
|
41
|
+
const { Webhook } = await import("./Webhook-NUQCJAWZ.mjs");
|
|
42
|
+
const data = await this.client.rest.get(Routes.guildWebhooks(this.id));
|
|
43
|
+
const list = Array.isArray(data) ? data : Object.values(data ?? {});
|
|
44
|
+
return list.map((w) => new Webhook(this.client, w));
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export {
|
|
49
|
+
Guild
|
|
50
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CDN_URL
|
|
3
|
+
} from "./chunk-HQMYRYMY.mjs";
|
|
4
|
+
import {
|
|
5
|
+
Base
|
|
6
|
+
} from "./chunk-XNS4O6QJ.mjs";
|
|
7
|
+
|
|
8
|
+
// src/structures/Guild.ts
|
|
9
|
+
import { Collection } from "@fluxerjs/collection";
|
|
10
|
+
import { Routes } from "@fluxerjs/types";
|
|
11
|
+
var Guild = class extends Base {
|
|
12
|
+
client;
|
|
13
|
+
id;
|
|
14
|
+
name;
|
|
15
|
+
icon;
|
|
16
|
+
banner;
|
|
17
|
+
ownerId;
|
|
18
|
+
members = new Collection();
|
|
19
|
+
channels = new Collection();
|
|
20
|
+
constructor(client, data) {
|
|
21
|
+
super();
|
|
22
|
+
this.client = client;
|
|
23
|
+
this.id = data.id;
|
|
24
|
+
this.name = data.name;
|
|
25
|
+
this.icon = data.icon ?? null;
|
|
26
|
+
this.banner = data.banner ?? null;
|
|
27
|
+
this.ownerId = data.owner_id;
|
|
28
|
+
}
|
|
29
|
+
iconURL(options) {
|
|
30
|
+
if (!this.icon) return null;
|
|
31
|
+
const size = options?.size ? `?size=${options.size}` : "";
|
|
32
|
+
return `${CDN_URL}/icons/${this.id}/${this.icon}.png${size}`;
|
|
33
|
+
}
|
|
34
|
+
bannerURL(options) {
|
|
35
|
+
if (!this.banner) return null;
|
|
36
|
+
const size = options?.size ? `?size=${options.size}` : "";
|
|
37
|
+
return `${CDN_URL}/banners/${this.id}/${this.banner}.png${size}`;
|
|
38
|
+
}
|
|
39
|
+
/** Fetch all webhooks in this guild. Returned webhooks do not include the token (cannot send). */
|
|
40
|
+
async fetchWebhooks() {
|
|
41
|
+
const { Webhook } = await import("./Webhook-2RHBXH7R.mjs");
|
|
42
|
+
const data = await this.client.rest.get(Routes.guildWebhooks(this.id));
|
|
43
|
+
const list = Array.isArray(data) ? data : Object.values(data ?? {});
|
|
44
|
+
return list.map((w) => new Webhook(this.client, w));
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export {
|
|
49
|
+
Guild
|
|
50
|
+
};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Base
|
|
3
|
+
} from "./chunk-XNS4O6QJ.mjs";
|
|
4
|
+
|
|
5
|
+
// src/structures/Webhook.ts
|
|
6
|
+
import { Routes } from "@fluxerjs/types";
|
|
7
|
+
var Webhook = class _Webhook extends Base {
|
|
8
|
+
client;
|
|
9
|
+
id;
|
|
10
|
+
guildId;
|
|
11
|
+
channelId;
|
|
12
|
+
name;
|
|
13
|
+
avatar;
|
|
14
|
+
/** Present only when webhook was created via createWebhook(); not returned when fetching. */
|
|
15
|
+
token;
|
|
16
|
+
constructor(client, data) {
|
|
17
|
+
super();
|
|
18
|
+
this.client = client;
|
|
19
|
+
this.id = data.id;
|
|
20
|
+
this.guildId = data.guild_id;
|
|
21
|
+
this.channelId = data.channel_id;
|
|
22
|
+
this.name = data.name ?? "Unknown";
|
|
23
|
+
this.avatar = data.avatar ?? null;
|
|
24
|
+
this.token = data.token ?? null;
|
|
25
|
+
}
|
|
26
|
+
/** Delete this webhook. Requires bot token with Manage Webhooks permission. */
|
|
27
|
+
async delete() {
|
|
28
|
+
await this.client.rest.delete(Routes.webhook(this.id), { auth: true });
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Send a message via this webhook. Requires the webhook token (only present when created, not when fetched).
|
|
32
|
+
* @throws Error if token is not available
|
|
33
|
+
*/
|
|
34
|
+
async send(options) {
|
|
35
|
+
if (!this.token) {
|
|
36
|
+
throw new Error("Webhook token is required to send. The token is only returned when creating a webhook; fetched webhooks cannot send.");
|
|
37
|
+
}
|
|
38
|
+
const body = typeof options === "string" ? { content: options } : options;
|
|
39
|
+
await this.client.rest.post(Routes.webhookExecute(this.id, this.token), {
|
|
40
|
+
body,
|
|
41
|
+
auth: false
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Fetch a webhook by ID using bot auth. The returned webhook will not have a token (cannot send).
|
|
46
|
+
*/
|
|
47
|
+
static async fetch(client, webhookId) {
|
|
48
|
+
const data = await client.rest.get(Routes.webhook(webhookId));
|
|
49
|
+
return new _Webhook(client, data);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Create a Webhook instance from an ID and token (e.g. from a stored webhook URL).
|
|
53
|
+
* Useful when you have the token from a previous createWebhook() call.
|
|
54
|
+
*/
|
|
55
|
+
static fromToken(client, webhookId, token, options) {
|
|
56
|
+
return new _Webhook(client, {
|
|
57
|
+
id: webhookId,
|
|
58
|
+
guild_id: options?.guildId ?? "",
|
|
59
|
+
channel_id: options?.channelId ?? "",
|
|
60
|
+
name: options?.name ?? "Webhook",
|
|
61
|
+
avatar: null,
|
|
62
|
+
token,
|
|
63
|
+
user: { id: "", username: "webhook", discriminator: "0" }
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
export {
|
|
69
|
+
Webhook
|
|
70
|
+
};
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Base
|
|
3
|
+
} from "./chunk-XNS4O6QJ.mjs";
|
|
4
|
+
|
|
5
|
+
// src/structures/Channel.ts
|
|
6
|
+
import { ChannelType, Routes } from "@fluxerjs/types";
|
|
7
|
+
var Channel = class extends Base {
|
|
8
|
+
client;
|
|
9
|
+
id;
|
|
10
|
+
type;
|
|
11
|
+
constructor(client, data) {
|
|
12
|
+
super();
|
|
13
|
+
this.client = client;
|
|
14
|
+
this.id = data.id;
|
|
15
|
+
this.type = data.type;
|
|
16
|
+
}
|
|
17
|
+
static from(client, data) {
|
|
18
|
+
const type = data.type ?? 0;
|
|
19
|
+
if (type === ChannelType.GuildText) return new TextChannel(client, data);
|
|
20
|
+
if (type === ChannelType.GuildCategory) return new CategoryChannel(client, data);
|
|
21
|
+
if (type === ChannelType.GuildVoice) return new VoiceChannel(client, data);
|
|
22
|
+
if (type === ChannelType.GuildLink) return new LinkChannel(client, data);
|
|
23
|
+
return new GuildChannel(client, data);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
var GuildChannel = class extends Channel {
|
|
27
|
+
guildId;
|
|
28
|
+
name;
|
|
29
|
+
position;
|
|
30
|
+
parentId;
|
|
31
|
+
constructor(client, data) {
|
|
32
|
+
super(client, data);
|
|
33
|
+
this.guildId = data.guild_id ?? "";
|
|
34
|
+
this.name = data.name ?? null;
|
|
35
|
+
this.position = data.position;
|
|
36
|
+
this.parentId = data.parent_id ?? null;
|
|
37
|
+
}
|
|
38
|
+
/** Create a webhook in this channel. Returns the webhook with token (required for send()). */
|
|
39
|
+
async createWebhook(options) {
|
|
40
|
+
const { Webhook } = await import("./Webhook-NUQCJAWZ.mjs");
|
|
41
|
+
const data = await this.client.rest.post(Routes.channelWebhooks(this.id), {
|
|
42
|
+
body: options,
|
|
43
|
+
auth: true
|
|
44
|
+
});
|
|
45
|
+
return new Webhook(this.client, data);
|
|
46
|
+
}
|
|
47
|
+
/** Fetch all webhooks in this channel. Returned webhooks do not include the token (cannot send). */
|
|
48
|
+
async fetchWebhooks() {
|
|
49
|
+
const { Webhook } = await import("./Webhook-NUQCJAWZ.mjs");
|
|
50
|
+
const data = await this.client.rest.get(Routes.channelWebhooks(this.id));
|
|
51
|
+
const list = Array.isArray(data) ? data : Object.values(data ?? {});
|
|
52
|
+
return list.map((w) => new Webhook(this.client, w));
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
var TextChannel = class extends GuildChannel {
|
|
56
|
+
topic;
|
|
57
|
+
nsfw;
|
|
58
|
+
rateLimitPerUser;
|
|
59
|
+
lastMessageId;
|
|
60
|
+
constructor(client, data) {
|
|
61
|
+
super(client, data);
|
|
62
|
+
this.topic = data.topic ?? null;
|
|
63
|
+
this.nsfw = data.nsfw ?? false;
|
|
64
|
+
this.rateLimitPerUser = data.rate_limit_per_user ?? 0;
|
|
65
|
+
this.lastMessageId = data.last_message_id ?? null;
|
|
66
|
+
}
|
|
67
|
+
async send(options) {
|
|
68
|
+
const body = typeof options === "string" ? { content: options } : options;
|
|
69
|
+
const { Message } = await import("./Message-23Z3RPCZ.mjs");
|
|
70
|
+
const data = await this.client.rest.post(Routes.channelMessages(this.id), { body });
|
|
71
|
+
return new Message(this.client, data);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
var CategoryChannel = class extends GuildChannel {
|
|
75
|
+
};
|
|
76
|
+
var VoiceChannel = class extends GuildChannel {
|
|
77
|
+
bitrate;
|
|
78
|
+
userLimit;
|
|
79
|
+
rtcRegion;
|
|
80
|
+
constructor(client, data) {
|
|
81
|
+
super(client, data);
|
|
82
|
+
this.bitrate = data.bitrate ?? null;
|
|
83
|
+
this.userLimit = data.user_limit ?? null;
|
|
84
|
+
this.rtcRegion = data.rtc_region ?? null;
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
var LinkChannel = class extends GuildChannel {
|
|
88
|
+
url;
|
|
89
|
+
constructor(client, data) {
|
|
90
|
+
super(client, data);
|
|
91
|
+
this.url = data.url ?? null;
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
export {
|
|
96
|
+
Channel,
|
|
97
|
+
GuildChannel,
|
|
98
|
+
TextChannel,
|
|
99
|
+
CategoryChannel,
|
|
100
|
+
VoiceChannel,
|
|
101
|
+
LinkChannel
|
|
102
|
+
};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CDN_URL
|
|
3
|
+
} from "./chunk-HQMYRYMY.mjs";
|
|
4
|
+
import {
|
|
5
|
+
Base
|
|
6
|
+
} from "./chunk-XNS4O6QJ.mjs";
|
|
7
|
+
|
|
8
|
+
// src/structures/Guild.ts
|
|
9
|
+
import { Collection } from "@fluxerjs/collection";
|
|
10
|
+
var Guild = class extends Base {
|
|
11
|
+
client;
|
|
12
|
+
/** Snowflake ID. */
|
|
13
|
+
id;
|
|
14
|
+
/** Guild name. */
|
|
15
|
+
name;
|
|
16
|
+
/** Icon hash, or null. */
|
|
17
|
+
icon;
|
|
18
|
+
/** Banner hash, or null. */
|
|
19
|
+
banner;
|
|
20
|
+
/** Owner user ID. */
|
|
21
|
+
ownerId;
|
|
22
|
+
/** Cached members. */
|
|
23
|
+
members = new Collection();
|
|
24
|
+
/** Cached channels. */
|
|
25
|
+
channels = new Collection();
|
|
26
|
+
/** @internal */
|
|
27
|
+
constructor(client, data) {
|
|
28
|
+
super();
|
|
29
|
+
this.client = client;
|
|
30
|
+
this.id = data.id;
|
|
31
|
+
this.name = data.name;
|
|
32
|
+
this.icon = data.icon ?? null;
|
|
33
|
+
this.banner = data.banner ?? null;
|
|
34
|
+
this.ownerId = data.owner_id;
|
|
35
|
+
}
|
|
36
|
+
/** CDN URL for the guild icon. */
|
|
37
|
+
iconURL(options) {
|
|
38
|
+
if (!this.icon) return null;
|
|
39
|
+
const size = options?.size ? `?size=${options.size}` : "";
|
|
40
|
+
return `${CDN_URL}/icons/${this.id}/${this.icon}.png${size}`;
|
|
41
|
+
}
|
|
42
|
+
/** CDN URL for the guild banner. */
|
|
43
|
+
bannerURL(options) {
|
|
44
|
+
if (!this.banner) return null;
|
|
45
|
+
const size = options?.size ? `?size=${options.size}` : "";
|
|
46
|
+
return `${CDN_URL}/banners/${this.id}/${this.banner}.png${size}`;
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
export {
|
|
51
|
+
Guild
|
|
52
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import {
|
|
2
|
+
User
|
|
3
|
+
} from "./chunk-SW6KNICI.mjs";
|
|
4
|
+
import {
|
|
5
|
+
Base
|
|
6
|
+
} from "./chunk-XNS4O6QJ.mjs";
|
|
7
|
+
|
|
8
|
+
// src/structures/GuildMember.ts
|
|
9
|
+
var GuildMember = class extends Base {
|
|
10
|
+
client;
|
|
11
|
+
id;
|
|
12
|
+
user;
|
|
13
|
+
guild;
|
|
14
|
+
nick;
|
|
15
|
+
roles;
|
|
16
|
+
joinedAt;
|
|
17
|
+
communicationDisabledUntil;
|
|
18
|
+
constructor(client, data, guild) {
|
|
19
|
+
super();
|
|
20
|
+
this.client = client;
|
|
21
|
+
this.user = new User(client, data.user);
|
|
22
|
+
this.id = data.user.id;
|
|
23
|
+
this.guild = guild;
|
|
24
|
+
this.nick = data.nick ?? null;
|
|
25
|
+
this.roles = data.roles ?? [];
|
|
26
|
+
this.joinedAt = new Date(data.joined_at);
|
|
27
|
+
this.communicationDisabledUntil = data.communication_disabled_until ? new Date(data.communication_disabled_until) : null;
|
|
28
|
+
}
|
|
29
|
+
get displayName() {
|
|
30
|
+
return this.nick ?? this.user.globalName ?? this.user.username;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export {
|
|
35
|
+
GuildMember
|
|
36
|
+
};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Base
|
|
3
|
+
} from "./chunk-XNS4O6QJ.mjs";
|
|
4
|
+
|
|
5
|
+
// src/structures/Webhook.ts
|
|
6
|
+
import { Routes } from "@fluxerjs/types";
|
|
7
|
+
var Webhook = class _Webhook extends Base {
|
|
8
|
+
client;
|
|
9
|
+
id;
|
|
10
|
+
guildId;
|
|
11
|
+
channelId;
|
|
12
|
+
name;
|
|
13
|
+
avatar;
|
|
14
|
+
/** Present only when webhook was created via createWebhook(); not returned when fetching. */
|
|
15
|
+
token;
|
|
16
|
+
constructor(client, data) {
|
|
17
|
+
super();
|
|
18
|
+
this.client = client;
|
|
19
|
+
this.id = data.id;
|
|
20
|
+
this.guildId = data.guild_id;
|
|
21
|
+
this.channelId = data.channel_id;
|
|
22
|
+
this.name = data.name ?? "Unknown";
|
|
23
|
+
this.avatar = data.avatar ?? null;
|
|
24
|
+
this.token = data.token ?? null;
|
|
25
|
+
}
|
|
26
|
+
/** Delete this webhook. Requires bot token with Manage Webhooks permission. */
|
|
27
|
+
async delete() {
|
|
28
|
+
await this.client.rest.delete(Routes.webhook(this.id), { auth: true });
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Send a message via this webhook. Requires the webhook token (only present when created, not when fetched).
|
|
32
|
+
* @throws Error if token is not available
|
|
33
|
+
*/
|
|
34
|
+
async send(options) {
|
|
35
|
+
if (!this.token) {
|
|
36
|
+
throw new Error("Webhook token is required to send. The token is only returned when creating a webhook; fetched webhooks cannot send.");
|
|
37
|
+
}
|
|
38
|
+
const body = typeof options === "string" ? { content: options } : options;
|
|
39
|
+
await this.client.rest.post(Routes.webhookExecute(this.id, this.token), {
|
|
40
|
+
body,
|
|
41
|
+
auth: false
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Fetch a webhook by ID using bot auth. The returned webhook will not have a token (cannot send).
|
|
46
|
+
*/
|
|
47
|
+
static async fetch(client, webhookId) {
|
|
48
|
+
const data = await client.rest.get(Routes.webhook(webhookId));
|
|
49
|
+
return new _Webhook(client, data);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Create a Webhook instance from an ID and token (e.g. from a stored webhook URL).
|
|
53
|
+
* Useful when you have the token from a previous createWebhook() call.
|
|
54
|
+
*/
|
|
55
|
+
static fromToken(client, webhookId, token, options) {
|
|
56
|
+
return new _Webhook(client, {
|
|
57
|
+
id: webhookId,
|
|
58
|
+
guild_id: options?.guildId ?? "",
|
|
59
|
+
channel_id: options?.channelId ?? "",
|
|
60
|
+
name: options?.name ?? "Webhook",
|
|
61
|
+
avatar: null,
|
|
62
|
+
token,
|
|
63
|
+
user: { id: "", username: "webhook" }
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
export {
|
|
69
|
+
Webhook
|
|
70
|
+
};
|