baff.js 0.0.0-stage → 0.1.1
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/CHANGELOG.md +25 -0
- package/LICENSE +7 -0
- package/README.md +244 -3
- package/dist/cjs/builders/EmbedBuilder.d.ts +51 -0
- package/dist/cjs/builders/EmbedBuilder.js +150 -0
- package/dist/cjs/builders/SlashCommandBuilder.d.ts +69 -0
- package/dist/cjs/builders/SlashCommandBuilder.js +185 -0
- package/dist/cjs/builders/components/ActionRowBuilder.d.ts +14 -0
- package/dist/cjs/builders/components/ActionRowBuilder.js +53 -0
- package/dist/cjs/builders/components/ButtonBuilder.d.ts +19 -0
- package/dist/cjs/builders/components/ButtonBuilder.js +69 -0
- package/dist/cjs/builders/components/LayoutBuilders.d.ts +63 -0
- package/dist/cjs/builders/components/LayoutBuilders.js +179 -0
- package/dist/cjs/builders/components/ModalBuilder.d.ts +36 -0
- package/dist/cjs/builders/components/ModalBuilder.js +118 -0
- package/dist/cjs/builders/components/SelectMenuBuilder.d.ts +80 -0
- package/dist/cjs/builders/components/SelectMenuBuilder.js +192 -0
- package/dist/cjs/builders/components/shared.d.ts +16 -0
- package/dist/cjs/builders/components/shared.js +32 -0
- package/dist/cjs/builders/messagePayload.d.ts +35 -0
- package/dist/cjs/builders/messagePayload.js +88 -0
- package/dist/cjs/builders/validate.d.ts +12 -0
- package/dist/cjs/builders/validate.js +54 -0
- package/dist/cjs/client/Client.d.ts +63 -0
- package/dist/cjs/client/Client.js +152 -0
- package/dist/cjs/client/dispatch.d.ts +2 -0
- package/dist/cjs/client/dispatch.js +224 -0
- package/dist/cjs/client/events.d.ts +129 -0
- package/dist/cjs/client/events.js +2 -0
- package/dist/cjs/collectors/Collector.d.ts +37 -0
- package/dist/cjs/collectors/Collector.js +84 -0
- package/dist/cjs/collectors/InteractionCollector.d.ts +21 -0
- package/dist/cjs/collectors/InteractionCollector.js +44 -0
- package/dist/cjs/collectors/MessageCollector.d.ts +14 -0
- package/dist/cjs/collectors/MessageCollector.js +23 -0
- package/dist/cjs/errors/BaffError.d.ts +26 -0
- package/dist/cjs/errors/BaffError.js +39 -0
- package/dist/cjs/gateway/Gateway.d.ts +53 -0
- package/dist/cjs/gateway/Gateway.js +128 -0
- package/dist/cjs/http/handler.d.ts +11 -0
- package/dist/cjs/http/handler.js +72 -0
- package/dist/cjs/http/verify.d.ts +11 -0
- package/dist/cjs/http/verify.js +28 -0
- package/dist/cjs/index.d.ts +51 -0
- package/dist/cjs/index.js +185 -0
- package/dist/cjs/managers/CachedManager.d.ts +16 -0
- package/dist/cjs/managers/CachedManager.js +18 -0
- package/dist/cjs/managers/ChannelManager.d.ts +23 -0
- package/dist/cjs/managers/ChannelManager.js +85 -0
- package/dist/cjs/managers/CommandManager.d.ts +32 -0
- package/dist/cjs/managers/CommandManager.js +72 -0
- package/dist/cjs/managers/EventManager.d.ts +15 -0
- package/dist/cjs/managers/EventManager.js +36 -0
- package/dist/cjs/managers/ExpressionManagers.d.ts +36 -0
- package/dist/cjs/managers/ExpressionManagers.js +73 -0
- package/dist/cjs/managers/InviteManager.d.ts +17 -0
- package/dist/cjs/managers/InviteManager.js +26 -0
- package/dist/cjs/managers/MemberManager.d.ts +31 -0
- package/dist/cjs/managers/MemberManager.js +62 -0
- package/dist/cjs/managers/MessageManager.d.ts +32 -0
- package/dist/cjs/managers/MessageManager.js +79 -0
- package/dist/cjs/managers/RoleManager.d.ts +22 -0
- package/dist/cjs/managers/RoleManager.js +73 -0
- package/dist/cjs/managers/ServerChannelManager.d.ts +20 -0
- package/dist/cjs/managers/ServerChannelManager.js +30 -0
- package/dist/cjs/managers/ServerManager.d.ts +12 -0
- package/dist/cjs/managers/ServerManager.js +62 -0
- package/dist/cjs/managers/ThreadManager.d.ts +12 -0
- package/dist/cjs/managers/ThreadManager.js +20 -0
- package/dist/cjs/managers/UserManager.d.ts +11 -0
- package/dist/cjs/managers/UserManager.js +38 -0
- package/dist/cjs/managers/VoiceManager.d.ts +8 -0
- package/dist/cjs/managers/VoiceManager.js +17 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/rest/REST.d.ts +58 -0
- package/dist/cjs/rest/REST.js +193 -0
- package/dist/cjs/rest/Routes.d.ts +54 -0
- package/dist/cjs/rest/Routes.js +58 -0
- package/dist/cjs/rest/files.d.ts +19 -0
- package/dist/cjs/rest/files.js +37 -0
- package/dist/cjs/structures/Base.d.ts +13 -0
- package/dist/cjs/structures/Base.js +30 -0
- package/dist/cjs/structures/Message.d.ts +91 -0
- package/dist/cjs/structures/Message.js +200 -0
- package/dist/cjs/structures/Role.d.ts +34 -0
- package/dist/cjs/structures/Role.js +84 -0
- package/dist/cjs/structures/ScheduledEvent.d.ts +37 -0
- package/dist/cjs/structures/ScheduledEvent.js +73 -0
- package/dist/cjs/structures/Server.d.ts +68 -0
- package/dist/cjs/structures/Server.js +124 -0
- package/dist/cjs/structures/ServerAssets.d.ts +48 -0
- package/dist/cjs/structures/ServerAssets.js +104 -0
- package/dist/cjs/structures/ServerMember.d.ts +47 -0
- package/dist/cjs/structures/ServerMember.js +138 -0
- package/dist/cjs/structures/User.d.ts +35 -0
- package/dist/cjs/structures/User.js +87 -0
- package/dist/cjs/structures/Webhook.d.ts +30 -0
- package/dist/cjs/structures/Webhook.js +68 -0
- package/dist/cjs/structures/channels/BaseChannel.d.ts +49 -0
- package/dist/cjs/structures/channels/BaseChannel.js +81 -0
- package/dist/cjs/structures/channels/DMChannel.d.ts +9 -0
- package/dist/cjs/structures/channels/DMChannel.js +21 -0
- package/dist/cjs/structures/channels/ServerChannels.d.ts +57 -0
- package/dist/cjs/structures/channels/ServerChannels.js +138 -0
- package/dist/cjs/structures/channels/TextBasedChannel.d.ts +25 -0
- package/dist/cjs/structures/channels/TextBasedChannel.js +53 -0
- package/dist/cjs/structures/interactions/BaseInteraction.d.ts +74 -0
- package/dist/cjs/structures/interactions/BaseInteraction.js +221 -0
- package/dist/cjs/structures/interactions/CommandInteraction.d.ts +44 -0
- package/dist/cjs/structures/interactions/CommandInteraction.js +109 -0
- package/dist/cjs/structures/interactions/ComponentInteraction.d.ts +44 -0
- package/dist/cjs/structures/interactions/ComponentInteraction.js +64 -0
- package/dist/cjs/structures/interactions/ModalSubmitInteraction.d.ts +29 -0
- package/dist/cjs/structures/interactions/ModalSubmitInteraction.js +42 -0
- package/dist/cjs/structures/interactions/createInteraction.d.ts +4 -0
- package/dist/cjs/structures/interactions/createInteraction.js +34 -0
- package/dist/cjs/types.d.ts +369 -0
- package/dist/cjs/types.js +2 -0
- package/dist/cjs/util/Collection.d.ts +32 -0
- package/dist/cjs/util/Collection.js +145 -0
- package/dist/cjs/util/Permissions.d.ts +87 -0
- package/dist/cjs/util/Permissions.js +115 -0
- package/dist/cjs/util/Snowflake.d.ts +20 -0
- package/dist/cjs/util/Snowflake.js +40 -0
- package/dist/cjs/util/TypedEmitter.d.ts +17 -0
- package/dist/cjs/util/TypedEmitter.js +5 -0
- package/dist/cjs/util/constants.d.ts +78 -0
- package/dist/cjs/util/constants.js +81 -0
- package/dist/cjs/util/emoji.d.ts +8 -0
- package/dist/cjs/util/emoji.js +10 -0
- package/dist/cjs/util/formatters.d.ts +29 -0
- package/dist/cjs/util/formatters.js +55 -0
- package/dist/esm/builders/EmbedBuilder.d.ts +51 -0
- package/dist/esm/builders/EmbedBuilder.js +145 -0
- package/dist/esm/builders/SlashCommandBuilder.d.ts +69 -0
- package/dist/esm/builders/SlashCommandBuilder.js +170 -0
- package/dist/esm/builders/components/ActionRowBuilder.d.ts +14 -0
- package/dist/esm/builders/components/ActionRowBuilder.js +49 -0
- package/dist/esm/builders/components/ButtonBuilder.d.ts +19 -0
- package/dist/esm/builders/components/ButtonBuilder.js +65 -0
- package/dist/esm/builders/components/LayoutBuilders.d.ts +63 -0
- package/dist/esm/builders/components/LayoutBuilders.js +169 -0
- package/dist/esm/builders/components/ModalBuilder.d.ts +36 -0
- package/dist/esm/builders/components/ModalBuilder.js +113 -0
- package/dist/esm/builders/components/SelectMenuBuilder.d.ts +80 -0
- package/dist/esm/builders/components/SelectMenuBuilder.js +183 -0
- package/dist/esm/builders/components/shared.d.ts +16 -0
- package/dist/esm/builders/components/shared.js +26 -0
- package/dist/esm/builders/messagePayload.d.ts +35 -0
- package/dist/esm/builders/messagePayload.js +83 -0
- package/dist/esm/builders/validate.d.ts +12 -0
- package/dist/esm/builders/validate.js +46 -0
- package/dist/esm/client/Client.d.ts +63 -0
- package/dist/esm/client/Client.js +147 -0
- package/dist/esm/client/dispatch.d.ts +2 -0
- package/dist/esm/client/dispatch.js +221 -0
- package/dist/esm/client/events.d.ts +129 -0
- package/dist/esm/client/events.js +1 -0
- package/dist/esm/collectors/Collector.d.ts +37 -0
- package/dist/esm/collectors/Collector.js +78 -0
- package/dist/esm/collectors/InteractionCollector.d.ts +21 -0
- package/dist/esm/collectors/InteractionCollector.js +40 -0
- package/dist/esm/collectors/MessageCollector.d.ts +14 -0
- package/dist/esm/collectors/MessageCollector.js +19 -0
- package/dist/esm/errors/BaffError.d.ts +26 -0
- package/dist/esm/errors/BaffError.js +33 -0
- package/dist/esm/gateway/Gateway.d.ts +53 -0
- package/dist/esm/gateway/Gateway.js +124 -0
- package/dist/esm/http/handler.d.ts +11 -0
- package/dist/esm/http/handler.js +68 -0
- package/dist/esm/http/verify.d.ts +11 -0
- package/dist/esm/http/verify.js +22 -0
- package/dist/esm/index.d.ts +51 -0
- package/dist/esm/index.js +49 -0
- package/dist/esm/managers/CachedManager.d.ts +16 -0
- package/dist/esm/managers/CachedManager.js +14 -0
- package/dist/esm/managers/ChannelManager.d.ts +23 -0
- package/dist/esm/managers/ChannelManager.js +81 -0
- package/dist/esm/managers/CommandManager.d.ts +32 -0
- package/dist/esm/managers/CommandManager.js +67 -0
- package/dist/esm/managers/EventManager.d.ts +15 -0
- package/dist/esm/managers/EventManager.js +32 -0
- package/dist/esm/managers/ExpressionManagers.d.ts +36 -0
- package/dist/esm/managers/ExpressionManagers.js +68 -0
- package/dist/esm/managers/InviteManager.d.ts +17 -0
- package/dist/esm/managers/InviteManager.js +22 -0
- package/dist/esm/managers/MemberManager.d.ts +31 -0
- package/dist/esm/managers/MemberManager.js +58 -0
- package/dist/esm/managers/MessageManager.d.ts +32 -0
- package/dist/esm/managers/MessageManager.js +75 -0
- package/dist/esm/managers/RoleManager.d.ts +22 -0
- package/dist/esm/managers/RoleManager.js +69 -0
- package/dist/esm/managers/ServerChannelManager.d.ts +20 -0
- package/dist/esm/managers/ServerChannelManager.js +26 -0
- package/dist/esm/managers/ServerManager.d.ts +12 -0
- package/dist/esm/managers/ServerManager.js +58 -0
- package/dist/esm/managers/ThreadManager.d.ts +12 -0
- package/dist/esm/managers/ThreadManager.js +16 -0
- package/dist/esm/managers/UserManager.d.ts +11 -0
- package/dist/esm/managers/UserManager.js +34 -0
- package/dist/esm/managers/VoiceManager.d.ts +8 -0
- package/dist/esm/managers/VoiceManager.js +13 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/rest/REST.d.ts +58 -0
- package/dist/esm/rest/REST.js +188 -0
- package/dist/esm/rest/Routes.d.ts +54 -0
- package/dist/esm/rest/Routes.js +55 -0
- package/dist/esm/rest/files.d.ts +19 -0
- package/dist/esm/rest/files.js +31 -0
- package/dist/esm/structures/Base.d.ts +13 -0
- package/dist/esm/structures/Base.js +25 -0
- package/dist/esm/structures/Message.d.ts +91 -0
- package/dist/esm/structures/Message.js +194 -0
- package/dist/esm/structures/Role.d.ts +34 -0
- package/dist/esm/structures/Role.js +79 -0
- package/dist/esm/structures/ScheduledEvent.d.ts +37 -0
- package/dist/esm/structures/ScheduledEvent.js +68 -0
- package/dist/esm/structures/Server.d.ts +68 -0
- package/dist/esm/structures/Server.js +120 -0
- package/dist/esm/structures/ServerAssets.d.ts +48 -0
- package/dist/esm/structures/ServerAssets.js +98 -0
- package/dist/esm/structures/ServerMember.d.ts +47 -0
- package/dist/esm/structures/ServerMember.js +133 -0
- package/dist/esm/structures/User.d.ts +35 -0
- package/dist/esm/structures/User.js +82 -0
- package/dist/esm/structures/Webhook.d.ts +30 -0
- package/dist/esm/structures/Webhook.js +63 -0
- package/dist/esm/structures/channels/BaseChannel.d.ts +49 -0
- package/dist/esm/structures/channels/BaseChannel.js +77 -0
- package/dist/esm/structures/channels/DMChannel.d.ts +9 -0
- package/dist/esm/structures/channels/DMChannel.js +17 -0
- package/dist/esm/structures/channels/ServerChannels.d.ts +57 -0
- package/dist/esm/structures/channels/ServerChannels.js +129 -0
- package/dist/esm/structures/channels/TextBasedChannel.d.ts +25 -0
- package/dist/esm/structures/channels/TextBasedChannel.js +49 -0
- package/dist/esm/structures/interactions/BaseInteraction.d.ts +74 -0
- package/dist/esm/structures/interactions/BaseInteraction.js +217 -0
- package/dist/esm/structures/interactions/CommandInteraction.d.ts +44 -0
- package/dist/esm/structures/interactions/CommandInteraction.js +104 -0
- package/dist/esm/structures/interactions/ComponentInteraction.d.ts +44 -0
- package/dist/esm/structures/interactions/ComponentInteraction.js +53 -0
- package/dist/esm/structures/interactions/ModalSubmitInteraction.d.ts +29 -0
- package/dist/esm/structures/interactions/ModalSubmitInteraction.js +37 -0
- package/dist/esm/structures/interactions/createInteraction.d.ts +4 -0
- package/dist/esm/structures/interactions/createInteraction.js +31 -0
- package/dist/esm/types.d.ts +369 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/util/Collection.d.ts +32 -0
- package/dist/esm/util/Collection.js +141 -0
- package/dist/esm/util/Permissions.d.ts +87 -0
- package/dist/esm/util/Permissions.js +111 -0
- package/dist/esm/util/Snowflake.d.ts +20 -0
- package/dist/esm/util/Snowflake.js +37 -0
- package/dist/esm/util/TypedEmitter.d.ts +17 -0
- package/dist/esm/util/TypedEmitter.js +2 -0
- package/dist/esm/util/constants.d.ts +78 -0
- package/dist/esm/util/constants.js +78 -0
- package/dist/esm/util/emoji.d.ts +8 -0
- package/dist/esm/util/emoji.js +7 -0
- package/dist/esm/util/formatters.d.ts +29 -0
- package/dist/esm/util/formatters.js +34 -0
- package/package.json +57 -5
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Invite = exports.Sticker = exports.Emoji = void 0;
|
|
4
|
+
const BaffError_js_1 = require("../errors/BaffError.js");
|
|
5
|
+
const Routes_js_1 = require("../rest/Routes.js");
|
|
6
|
+
const formatters_js_1 = require("../util/formatters.js");
|
|
7
|
+
const Base_js_1 = require("./Base.js");
|
|
8
|
+
class Emoji extends Base_js_1.Identified {
|
|
9
|
+
id;
|
|
10
|
+
serverId;
|
|
11
|
+
name;
|
|
12
|
+
animated;
|
|
13
|
+
url;
|
|
14
|
+
uploader;
|
|
15
|
+
constructor(client, data) {
|
|
16
|
+
super(client);
|
|
17
|
+
this.id = data.id;
|
|
18
|
+
this.serverId = data.serverId;
|
|
19
|
+
this.name = data.name;
|
|
20
|
+
this.animated = data.animated;
|
|
21
|
+
this.url = data.url;
|
|
22
|
+
this.uploader = data.uploader ?? null;
|
|
23
|
+
}
|
|
24
|
+
get identifier() {
|
|
25
|
+
return `${this.animated ? 'a:' : ''}${this.name}:${this.id}`;
|
|
26
|
+
}
|
|
27
|
+
async setName(name) {
|
|
28
|
+
const data = await this.client.rest.patch(Routes_js_1.Routes.serverEmoji(this.serverId, this.id), { body: { name } });
|
|
29
|
+
this.name = data.name;
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
32
|
+
delete() {
|
|
33
|
+
return this.client.rest.delete(Routes_js_1.Routes.serverEmoji(this.serverId, this.id));
|
|
34
|
+
}
|
|
35
|
+
toString() {
|
|
36
|
+
return (0, formatters_js_1.formatEmoji)(this.id, this.name, this.animated);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.Emoji = Emoji;
|
|
40
|
+
class Sticker extends Base_js_1.Identified {
|
|
41
|
+
id;
|
|
42
|
+
serverId;
|
|
43
|
+
name;
|
|
44
|
+
description;
|
|
45
|
+
emoji;
|
|
46
|
+
animated;
|
|
47
|
+
url;
|
|
48
|
+
constructor(client, data, serverId) {
|
|
49
|
+
super(client);
|
|
50
|
+
this.id = data.id;
|
|
51
|
+
this.serverId = data.serverId ?? serverId ?? null;
|
|
52
|
+
this.name = data.name;
|
|
53
|
+
this.description = data.description ?? '';
|
|
54
|
+
this.emoji = data.emoji ?? null;
|
|
55
|
+
this.animated = data.animated;
|
|
56
|
+
this.url = data.url ?? null;
|
|
57
|
+
}
|
|
58
|
+
async edit(data) {
|
|
59
|
+
const updated = await this.client.rest.patch(Routes_js_1.Routes.serverSticker(this.serverId, this.id), { body: data });
|
|
60
|
+
Object.assign(this, { name: updated.name, description: updated.description ?? this.description, emoji: updated.emoji ?? null });
|
|
61
|
+
return this;
|
|
62
|
+
}
|
|
63
|
+
delete() {
|
|
64
|
+
return this.client.rest.delete(Routes_js_1.Routes.serverSticker(this.serverId, this.id));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.Sticker = Sticker;
|
|
68
|
+
class Invite extends Base_js_1.Base {
|
|
69
|
+
serverId;
|
|
70
|
+
code;
|
|
71
|
+
maxAgeSecs;
|
|
72
|
+
maxUses;
|
|
73
|
+
uses;
|
|
74
|
+
temporary;
|
|
75
|
+
expiresAt;
|
|
76
|
+
inviterId;
|
|
77
|
+
vanity;
|
|
78
|
+
server;
|
|
79
|
+
constructor(client, data, serverId = data.server?.id ?? null) {
|
|
80
|
+
super(client);
|
|
81
|
+
this.serverId = serverId;
|
|
82
|
+
this.code = data.code;
|
|
83
|
+
this.maxAgeSecs = data.maxAgeSecs ?? null;
|
|
84
|
+
this.maxUses = data.maxUses ?? null;
|
|
85
|
+
this.uses = data.uses ?? 0;
|
|
86
|
+
this.temporary = data.temporary ?? false;
|
|
87
|
+
this.expiresAt = data.expiresAt ? new Date(data.expiresAt) : null;
|
|
88
|
+
this.inviterId = data.inviter?.id ?? null;
|
|
89
|
+
this.vanity = data.vanity ?? false;
|
|
90
|
+
this.server = data.server;
|
|
91
|
+
}
|
|
92
|
+
get url() {
|
|
93
|
+
return `${this.client.appUrl}/invite/${this.code}`;
|
|
94
|
+
}
|
|
95
|
+
async delete() {
|
|
96
|
+
if (!this.serverId)
|
|
97
|
+
throw new BaffError_js_1.BaffError('INVITE_HAS_NO_SERVER', 'This invite has no server to delete it from.');
|
|
98
|
+
await this.client.rest.delete(Routes_js_1.Routes.serverInvite(this.serverId, this.code));
|
|
99
|
+
}
|
|
100
|
+
toString() {
|
|
101
|
+
return this.url;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
exports.Invite = Invite;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { Client } from '../client/Client.js';
|
|
2
|
+
import type { MessageOptions } from '../builders/messagePayload.js';
|
|
3
|
+
import type { APIMember } from '../types.js';
|
|
4
|
+
import { Collection } from '../util/Collection.js';
|
|
5
|
+
import { PermissionsBitField } from '../util/Permissions.js';
|
|
6
|
+
import { Base } from './Base.js';
|
|
7
|
+
import type { Message } from './Message.js';
|
|
8
|
+
import type { Role } from './Role.js';
|
|
9
|
+
import type { Server } from './Server.js';
|
|
10
|
+
import type { User } from './User.js';
|
|
11
|
+
export declare class MemberRoleManager {
|
|
12
|
+
private readonly member;
|
|
13
|
+
constructor(member: ServerMember);
|
|
14
|
+
get cache(): Collection<string, Role>;
|
|
15
|
+
get highest(): Role | undefined;
|
|
16
|
+
add(role: string | Role): Promise<ServerMember>;
|
|
17
|
+
remove(role: string | Role): Promise<ServerMember>;
|
|
18
|
+
}
|
|
19
|
+
export declare class ServerMember extends Base {
|
|
20
|
+
readonly serverId: string;
|
|
21
|
+
readonly user: User;
|
|
22
|
+
roleIds: string[];
|
|
23
|
+
nick: string | null;
|
|
24
|
+
avatarUrl: string | null;
|
|
25
|
+
bannerUrl: string | null;
|
|
26
|
+
joinedAt: Date | null;
|
|
27
|
+
pending: boolean;
|
|
28
|
+
timeoutUntil: Date | null;
|
|
29
|
+
readonly roles: MemberRoleManager;
|
|
30
|
+
constructor(client: Client, serverId: string, user: User, data: Partial<APIMember>);
|
|
31
|
+
_clone(): this;
|
|
32
|
+
_patch(data: Partial<APIMember>): this;
|
|
33
|
+
get id(): string;
|
|
34
|
+
get server(): Server | null;
|
|
35
|
+
get displayName(): string;
|
|
36
|
+
get isOwner(): boolean;
|
|
37
|
+
get timedOut(): boolean;
|
|
38
|
+
get permissions(): PermissionsBitField;
|
|
39
|
+
kick(reason?: string): Promise<void>;
|
|
40
|
+
ban(options?: {
|
|
41
|
+
reason?: string;
|
|
42
|
+
}): Promise<void>;
|
|
43
|
+
timeout(durationMs: number | null, reason?: string): Promise<ServerMember>;
|
|
44
|
+
setNickname(nick: string | null): Promise<ServerMember>;
|
|
45
|
+
send(options: string | MessageOptions): Promise<Message>;
|
|
46
|
+
toString(): string;
|
|
47
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ServerMember = exports.MemberRoleManager = void 0;
|
|
4
|
+
const Routes_js_1 = require("../rest/Routes.js");
|
|
5
|
+
const Collection_js_1 = require("../util/Collection.js");
|
|
6
|
+
const Permissions_js_1 = require("../util/Permissions.js");
|
|
7
|
+
const formatters_js_1 = require("../util/formatters.js");
|
|
8
|
+
const Base_js_1 = require("./Base.js");
|
|
9
|
+
class MemberRoleManager {
|
|
10
|
+
member;
|
|
11
|
+
constructor(member) {
|
|
12
|
+
this.member = member;
|
|
13
|
+
}
|
|
14
|
+
get cache() {
|
|
15
|
+
const roles = this.member.server?.roles.cache;
|
|
16
|
+
const out = new Collection_js_1.Collection();
|
|
17
|
+
if (!roles)
|
|
18
|
+
return out;
|
|
19
|
+
for (const id of [this.member.server.id, ...this.member.roleIds]) {
|
|
20
|
+
const role = roles.get(id);
|
|
21
|
+
if (role)
|
|
22
|
+
out.set(id, role);
|
|
23
|
+
}
|
|
24
|
+
return out;
|
|
25
|
+
}
|
|
26
|
+
get highest() {
|
|
27
|
+
return this.cache.sort((a, b) => b.position - a.position).first();
|
|
28
|
+
}
|
|
29
|
+
async add(role) {
|
|
30
|
+
const id = typeof role === 'string' ? role : role.id;
|
|
31
|
+
await this.member.client.rest.put(Routes_js_1.Routes.memberRole(this.member.serverId, this.member.id, id));
|
|
32
|
+
if (!this.member.roleIds.includes(id))
|
|
33
|
+
this.member.roleIds.push(id);
|
|
34
|
+
return this.member;
|
|
35
|
+
}
|
|
36
|
+
async remove(role) {
|
|
37
|
+
const id = typeof role === 'string' ? role : role.id;
|
|
38
|
+
await this.member.client.rest.delete(Routes_js_1.Routes.memberRole(this.member.serverId, this.member.id, id));
|
|
39
|
+
this.member.roleIds = this.member.roleIds.filter((r) => r !== id);
|
|
40
|
+
return this.member;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.MemberRoleManager = MemberRoleManager;
|
|
44
|
+
class ServerMember extends Base_js_1.Base {
|
|
45
|
+
serverId;
|
|
46
|
+
user;
|
|
47
|
+
roleIds = [];
|
|
48
|
+
nick = null;
|
|
49
|
+
avatarUrl = null;
|
|
50
|
+
bannerUrl = null;
|
|
51
|
+
joinedAt = null;
|
|
52
|
+
pending = false;
|
|
53
|
+
timeoutUntil = null;
|
|
54
|
+
roles = new MemberRoleManager(this);
|
|
55
|
+
constructor(client, serverId, user, data) {
|
|
56
|
+
super(client);
|
|
57
|
+
this.serverId = serverId;
|
|
58
|
+
this.user = user;
|
|
59
|
+
this._patch(data);
|
|
60
|
+
}
|
|
61
|
+
_clone() {
|
|
62
|
+
const copy = super._clone();
|
|
63
|
+
copy.roles = new MemberRoleManager(copy);
|
|
64
|
+
copy.roleIds = [...this.roleIds];
|
|
65
|
+
return copy;
|
|
66
|
+
}
|
|
67
|
+
_patch(data) {
|
|
68
|
+
if (data.roles !== undefined)
|
|
69
|
+
this.roleIds = [...data.roles];
|
|
70
|
+
if (data.nick !== undefined)
|
|
71
|
+
this.nick = data.nick;
|
|
72
|
+
if (data.avatarUrl !== undefined)
|
|
73
|
+
this.avatarUrl = data.avatarUrl ?? null;
|
|
74
|
+
if (data.bannerUrl !== undefined)
|
|
75
|
+
this.bannerUrl = data.bannerUrl ?? null;
|
|
76
|
+
if (data.joinedAt !== undefined)
|
|
77
|
+
this.joinedAt = new Date(data.joinedAt);
|
|
78
|
+
if (data.pending !== undefined)
|
|
79
|
+
this.pending = data.pending;
|
|
80
|
+
if (data.timeoutUntil !== undefined)
|
|
81
|
+
this.timeoutUntil = data.timeoutUntil ? new Date(data.timeoutUntil) : null;
|
|
82
|
+
return this;
|
|
83
|
+
}
|
|
84
|
+
get id() {
|
|
85
|
+
return this.user.id;
|
|
86
|
+
}
|
|
87
|
+
get server() {
|
|
88
|
+
return this.client.servers.cache.get(this.serverId) ?? null;
|
|
89
|
+
}
|
|
90
|
+
get displayName() {
|
|
91
|
+
return this.nick ?? this.user.displayName;
|
|
92
|
+
}
|
|
93
|
+
get isOwner() {
|
|
94
|
+
return this.server?.ownerId === this.id;
|
|
95
|
+
}
|
|
96
|
+
get timedOut() {
|
|
97
|
+
return this.timeoutUntil !== null && this.timeoutUntil.getTime() > Date.now();
|
|
98
|
+
}
|
|
99
|
+
get permissions() {
|
|
100
|
+
if (this.isOwner)
|
|
101
|
+
return Permissions_js_1.PermissionsBitField.All;
|
|
102
|
+
const bits = this.roles.cache.reduce((acc, role) => acc | role.permissions.bitfield, 0n);
|
|
103
|
+
const all = new Permissions_js_1.PermissionsBitField(bits);
|
|
104
|
+
if (all.has(Permissions_js_1.PermissionFlagsBits.Administrator, false))
|
|
105
|
+
return Permissions_js_1.PermissionsBitField.All;
|
|
106
|
+
return this.timedOut ? new Permissions_js_1.PermissionsBitField(Permissions_js_1.PermissionFlagsBits.ViewChannel) : all;
|
|
107
|
+
}
|
|
108
|
+
kick(reason) {
|
|
109
|
+
return this.client.rest.delete(Routes_js_1.Routes.serverMember(this.serverId, this.id), { body: reason ? { reason } : undefined });
|
|
110
|
+
}
|
|
111
|
+
ban(options = {}) {
|
|
112
|
+
return this.client.rest.put(Routes_js_1.Routes.serverBan(this.serverId, this.id), { body: options });
|
|
113
|
+
}
|
|
114
|
+
async timeout(durationMs, reason) {
|
|
115
|
+
if (durationMs === null) {
|
|
116
|
+
await this.client.rest.delete(Routes_js_1.Routes.memberTimeout(this.serverId, this.id));
|
|
117
|
+
this.timeoutUntil = null;
|
|
118
|
+
return this;
|
|
119
|
+
}
|
|
120
|
+
const res = await this.client.rest.put(Routes_js_1.Routes.memberTimeout(this.serverId, this.id), {
|
|
121
|
+
body: { durationSecs: Math.round(durationMs / 1000), reason }
|
|
122
|
+
});
|
|
123
|
+
this.timeoutUntil = new Date(res.timeoutUntil);
|
|
124
|
+
return this;
|
|
125
|
+
}
|
|
126
|
+
async setNickname(nick) {
|
|
127
|
+
await this.client.rest.patch(Routes_js_1.Routes.serverMember(this.serverId, this.id), { body: { nick } });
|
|
128
|
+
this.nick = nick || null;
|
|
129
|
+
return this;
|
|
130
|
+
}
|
|
131
|
+
send(options) {
|
|
132
|
+
return this.user.send(options);
|
|
133
|
+
}
|
|
134
|
+
toString() {
|
|
135
|
+
return (0, formatters_js_1.userMention)(this.id);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
exports.ServerMember = ServerMember;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Client } from '../client/Client.js';
|
|
2
|
+
import type { MessageOptions } from '../builders/messagePayload.js';
|
|
3
|
+
import type { APIUser } from '../types.js';
|
|
4
|
+
import { Identified } from './Base.js';
|
|
5
|
+
import type { DMChannel } from './channels/DMChannel.js';
|
|
6
|
+
import type { Message } from './Message.js';
|
|
7
|
+
export declare class User extends Identified {
|
|
8
|
+
readonly id: string;
|
|
9
|
+
username: string;
|
|
10
|
+
displayName: string;
|
|
11
|
+
avatarUrl: string | null;
|
|
12
|
+
bannerUrl: string | null;
|
|
13
|
+
tag: APIUser['tag'];
|
|
14
|
+
clanTag: APIUser['clanTag'];
|
|
15
|
+
status: string | null;
|
|
16
|
+
customStatus: string | null;
|
|
17
|
+
deleted: boolean;
|
|
18
|
+
constructor(client: Client, data: APIUser);
|
|
19
|
+
_patch(data: Partial<APIUser>): this;
|
|
20
|
+
get bot(): boolean;
|
|
21
|
+
get system(): boolean;
|
|
22
|
+
createDM(): Promise<DMChannel>;
|
|
23
|
+
send(options: string | MessageOptions): Promise<Message>;
|
|
24
|
+
fetchProfile(serverId?: string): Promise<Record<string, unknown>>;
|
|
25
|
+
toString(): string;
|
|
26
|
+
}
|
|
27
|
+
export declare class ClientUser extends User {
|
|
28
|
+
get bot(): boolean;
|
|
29
|
+
setPresence(presence: {
|
|
30
|
+
status?: 'online' | 'idle' | 'dnd' | 'invisible';
|
|
31
|
+
customStatus?: string | null;
|
|
32
|
+
}): Promise<void>;
|
|
33
|
+
setStatus(status: 'online' | 'idle' | 'dnd' | 'invisible'): Promise<void>;
|
|
34
|
+
setCustomStatus(customStatus: string | null): Promise<void>;
|
|
35
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ClientUser = exports.User = void 0;
|
|
4
|
+
const Routes_js_1 = require("../rest/Routes.js");
|
|
5
|
+
const formatters_js_1 = require("../util/formatters.js");
|
|
6
|
+
const Base_js_1 = require("./Base.js");
|
|
7
|
+
class User extends Base_js_1.Identified {
|
|
8
|
+
id;
|
|
9
|
+
username;
|
|
10
|
+
displayName;
|
|
11
|
+
avatarUrl = null;
|
|
12
|
+
bannerUrl = null;
|
|
13
|
+
tag = null;
|
|
14
|
+
clanTag = null;
|
|
15
|
+
status = null;
|
|
16
|
+
customStatus = null;
|
|
17
|
+
deleted = false;
|
|
18
|
+
constructor(client, data) {
|
|
19
|
+
super(client);
|
|
20
|
+
this.id = data.id;
|
|
21
|
+
this.username = data.username;
|
|
22
|
+
this.displayName = data.displayName || data.username;
|
|
23
|
+
this._patch(data);
|
|
24
|
+
}
|
|
25
|
+
_patch(data) {
|
|
26
|
+
if (data.username !== undefined)
|
|
27
|
+
this.username = data.username;
|
|
28
|
+
if (data.displayName !== undefined)
|
|
29
|
+
this.displayName = data.displayName || this.username;
|
|
30
|
+
if (data.avatarUrl !== undefined)
|
|
31
|
+
this.avatarUrl = data.avatarUrl;
|
|
32
|
+
if (data.bannerUrl !== undefined)
|
|
33
|
+
this.bannerUrl = data.bannerUrl;
|
|
34
|
+
if (data.tag !== undefined)
|
|
35
|
+
this.tag = data.tag;
|
|
36
|
+
if (data.clanTag !== undefined)
|
|
37
|
+
this.clanTag = data.clanTag;
|
|
38
|
+
if (data.status !== undefined)
|
|
39
|
+
this.status = data.status;
|
|
40
|
+
if (data.customStatus !== undefined)
|
|
41
|
+
this.customStatus = data.customStatus;
|
|
42
|
+
if (data.deleted !== undefined)
|
|
43
|
+
this.deleted = data.deleted;
|
|
44
|
+
return this;
|
|
45
|
+
}
|
|
46
|
+
get bot() {
|
|
47
|
+
return this.tag === 'bot' || this.tag === 'verified_bot';
|
|
48
|
+
}
|
|
49
|
+
get system() {
|
|
50
|
+
return this.tag === 'system';
|
|
51
|
+
}
|
|
52
|
+
async createDM() {
|
|
53
|
+
const data = await this.client.rest.post(Routes_js_1.Routes.dms(), { body: { recipientId: this.id } });
|
|
54
|
+
return this.client.channels._addDM(data);
|
|
55
|
+
}
|
|
56
|
+
async send(options) {
|
|
57
|
+
return (await this.createDM()).send(options);
|
|
58
|
+
}
|
|
59
|
+
async fetchProfile(serverId) {
|
|
60
|
+
const profile = await this.client.rest.get(Routes_js_1.Routes.userProfile(this.id), { query: { serverId } });
|
|
61
|
+
this._patch(profile.user);
|
|
62
|
+
return profile;
|
|
63
|
+
}
|
|
64
|
+
toString() {
|
|
65
|
+
return (0, formatters_js_1.userMention)(this.id);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.User = User;
|
|
69
|
+
class ClientUser extends User {
|
|
70
|
+
get bot() {
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
async setPresence(presence) {
|
|
74
|
+
await this.client.rest.patch(Routes_js_1.Routes.presence(), { body: presence });
|
|
75
|
+
if (presence.status)
|
|
76
|
+
this.status = presence.status;
|
|
77
|
+
if (presence.customStatus !== undefined)
|
|
78
|
+
this.customStatus = presence.customStatus;
|
|
79
|
+
}
|
|
80
|
+
setStatus(status) {
|
|
81
|
+
return this.setPresence({ status });
|
|
82
|
+
}
|
|
83
|
+
setCustomStatus(customStatus) {
|
|
84
|
+
return this.setPresence({ customStatus });
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.ClientUser = ClientUser;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Client } from '../client/Client.js';
|
|
2
|
+
import { type MessageOptions } from '../builders/messagePayload.js';
|
|
3
|
+
import { type RESTOptions } from '../rest/REST.js';
|
|
4
|
+
import type { APIWebhook } from '../types.js';
|
|
5
|
+
import { Identified } from './Base.js';
|
|
6
|
+
export type WebhookMessageOptions = Pick<MessageOptions, 'content' | 'embeds' | 'components' | 'flags'>;
|
|
7
|
+
export declare class Webhook extends Identified {
|
|
8
|
+
readonly channelId: string;
|
|
9
|
+
readonly id: string;
|
|
10
|
+
readonly userId: string;
|
|
11
|
+
readonly token: string;
|
|
12
|
+
readonly path: string;
|
|
13
|
+
name: string;
|
|
14
|
+
constructor(client: Client, data: APIWebhook, channelId: string);
|
|
15
|
+
get url(): string;
|
|
16
|
+
send(options: string | WebhookMessageOptions): Promise<void>;
|
|
17
|
+
edit(name: string): Promise<Webhook>;
|
|
18
|
+
delete(): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
export declare class WebhookClient {
|
|
21
|
+
readonly id: string;
|
|
22
|
+
readonly token: string;
|
|
23
|
+
private readonly rest;
|
|
24
|
+
constructor(target: string | {
|
|
25
|
+
id: string;
|
|
26
|
+
token: string;
|
|
27
|
+
api?: string;
|
|
28
|
+
}, options?: Omit<RESTOptions, 'token' | 'api'>);
|
|
29
|
+
send(options: string | WebhookMessageOptions): Promise<void>;
|
|
30
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WebhookClient = exports.Webhook = void 0;
|
|
4
|
+
const messagePayload_js_1 = require("../builders/messagePayload.js");
|
|
5
|
+
const BaffError_js_1 = require("../errors/BaffError.js");
|
|
6
|
+
const REST_js_1 = require("../rest/REST.js");
|
|
7
|
+
const Routes_js_1 = require("../rest/Routes.js");
|
|
8
|
+
const Base_js_1 = require("./Base.js");
|
|
9
|
+
class Webhook extends Base_js_1.Identified {
|
|
10
|
+
channelId;
|
|
11
|
+
id;
|
|
12
|
+
userId;
|
|
13
|
+
token;
|
|
14
|
+
path;
|
|
15
|
+
name;
|
|
16
|
+
constructor(client, data, channelId) {
|
|
17
|
+
super(client);
|
|
18
|
+
this.channelId = channelId;
|
|
19
|
+
this.id = data.id;
|
|
20
|
+
this.userId = data.userId;
|
|
21
|
+
this.name = data.name;
|
|
22
|
+
this.path = data.path;
|
|
23
|
+
this.token = data.path.split('/').filter(Boolean).at(-1) ?? '';
|
|
24
|
+
}
|
|
25
|
+
get url() {
|
|
26
|
+
return `${this.client.appUrl}${this.path}`;
|
|
27
|
+
}
|
|
28
|
+
async send(options) {
|
|
29
|
+
await send(this.client.rest, this.id, this.token, options);
|
|
30
|
+
}
|
|
31
|
+
async edit(name) {
|
|
32
|
+
await this.client.rest.patch(Routes_js_1.Routes.webhook(this.id), { body: { name } });
|
|
33
|
+
this.name = name;
|
|
34
|
+
return this;
|
|
35
|
+
}
|
|
36
|
+
delete() {
|
|
37
|
+
return this.client.rest.delete(Routes_js_1.Routes.webhook(this.id));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.Webhook = Webhook;
|
|
41
|
+
async function send(rest, id, token, options) {
|
|
42
|
+
const { body } = (0, messagePayload_js_1.resolveMessage)(options);
|
|
43
|
+
await rest.post(Routes_js_1.Routes.webhookExecute(id, token), { body, auth: false });
|
|
44
|
+
}
|
|
45
|
+
class WebhookClient {
|
|
46
|
+
id;
|
|
47
|
+
token;
|
|
48
|
+
rest;
|
|
49
|
+
constructor(target, options = {}) {
|
|
50
|
+
let api;
|
|
51
|
+
if (typeof target === 'string') {
|
|
52
|
+
const match = /^(https?:\/\/.+?)\/api\/webhooks\/(\d+)\/([^/?#]+)/.exec(target);
|
|
53
|
+
if (!match)
|
|
54
|
+
throw new BaffError_js_1.BaffError('INVALID_WEBHOOK_URL', 'Expected a URL like https://baff.gg/api/webhooks/<id>/<token>.');
|
|
55
|
+
api = `${match[1]}/api`;
|
|
56
|
+
this.id = match[2];
|
|
57
|
+
this.token = match[3];
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
({ id: this.id, token: this.token, api } = target);
|
|
61
|
+
}
|
|
62
|
+
this.rest = new REST_js_1.REST({ ...options, api });
|
|
63
|
+
}
|
|
64
|
+
send(options) {
|
|
65
|
+
return send(this.rest, this.id, this.token, options);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.WebhookClient = WebhookClient;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { Client } from '../../client/Client.js';
|
|
2
|
+
import type { APIChannel, ChannelKind } from '../../types.js';
|
|
3
|
+
import { Identified } from '../Base.js';
|
|
4
|
+
import type { Server } from '../Server.js';
|
|
5
|
+
import type { CategoryChannel, ForumChannel, ServerChannel, ThreadChannel, VoiceChannel } from './ServerChannels.js';
|
|
6
|
+
import type { DMChannel } from './DMChannel.js';
|
|
7
|
+
import type { TextBasedChannel } from './TextBasedChannel.js';
|
|
8
|
+
export interface ChannelEditData {
|
|
9
|
+
name?: string;
|
|
10
|
+
topic?: string | null;
|
|
11
|
+
slowmodeSecs?: number;
|
|
12
|
+
contentMode?: 'default' | 'spoiler' | 'age_restricted';
|
|
13
|
+
parentId?: string | null;
|
|
14
|
+
kind?: 'text' | 'announcement';
|
|
15
|
+
autoArchiveMinutes?: number;
|
|
16
|
+
archived?: boolean;
|
|
17
|
+
locked?: boolean;
|
|
18
|
+
availableTags?: {
|
|
19
|
+
id?: string;
|
|
20
|
+
name: string;
|
|
21
|
+
emoji?: string | null;
|
|
22
|
+
}[];
|
|
23
|
+
requireTag?: boolean;
|
|
24
|
+
defaultSortOrder?: 'activity' | 'created';
|
|
25
|
+
}
|
|
26
|
+
export declare class BaseChannel extends Identified {
|
|
27
|
+
readonly id: string;
|
|
28
|
+
kind: ChannelKind;
|
|
29
|
+
name: string | null;
|
|
30
|
+
serverId: string | null;
|
|
31
|
+
parentId: string | null;
|
|
32
|
+
position: number;
|
|
33
|
+
constructor(client: Client, data: APIChannel);
|
|
34
|
+
_patch(data: Partial<APIChannel>): this;
|
|
35
|
+
get server(): Server | null;
|
|
36
|
+
get parent(): CategoryChannel | null;
|
|
37
|
+
get url(): string;
|
|
38
|
+
isTextBased(): this is TextBasedChannel;
|
|
39
|
+
isVoiceBased(): this is VoiceChannel;
|
|
40
|
+
isThread(): this is ThreadChannel;
|
|
41
|
+
isDM(): this is DMChannel;
|
|
42
|
+
isForum(): this is ForumChannel;
|
|
43
|
+
isCategory(): this is CategoryChannel;
|
|
44
|
+
inServer(): this is ServerChannel;
|
|
45
|
+
edit(data: ChannelEditData): Promise<this>;
|
|
46
|
+
setName(name: string): Promise<this>;
|
|
47
|
+
delete(): Promise<void>;
|
|
48
|
+
toString(): string;
|
|
49
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseChannel = void 0;
|
|
4
|
+
const Routes_js_1 = require("../../rest/Routes.js");
|
|
5
|
+
const formatters_js_1 = require("../../util/formatters.js");
|
|
6
|
+
const Base_js_1 = require("../Base.js");
|
|
7
|
+
class BaseChannel extends Base_js_1.Identified {
|
|
8
|
+
id;
|
|
9
|
+
kind;
|
|
10
|
+
name = null;
|
|
11
|
+
serverId = null;
|
|
12
|
+
parentId = null;
|
|
13
|
+
position = 0;
|
|
14
|
+
constructor(client, data) {
|
|
15
|
+
super(client);
|
|
16
|
+
this.id = data.id;
|
|
17
|
+
this.kind = (data.kind ?? data.type ?? 'text');
|
|
18
|
+
}
|
|
19
|
+
_patch(data) {
|
|
20
|
+
if (data.kind ?? data.type)
|
|
21
|
+
this.kind = (data.kind ?? data.type);
|
|
22
|
+
if (data.name !== undefined)
|
|
23
|
+
this.name = data.name;
|
|
24
|
+
if (data.serverId !== undefined)
|
|
25
|
+
this.serverId = data.serverId;
|
|
26
|
+
if (data.parentId !== undefined)
|
|
27
|
+
this.parentId = data.parentId;
|
|
28
|
+
if (data.position !== undefined)
|
|
29
|
+
this.position = data.position;
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
32
|
+
get server() {
|
|
33
|
+
return this.serverId ? (this.client.servers.cache.get(this.serverId) ?? null) : null;
|
|
34
|
+
}
|
|
35
|
+
get parent() {
|
|
36
|
+
const parent = this.parentId ? this.client.channels.cache.get(this.parentId) : undefined;
|
|
37
|
+
return parent?.isCategory() ? parent : null;
|
|
38
|
+
}
|
|
39
|
+
get url() {
|
|
40
|
+
const base = this.client.appUrl;
|
|
41
|
+
return this.serverId ? `${base}/channels/${this.serverId}/${this.id}` : `${base}/channels/@me/${this.id}`;
|
|
42
|
+
}
|
|
43
|
+
isTextBased() {
|
|
44
|
+
return ['text', 'announcement', 'stage', 'thread', 'dm', 'group_dm'].includes(this.kind);
|
|
45
|
+
}
|
|
46
|
+
isVoiceBased() {
|
|
47
|
+
return this.kind === 'voice';
|
|
48
|
+
}
|
|
49
|
+
isThread() {
|
|
50
|
+
return this.kind === 'thread';
|
|
51
|
+
}
|
|
52
|
+
isDM() {
|
|
53
|
+
return this.kind === 'dm' || this.kind === 'group_dm';
|
|
54
|
+
}
|
|
55
|
+
isForum() {
|
|
56
|
+
return this.kind === 'forum';
|
|
57
|
+
}
|
|
58
|
+
isCategory() {
|
|
59
|
+
return this.kind === 'category';
|
|
60
|
+
}
|
|
61
|
+
inServer() {
|
|
62
|
+
return this.serverId !== null;
|
|
63
|
+
}
|
|
64
|
+
async edit(data) {
|
|
65
|
+
const updated = await this.client.rest.patch(Routes_js_1.Routes.channel(this.id), { body: data });
|
|
66
|
+
if (updated && typeof updated === 'object' && updated.id === this.id)
|
|
67
|
+
this._patch(updated);
|
|
68
|
+
return this;
|
|
69
|
+
}
|
|
70
|
+
setName(name) {
|
|
71
|
+
return this.edit({ name });
|
|
72
|
+
}
|
|
73
|
+
async delete() {
|
|
74
|
+
await this.client.rest.delete(Routes_js_1.Routes.channel(this.id));
|
|
75
|
+
this.client.channels._remove(this.id);
|
|
76
|
+
}
|
|
77
|
+
toString() {
|
|
78
|
+
return (0, formatters_js_1.channelMention)(this.id);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.BaseChannel = BaseChannel;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { APIChannel } from '../../types.js';
|
|
2
|
+
import type { User } from '../User.js';
|
|
3
|
+
import { TextBasedChannel } from './TextBasedChannel.js';
|
|
4
|
+
export declare class DMChannel extends TextBasedChannel {
|
|
5
|
+
recipients: User[];
|
|
6
|
+
_patch(data: Partial<APIChannel>): this;
|
|
7
|
+
get recipient(): User | null;
|
|
8
|
+
get url(): string;
|
|
9
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DMChannel = void 0;
|
|
4
|
+
const TextBasedChannel_js_1 = require("./TextBasedChannel.js");
|
|
5
|
+
class DMChannel extends TextBasedChannel_js_1.TextBasedChannel {
|
|
6
|
+
recipients = [];
|
|
7
|
+
_patch(data) {
|
|
8
|
+
super._patch(data);
|
|
9
|
+
const people = data.recipients ?? (data.recipient ? [data.recipient] : undefined);
|
|
10
|
+
if (people)
|
|
11
|
+
this.recipients = people.map((p) => this.client.users._add(p));
|
|
12
|
+
return this;
|
|
13
|
+
}
|
|
14
|
+
get recipient() {
|
|
15
|
+
return this.recipients[0] ?? null;
|
|
16
|
+
}
|
|
17
|
+
get url() {
|
|
18
|
+
return `${this.client.appUrl}/channels/@me/${this.id}`;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.DMChannel = DMChannel;
|