baff.js 0.0.0-stage → 0.1.0
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 +20 -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 +45 -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 +113 -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 +41 -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 +109 -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 +58 -6
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { type WebSocketConstructor } from '../gateway/Gateway.js';
|
|
2
|
+
import { ApplicationCommandManager } from '../managers/CommandManager.js';
|
|
3
|
+
import { ChannelManager } from '../managers/ChannelManager.js';
|
|
4
|
+
import { ServerManager } from '../managers/ServerManager.js';
|
|
5
|
+
import { UserManager } from '../managers/UserManager.js';
|
|
6
|
+
import { VoiceManager } from '../managers/VoiceManager.js';
|
|
7
|
+
import { REST, type RESTOptions } from '../rest/REST.js';
|
|
8
|
+
import { Invite } from '../structures/ServerAssets.js';
|
|
9
|
+
import { ClientUser } from '../structures/User.js';
|
|
10
|
+
import { type PermissionResolvable } from '../util/Permissions.js';
|
|
11
|
+
import { TypedEmitter } from '../util/TypedEmitter.js';
|
|
12
|
+
import type { ClientEvents } from './events.js';
|
|
13
|
+
export interface ClientOptions {
|
|
14
|
+
token?: string;
|
|
15
|
+
applicationId?: string;
|
|
16
|
+
api?: string;
|
|
17
|
+
gateway?: string;
|
|
18
|
+
appUrl?: string;
|
|
19
|
+
WebSocket?: WebSocketConstructor;
|
|
20
|
+
fetch?: typeof fetch;
|
|
21
|
+
rest?: Omit<RESTOptions, 'token' | 'api' | 'fetch'>;
|
|
22
|
+
reconnect?: boolean;
|
|
23
|
+
initialBackoff?: number;
|
|
24
|
+
maxBackoff?: number;
|
|
25
|
+
messageCacheLimit?: number;
|
|
26
|
+
fetchServersOnReady?: boolean;
|
|
27
|
+
fetchMembersOnReady?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export declare class ClientApplication {
|
|
30
|
+
readonly id: string;
|
|
31
|
+
readonly commands: ApplicationCommandManager;
|
|
32
|
+
constructor(client: Client, id: string);
|
|
33
|
+
}
|
|
34
|
+
export declare class Client extends TypedEmitter<ClientEvents> {
|
|
35
|
+
readonly options: Required<Omit<ClientOptions, 'token' | 'applicationId' | 'WebSocket' | 'fetch' | 'rest' | 'appUrl'>> & Pick<ClientOptions, 'WebSocket'>;
|
|
36
|
+
readonly rest: REST;
|
|
37
|
+
readonly appUrl: string;
|
|
38
|
+
readonly users: UserManager;
|
|
39
|
+
readonly servers: ServerManager;
|
|
40
|
+
readonly channels: ChannelManager;
|
|
41
|
+
readonly voice: VoiceManager;
|
|
42
|
+
user: ClientUser | null;
|
|
43
|
+
application: ClientApplication | null;
|
|
44
|
+
readyAt: Date | null;
|
|
45
|
+
private gateway;
|
|
46
|
+
constructor(options?: ClientOptions);
|
|
47
|
+
get token(): string | null;
|
|
48
|
+
get applicationId(): string | null;
|
|
49
|
+
get uptime(): number | null;
|
|
50
|
+
isReady(): boolean;
|
|
51
|
+
setApplicationId(id: string): void;
|
|
52
|
+
requireApplication(): ClientApplication;
|
|
53
|
+
requireApplicationId(): string;
|
|
54
|
+
fetchSelf(): Promise<ClientUser>;
|
|
55
|
+
login(token?: string): Promise<string>;
|
|
56
|
+
destroy(): Promise<void>;
|
|
57
|
+
generateInvite(options?: {
|
|
58
|
+
permissions?: PermissionResolvable;
|
|
59
|
+
applicationId?: string;
|
|
60
|
+
}): string;
|
|
61
|
+
fetchInvite(code: string): Promise<Invite>;
|
|
62
|
+
private sync;
|
|
63
|
+
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Client = exports.ClientApplication = void 0;
|
|
4
|
+
const BaffError_js_1 = require("../errors/BaffError.js");
|
|
5
|
+
const Gateway_js_1 = require("../gateway/Gateway.js");
|
|
6
|
+
const CommandManager_js_1 = require("../managers/CommandManager.js");
|
|
7
|
+
const ChannelManager_js_1 = require("../managers/ChannelManager.js");
|
|
8
|
+
const ServerManager_js_1 = require("../managers/ServerManager.js");
|
|
9
|
+
const UserManager_js_1 = require("../managers/UserManager.js");
|
|
10
|
+
const VoiceManager_js_1 = require("../managers/VoiceManager.js");
|
|
11
|
+
const REST_js_1 = require("../rest/REST.js");
|
|
12
|
+
const Routes_js_1 = require("../rest/Routes.js");
|
|
13
|
+
const ServerAssets_js_1 = require("../structures/ServerAssets.js");
|
|
14
|
+
const User_js_1 = require("../structures/User.js");
|
|
15
|
+
const constants_js_1 = require("../util/constants.js");
|
|
16
|
+
const Permissions_js_1 = require("../util/Permissions.js");
|
|
17
|
+
const TypedEmitter_js_1 = require("../util/TypedEmitter.js");
|
|
18
|
+
const dispatch_js_1 = require("./dispatch.js");
|
|
19
|
+
class ClientApplication {
|
|
20
|
+
id;
|
|
21
|
+
commands;
|
|
22
|
+
constructor(client, id) {
|
|
23
|
+
this.id = id;
|
|
24
|
+
this.commands = new CommandManager_js_1.ApplicationCommandManager(client, () => id);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.ClientApplication = ClientApplication;
|
|
28
|
+
class Client extends TypedEmitter_js_1.TypedEmitter {
|
|
29
|
+
options;
|
|
30
|
+
rest;
|
|
31
|
+
appUrl;
|
|
32
|
+
users = new UserManager_js_1.UserManager(this);
|
|
33
|
+
servers = new ServerManager_js_1.ServerManager(this);
|
|
34
|
+
channels = new ChannelManager_js_1.ChannelManager(this);
|
|
35
|
+
voice = new VoiceManager_js_1.VoiceManager(this);
|
|
36
|
+
user = null;
|
|
37
|
+
application = null;
|
|
38
|
+
readyAt = null;
|
|
39
|
+
gateway = null;
|
|
40
|
+
constructor(options = {}) {
|
|
41
|
+
super({ captureRejections: true });
|
|
42
|
+
const api = (options.api ?? constants_js_1.DEFAULT_API_URL).replace(/\/+$/, '');
|
|
43
|
+
this.options = {
|
|
44
|
+
api,
|
|
45
|
+
gateway: options.gateway ?? constants_js_1.DEFAULT_GATEWAY_URL,
|
|
46
|
+
WebSocket: options.WebSocket,
|
|
47
|
+
reconnect: options.reconnect ?? true,
|
|
48
|
+
initialBackoff: options.initialBackoff ?? 1000,
|
|
49
|
+
maxBackoff: options.maxBackoff ?? 30_000,
|
|
50
|
+
messageCacheLimit: options.messageCacheLimit ?? 200,
|
|
51
|
+
fetchServersOnReady: options.fetchServersOnReady ?? true,
|
|
52
|
+
fetchMembersOnReady: options.fetchMembersOnReady ?? false
|
|
53
|
+
};
|
|
54
|
+
this.appUrl = (options.appUrl ?? api.replace(/\/api$/, '')).replace(/\/+$/, '');
|
|
55
|
+
this.rest = new REST_js_1.REST({ ...options.rest, api, token: options.token, fetch: options.fetch });
|
|
56
|
+
this.rest.on('rateLimited', (info) => this.emit('debug', `Rate limited on ${info.method} ${info.path}; waiting ${info.retryAfter}s.`));
|
|
57
|
+
if (options.applicationId)
|
|
58
|
+
this.setApplicationId(options.applicationId);
|
|
59
|
+
}
|
|
60
|
+
get token() {
|
|
61
|
+
return this.rest.token;
|
|
62
|
+
}
|
|
63
|
+
get applicationId() {
|
|
64
|
+
return this.application?.id ?? null;
|
|
65
|
+
}
|
|
66
|
+
get uptime() {
|
|
67
|
+
return this.readyAt ? Date.now() - this.readyAt.getTime() : null;
|
|
68
|
+
}
|
|
69
|
+
isReady() {
|
|
70
|
+
return this.readyAt !== null;
|
|
71
|
+
}
|
|
72
|
+
setApplicationId(id) {
|
|
73
|
+
if (this.application?.id !== id)
|
|
74
|
+
this.application = new ClientApplication(this, id);
|
|
75
|
+
}
|
|
76
|
+
requireApplication() {
|
|
77
|
+
if (!this.application) {
|
|
78
|
+
throw new BaffError_js_1.BaffError('NO_APPLICATION_ID', 'The application id is unknown. Pass applicationId to Client: baff.gg does not tell bots their application id.');
|
|
79
|
+
}
|
|
80
|
+
return this.application;
|
|
81
|
+
}
|
|
82
|
+
requireApplicationId() {
|
|
83
|
+
return this.requireApplication().id;
|
|
84
|
+
}
|
|
85
|
+
async fetchSelf() {
|
|
86
|
+
const data = await this.rest.get(Routes_js_1.Routes.me());
|
|
87
|
+
if (this.user)
|
|
88
|
+
this.user._patch(data);
|
|
89
|
+
else
|
|
90
|
+
this.user = new User_js_1.ClientUser(this, data);
|
|
91
|
+
this.users.cache.set(this.user.id, this.user);
|
|
92
|
+
return this.user;
|
|
93
|
+
}
|
|
94
|
+
async login(token) {
|
|
95
|
+
if (token)
|
|
96
|
+
this.rest.setToken(token);
|
|
97
|
+
if (!this.rest.token)
|
|
98
|
+
throw new BaffError_js_1.BaffError('NO_TOKEN', 'No token provided. Pass it to Client or login().');
|
|
99
|
+
await this.fetchSelf();
|
|
100
|
+
const gateway = new Gateway_js_1.Gateway({
|
|
101
|
+
token: this.rest.token,
|
|
102
|
+
url: this.options.gateway,
|
|
103
|
+
WebSocket: this.options.WebSocket,
|
|
104
|
+
reconnect: this.options.reconnect,
|
|
105
|
+
initialBackoff: this.options.initialBackoff,
|
|
106
|
+
maxBackoff: this.options.maxBackoff
|
|
107
|
+
});
|
|
108
|
+
this.gateway = gateway;
|
|
109
|
+
gateway.on('dispatch', (event, data) => (0, dispatch_js_1.dispatch)(this, event, data));
|
|
110
|
+
gateway.on('debug', (message) => this.emit('debug', message));
|
|
111
|
+
gateway.on('disconnect', (code, reason) => this.emit('disconnect', code, reason));
|
|
112
|
+
gateway.on('reconnecting', (attempt, delay) => this.emit('reconnecting', attempt, delay));
|
|
113
|
+
gateway.on('reconnected', () => {
|
|
114
|
+
this.sync().then(() => this.emit('reconnected', this), (error) => this.emit('debug', `Resync after reconnect failed: ${error.message}`));
|
|
115
|
+
});
|
|
116
|
+
try {
|
|
117
|
+
await gateway.connect();
|
|
118
|
+
await this.sync();
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
gateway.destroy();
|
|
122
|
+
this.gateway = null;
|
|
123
|
+
throw error;
|
|
124
|
+
}
|
|
125
|
+
this.readyAt = new Date();
|
|
126
|
+
this.emit('ready', this);
|
|
127
|
+
return this.rest.token;
|
|
128
|
+
}
|
|
129
|
+
async destroy() {
|
|
130
|
+
this.gateway?.destroy();
|
|
131
|
+
this.gateway = null;
|
|
132
|
+
this.readyAt = null;
|
|
133
|
+
}
|
|
134
|
+
generateInvite(options = {}) {
|
|
135
|
+
const id = options.applicationId ?? this.requireApplicationId();
|
|
136
|
+
const permissions = new Permissions_js_1.PermissionsBitField(options.permissions ?? 0n);
|
|
137
|
+
return `${this.appUrl}/oauth2/authorize?client_id=${id}&permissions=${permissions}`;
|
|
138
|
+
}
|
|
139
|
+
async fetchInvite(code) {
|
|
140
|
+
return new ServerAssets_js_1.Invite(this, await this.rest.get(Routes_js_1.Routes.invite(code), { auth: false }));
|
|
141
|
+
}
|
|
142
|
+
async sync() {
|
|
143
|
+
if (!this.options.fetchServersOnReady)
|
|
144
|
+
return;
|
|
145
|
+
await this.users.fetchTags().catch((error) => this.emit('debug', `Could not load user tags: ${error.message}`));
|
|
146
|
+
const servers = await this.servers.fetch();
|
|
147
|
+
if (this.options.fetchMembersOnReady) {
|
|
148
|
+
await Promise.all(servers.map((server) => server.members.fetch().catch((error) => this.emit('debug', `Members of ${server.id}: ${error.message}`))));
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
exports.Client = Client;
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dispatch = dispatch;
|
|
4
|
+
const Message_js_1 = require("../structures/Message.js");
|
|
5
|
+
const ServerChannels_js_1 = require("../structures/channels/ServerChannels.js");
|
|
6
|
+
const createInteraction_js_1 = require("../structures/interactions/createInteraction.js");
|
|
7
|
+
const ScheduledEvent_js_1 = require("../structures/ScheduledEvent.js");
|
|
8
|
+
const handlers = {
|
|
9
|
+
SERVER_CREATE(client, d) {
|
|
10
|
+
client.emit('serverCreate', client.servers._add(d));
|
|
11
|
+
},
|
|
12
|
+
SERVER_UPDATE(client, d) {
|
|
13
|
+
const server = client.servers.cache.get(d.id);
|
|
14
|
+
if (!server)
|
|
15
|
+
return void client.servers._add(d);
|
|
16
|
+
const before = server._clone();
|
|
17
|
+
client.emit('serverUpdate', before, server._patch(d));
|
|
18
|
+
},
|
|
19
|
+
SERVER_REMOVE(client, d) {
|
|
20
|
+
const server = client.servers._remove(d.serverId);
|
|
21
|
+
client.emit('serverRemove', { id: d.serverId, reason: d.reason ?? null, server });
|
|
22
|
+
},
|
|
23
|
+
SERVER_CHANNELS_UPDATE(client, d) {
|
|
24
|
+
const { created, updated, deleted } = client.channels._replaceServer(d.serverId, d.channels);
|
|
25
|
+
created.forEach((c) => client.emit('channelCreate', c));
|
|
26
|
+
updated.forEach(([before, after]) => client.emit('channelUpdate', before, after));
|
|
27
|
+
deleted.forEach((c) => client.emit('channelDelete', c));
|
|
28
|
+
},
|
|
29
|
+
SERVER_ROLES_UPDATE(client, d) {
|
|
30
|
+
const server = client.servers.cache.get(d.serverId);
|
|
31
|
+
if (!server)
|
|
32
|
+
return;
|
|
33
|
+
const { created, updated, deleted } = server.roles._setAll(d.roles);
|
|
34
|
+
created.forEach((r) => client.emit('roleCreate', r));
|
|
35
|
+
updated.forEach(([before, after]) => client.emit('roleUpdate', before, after));
|
|
36
|
+
deleted.forEach((r) => client.emit('roleDelete', r));
|
|
37
|
+
},
|
|
38
|
+
THREAD_UPDATE(client, d) {
|
|
39
|
+
const data = { ...d.channel, serverId: d.serverId };
|
|
40
|
+
const existing = client.channels.cache.get(data.id);
|
|
41
|
+
if (!(existing instanceof ServerChannels_js_1.ThreadChannel))
|
|
42
|
+
return void client.emit('threadCreate', client.channels._addThread(data));
|
|
43
|
+
const before = existing._clone();
|
|
44
|
+
client.emit('threadUpdate', before, client.channels._addThread(data));
|
|
45
|
+
},
|
|
46
|
+
MESSAGE_CREATE(client, d) {
|
|
47
|
+
const channel = client.channels._textChannel(d.channelId, d.serverId ?? null);
|
|
48
|
+
channel.lastMessageId = d.id;
|
|
49
|
+
client.emit('messageCreate', channel.messages._add(d));
|
|
50
|
+
},
|
|
51
|
+
MESSAGE_UPDATE(client, d) {
|
|
52
|
+
const channel = client.channels._textChannel(d.channelId, d.serverId ?? null);
|
|
53
|
+
const cached = channel.messages.cache.get(d.id);
|
|
54
|
+
const before = cached ? cached._clone() : null;
|
|
55
|
+
client.emit('messageUpdate', before, channel.messages._add(d));
|
|
56
|
+
},
|
|
57
|
+
MESSAGE_DELETE(client, d) {
|
|
58
|
+
const channel = client.channels._textChannel(d.channelId, null);
|
|
59
|
+
client.emit('messageDelete', { id: d.id, channelId: d.channelId, channel, message: channel.messages._remove(d.id) });
|
|
60
|
+
},
|
|
61
|
+
MESSAGE_REACTION_ADD(client, d) {
|
|
62
|
+
const event = reactionEvent(client, d);
|
|
63
|
+
const message = event.message;
|
|
64
|
+
if (message) {
|
|
65
|
+
const own = d.userId === client.user?.id;
|
|
66
|
+
const existing = message.reactions.get(d.emoji);
|
|
67
|
+
if (existing) {
|
|
68
|
+
existing.count++;
|
|
69
|
+
existing.me ||= own;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
message.reactions.set(d.emoji, new Message_js_1.MessageReaction(message, d.emoji, 1, own));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
client.emit('messageReactionAdd', event);
|
|
76
|
+
},
|
|
77
|
+
MESSAGE_REACTION_REMOVE(client, d) {
|
|
78
|
+
const event = reactionEvent(client, d);
|
|
79
|
+
const reaction = event.message?.reactions.get(d.emoji);
|
|
80
|
+
if (reaction) {
|
|
81
|
+
reaction.count = Math.max(0, reaction.count - 1);
|
|
82
|
+
if (d.userId === client.user?.id)
|
|
83
|
+
reaction.me = false;
|
|
84
|
+
if (reaction.count === 0)
|
|
85
|
+
event.message?.reactions.delete(d.emoji);
|
|
86
|
+
}
|
|
87
|
+
client.emit('messageReactionRemove', event);
|
|
88
|
+
},
|
|
89
|
+
MESSAGE_PIN(client, d) {
|
|
90
|
+
const channel = client.channels._textChannel(d.channelId, null);
|
|
91
|
+
const message = channel.messages.cache.get(d.messageId);
|
|
92
|
+
if (message)
|
|
93
|
+
message.pinned = d.pinned;
|
|
94
|
+
client.emit('messagePin', { channelId: d.channelId, messageId: d.messageId, pinned: d.pinned, channel });
|
|
95
|
+
},
|
|
96
|
+
TYPING_START(client, d) {
|
|
97
|
+
client.emit('typingStart', {
|
|
98
|
+
channelId: d.channelId,
|
|
99
|
+
userId: d.userId,
|
|
100
|
+
channel: client.channels._textChannel(d.channelId, null),
|
|
101
|
+
user: client.users.cache.get(d.userId) ?? null
|
|
102
|
+
});
|
|
103
|
+
},
|
|
104
|
+
MENTION(client, d) {
|
|
105
|
+
client.emit('mention', { channelId: d.channelId, messageId: d.messageId, serverId: d.serverId ?? null });
|
|
106
|
+
},
|
|
107
|
+
POLL_VOTE(client, d) {
|
|
108
|
+
client.emit('pollVote', d);
|
|
109
|
+
},
|
|
110
|
+
MEMBER_ADD(client, d) {
|
|
111
|
+
const server = client.servers.cache.get(d.serverId);
|
|
112
|
+
if (server)
|
|
113
|
+
client.emit('memberAdd', server.members._add(d.member));
|
|
114
|
+
},
|
|
115
|
+
MEMBER_REMOVE(client, d) {
|
|
116
|
+
const server = client.servers.cache.get(d.serverId);
|
|
117
|
+
const member = server?.members.cache.get(d.userId) ?? null;
|
|
118
|
+
server?.members.cache.delete(d.userId);
|
|
119
|
+
client.emit('memberRemove', { serverId: d.serverId, userId: d.userId, member, user: member?.user ?? client.users.cache.get(d.userId) ?? null });
|
|
120
|
+
},
|
|
121
|
+
MEMBER_UPDATE(client, d) {
|
|
122
|
+
const server = client.servers.cache.get(d.serverId);
|
|
123
|
+
if (!server)
|
|
124
|
+
return;
|
|
125
|
+
const cached = server.members.cache.get(d.userId);
|
|
126
|
+
const user = client.users.cache.get(d.userId) ?? { id: d.userId, username: '' };
|
|
127
|
+
const before = cached ? cached._clone() : null;
|
|
128
|
+
const after = cached ?? server.members._add({ user, roles: [], nick: null });
|
|
129
|
+
after._patch(d);
|
|
130
|
+
client.emit('memberUpdate', before, after);
|
|
131
|
+
},
|
|
132
|
+
PRESENCE_UPDATE(client, d) {
|
|
133
|
+
const user = client.users.cache.get(d.userId) ?? null;
|
|
134
|
+
user?._patch({ status: d.status, customStatus: d.customStatus ?? null });
|
|
135
|
+
client.emit('presenceUpdate', { userId: d.userId, status: d.status, customStatus: d.customStatus ?? null, user });
|
|
136
|
+
},
|
|
137
|
+
USER_UPDATE(client, d) {
|
|
138
|
+
const cached = client.users.cache.get(d.id);
|
|
139
|
+
const before = cached ? cached._clone() : null;
|
|
140
|
+
client.emit('userUpdate', before, client.users._add(d));
|
|
141
|
+
},
|
|
142
|
+
CLAN_TAG_UPDATE(client, d) {
|
|
143
|
+
client.emit('clanTagUpdate', d);
|
|
144
|
+
},
|
|
145
|
+
DM_OPEN(client, d) {
|
|
146
|
+
client.emit('dmOpen', client.channels._addDM(d));
|
|
147
|
+
},
|
|
148
|
+
VOICE_STATE_UPDATE(client, d) {
|
|
149
|
+
const state = d;
|
|
150
|
+
const states = state.serverId ? client.servers.cache.get(state.serverId)?.voiceStates : undefined;
|
|
151
|
+
const before = states?.get(state.userId) ?? null;
|
|
152
|
+
if (state.channelId)
|
|
153
|
+
states?.set(state.userId, state);
|
|
154
|
+
else
|
|
155
|
+
states?.delete(state.userId);
|
|
156
|
+
client.emit('voiceStateUpdate', before, state);
|
|
157
|
+
},
|
|
158
|
+
SOUNDBOARD_PLAY: (client, d) => void client.emit('soundboardPlay', d),
|
|
159
|
+
CALL_ALONE: (client, d) => void client.emit('callAlone', d),
|
|
160
|
+
STAGE_INSTANCE_CREATE: (client, d) => void client.emit('stageInstanceCreate', d),
|
|
161
|
+
STAGE_INSTANCE_UPDATE: (client, d) => void client.emit('stageInstanceUpdate', d),
|
|
162
|
+
STAGE_INSTANCE_DELETE: (client, d) => void client.emit('stageInstanceDelete', d),
|
|
163
|
+
VOICE_CHANNEL_STATUS_UPDATE: (client, d) => void client.emit('voiceChannelStatusUpdate', d),
|
|
164
|
+
SERVER_SOUNDBOARD_UPDATE: (client, d) => void client.emit('serverSoundboardUpdate', d),
|
|
165
|
+
SERVER_STICKERS_UPDATE(client, d) {
|
|
166
|
+
client.servers.cache.get(d.serverId)?.stickers._setAll(d.stickers);
|
|
167
|
+
client.emit('serverStickersUpdate', d);
|
|
168
|
+
},
|
|
169
|
+
SERVER_EVENT_CREATE(client, d) {
|
|
170
|
+
const server = client.servers.cache.get(d.serverId);
|
|
171
|
+
client.emit('serverEventCreate', server ? server.events._add(d) : new ScheduledEvent_js_1.ScheduledEvent(client, d));
|
|
172
|
+
},
|
|
173
|
+
SERVER_EVENT_UPDATE(client, d) {
|
|
174
|
+
const server = client.servers.cache.get(d.serverId);
|
|
175
|
+
client.emit('serverEventUpdate', server ? server.events._add(d) : new ScheduledEvent_js_1.ScheduledEvent(client, d));
|
|
176
|
+
},
|
|
177
|
+
SERVER_EVENT_DELETE(client, d) {
|
|
178
|
+
client.servers.cache.get(d.serverId)?.events.cache.delete(d.id);
|
|
179
|
+
client.emit('serverEventDelete', { serverId: d.serverId, id: d.id });
|
|
180
|
+
},
|
|
181
|
+
SERVER_EVENT_USER_ADD(client, d) {
|
|
182
|
+
const event = client.servers.cache.get(d.serverId)?.events.cache.get(d.eventId);
|
|
183
|
+
if (event)
|
|
184
|
+
event.interestedCount = d.interestedCount;
|
|
185
|
+
client.emit('serverEventUserAdd', { serverId: d.serverId, eventId: d.eventId, userId: d.userId, interestedCount: d.interestedCount });
|
|
186
|
+
},
|
|
187
|
+
SERVER_EVENT_USER_REMOVE(client, d) {
|
|
188
|
+
const event = client.servers.cache.get(d.serverId)?.events.cache.get(d.eventId);
|
|
189
|
+
if (event)
|
|
190
|
+
event.interestedCount = d.interestedCount;
|
|
191
|
+
client.emit('serverEventUserRemove', { serverId: d.serverId, eventId: d.eventId, userId: d.userId, interestedCount: d.interestedCount });
|
|
192
|
+
},
|
|
193
|
+
INTERACTION_CREATE(client, d) {
|
|
194
|
+
const raw = d;
|
|
195
|
+
if (raw.type === 'ping')
|
|
196
|
+
return;
|
|
197
|
+
client.setApplicationId(raw.applicationId);
|
|
198
|
+
client.emit('interactionCreate', (0, createInteraction_js_1.createInteraction)(client, raw));
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
function reactionEvent(client, d) {
|
|
202
|
+
const channel = client.channels._textChannel(d.channelId, null);
|
|
203
|
+
return {
|
|
204
|
+
channelId: d.channelId,
|
|
205
|
+
messageId: d.messageId,
|
|
206
|
+
userId: d.userId,
|
|
207
|
+
emoji: d.emoji,
|
|
208
|
+
channel,
|
|
209
|
+
message: channel.messages.cache.get(d.messageId) ?? null,
|
|
210
|
+
user: client.users.cache.get(d.userId) ?? null
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
function dispatch(client, event, data) {
|
|
214
|
+
client.emit('raw', { t: event, d: data });
|
|
215
|
+
try {
|
|
216
|
+
handlers[event]?.(client, data);
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
if (client.listenerCount('error') > 0)
|
|
220
|
+
client.emit('error', error);
|
|
221
|
+
else
|
|
222
|
+
queueMicrotask(() => { throw error; });
|
|
223
|
+
}
|
|
224
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import type { Channel } from '../structures/channels/ServerChannels.js';
|
|
2
|
+
import type { ThreadChannel } from '../structures/channels/ServerChannels.js';
|
|
3
|
+
import type { DMChannel } from '../structures/channels/DMChannel.js';
|
|
4
|
+
import type { TextBasedChannel } from '../structures/channels/TextBasedChannel.js';
|
|
5
|
+
import type { BaseInteraction } from '../structures/interactions/BaseInteraction.js';
|
|
6
|
+
import type { Message } from '../structures/Message.js';
|
|
7
|
+
import type { Role } from '../structures/Role.js';
|
|
8
|
+
import type { ScheduledEvent } from '../structures/ScheduledEvent.js';
|
|
9
|
+
import type { Server } from '../structures/Server.js';
|
|
10
|
+
import type { ServerMember } from '../structures/ServerMember.js';
|
|
11
|
+
import type { User } from '../structures/User.js';
|
|
12
|
+
import type { APIVoiceState } from '../types.js';
|
|
13
|
+
import type { Client } from './Client.js';
|
|
14
|
+
export interface ServerRemoval {
|
|
15
|
+
id: string;
|
|
16
|
+
reason: string | null;
|
|
17
|
+
server: Server | null;
|
|
18
|
+
}
|
|
19
|
+
export interface MessageDeleteEvent {
|
|
20
|
+
id: string;
|
|
21
|
+
channelId: string;
|
|
22
|
+
channel: TextBasedChannel;
|
|
23
|
+
message: Message | null;
|
|
24
|
+
}
|
|
25
|
+
export interface ReactionEvent {
|
|
26
|
+
channelId: string;
|
|
27
|
+
messageId: string;
|
|
28
|
+
userId: string;
|
|
29
|
+
emoji: string;
|
|
30
|
+
channel: TextBasedChannel;
|
|
31
|
+
message: Message | null;
|
|
32
|
+
user: User | null;
|
|
33
|
+
}
|
|
34
|
+
export interface MessagePinEvent {
|
|
35
|
+
channelId: string;
|
|
36
|
+
messageId: string;
|
|
37
|
+
pinned: boolean;
|
|
38
|
+
channel: TextBasedChannel;
|
|
39
|
+
}
|
|
40
|
+
export interface TypingEvent {
|
|
41
|
+
channelId: string;
|
|
42
|
+
userId: string;
|
|
43
|
+
channel: TextBasedChannel;
|
|
44
|
+
user: User | null;
|
|
45
|
+
}
|
|
46
|
+
export interface MentionEvent {
|
|
47
|
+
channelId: string;
|
|
48
|
+
messageId: string;
|
|
49
|
+
serverId: string | null;
|
|
50
|
+
}
|
|
51
|
+
export interface MemberRemoval {
|
|
52
|
+
serverId: string;
|
|
53
|
+
userId: string;
|
|
54
|
+
member: ServerMember | null;
|
|
55
|
+
user: User | null;
|
|
56
|
+
}
|
|
57
|
+
export interface PresenceEvent {
|
|
58
|
+
userId: string;
|
|
59
|
+
status: string;
|
|
60
|
+
customStatus: string | null;
|
|
61
|
+
user: User | null;
|
|
62
|
+
}
|
|
63
|
+
export type ClientEvents = {
|
|
64
|
+
ready: [client: Client];
|
|
65
|
+
reconnected: [client: Client];
|
|
66
|
+
reconnecting: [attempt: number, delayMs: number];
|
|
67
|
+
disconnect: [code: number, reason: string];
|
|
68
|
+
raw: [packet: {
|
|
69
|
+
t: string;
|
|
70
|
+
d: unknown;
|
|
71
|
+
}];
|
|
72
|
+
debug: [message: string];
|
|
73
|
+
error: [error: Error];
|
|
74
|
+
serverCreate: [server: Server];
|
|
75
|
+
serverUpdate: [before: Server, after: Server];
|
|
76
|
+
serverRemove: [removal: ServerRemoval];
|
|
77
|
+
channelCreate: [channel: Channel];
|
|
78
|
+
channelUpdate: [before: Channel, after: Channel];
|
|
79
|
+
channelDelete: [channel: Channel];
|
|
80
|
+
roleCreate: [role: Role];
|
|
81
|
+
roleUpdate: [before: Role, after: Role];
|
|
82
|
+
roleDelete: [role: Role];
|
|
83
|
+
threadCreate: [thread: ThreadChannel];
|
|
84
|
+
threadUpdate: [before: ThreadChannel, after: ThreadChannel];
|
|
85
|
+
messageCreate: [message: Message];
|
|
86
|
+
messageUpdate: [before: Message | null, after: Message];
|
|
87
|
+
messageDelete: [event: MessageDeleteEvent];
|
|
88
|
+
messageReactionAdd: [event: ReactionEvent];
|
|
89
|
+
messageReactionRemove: [event: ReactionEvent];
|
|
90
|
+
messagePin: [event: MessagePinEvent];
|
|
91
|
+
typingStart: [event: TypingEvent];
|
|
92
|
+
mention: [event: MentionEvent];
|
|
93
|
+
pollVote: [data: Record<string, unknown>];
|
|
94
|
+
memberAdd: [member: ServerMember];
|
|
95
|
+
memberRemove: [removal: MemberRemoval];
|
|
96
|
+
memberUpdate: [before: ServerMember | null, after: ServerMember];
|
|
97
|
+
presenceUpdate: [event: PresenceEvent];
|
|
98
|
+
userUpdate: [before: User | null, after: User];
|
|
99
|
+
clanTagUpdate: [data: Record<string, unknown>];
|
|
100
|
+
dmOpen: [channel: DMChannel];
|
|
101
|
+
voiceStateUpdate: [before: APIVoiceState | null, after: APIVoiceState];
|
|
102
|
+
soundboardPlay: [data: Record<string, unknown>];
|
|
103
|
+
callAlone: [data: Record<string, unknown>];
|
|
104
|
+
stageInstanceCreate: [data: Record<string, unknown>];
|
|
105
|
+
stageInstanceUpdate: [data: Record<string, unknown>];
|
|
106
|
+
stageInstanceDelete: [data: Record<string, unknown>];
|
|
107
|
+
voiceChannelStatusUpdate: [data: Record<string, unknown>];
|
|
108
|
+
serverStickersUpdate: [data: Record<string, unknown>];
|
|
109
|
+
serverSoundboardUpdate: [data: Record<string, unknown>];
|
|
110
|
+
serverEventCreate: [event: ScheduledEvent];
|
|
111
|
+
serverEventUpdate: [event: ScheduledEvent];
|
|
112
|
+
serverEventDelete: [data: {
|
|
113
|
+
serverId: string;
|
|
114
|
+
id: string;
|
|
115
|
+
}];
|
|
116
|
+
serverEventUserAdd: [data: {
|
|
117
|
+
serverId: string;
|
|
118
|
+
eventId: string;
|
|
119
|
+
userId: string;
|
|
120
|
+
interestedCount: number;
|
|
121
|
+
}];
|
|
122
|
+
serverEventUserRemove: [data: {
|
|
123
|
+
serverId: string;
|
|
124
|
+
eventId: string;
|
|
125
|
+
userId: string;
|
|
126
|
+
interestedCount: number;
|
|
127
|
+
}];
|
|
128
|
+
interactionCreate: [interaction: BaseInteraction];
|
|
129
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { BaffError } from '../errors/BaffError.js';
|
|
2
|
+
import { Collection } from '../util/Collection.js';
|
|
3
|
+
import { TypedEmitter } from '../util/TypedEmitter.js';
|
|
4
|
+
export interface CollectorOptions<V> {
|
|
5
|
+
filter?: (item: V, collected: Collection<string, V>) => boolean | Promise<boolean>;
|
|
6
|
+
time?: number;
|
|
7
|
+
idle?: number;
|
|
8
|
+
max?: number;
|
|
9
|
+
maxProcessed?: number;
|
|
10
|
+
}
|
|
11
|
+
type CollectorEvents<V> = {
|
|
12
|
+
collect: [item: V];
|
|
13
|
+
ignore: [item: V];
|
|
14
|
+
end: [collected: Collection<string, V>, reason: string];
|
|
15
|
+
};
|
|
16
|
+
export declare class CollectorError extends BaffError {
|
|
17
|
+
readonly collected: Collection<string, unknown>;
|
|
18
|
+
readonly reason: string;
|
|
19
|
+
constructor(collected: Collection<string, unknown>, reason: string);
|
|
20
|
+
}
|
|
21
|
+
export declare abstract class Collector<V> extends TypedEmitter<CollectorEvents<V>> {
|
|
22
|
+
protected readonly options: CollectorOptions<V>;
|
|
23
|
+
readonly collected: Collection<string, V>;
|
|
24
|
+
ended: boolean;
|
|
25
|
+
endReason: string | null;
|
|
26
|
+
private processed;
|
|
27
|
+
private timer;
|
|
28
|
+
private idleTimer;
|
|
29
|
+
constructor(options?: CollectorOptions<V>);
|
|
30
|
+
protected abstract keyOf(item: V): string;
|
|
31
|
+
protected handle(item: V): Promise<void>;
|
|
32
|
+
stop(reason?: string): void;
|
|
33
|
+
protected abstract cleanup(): void;
|
|
34
|
+
private resetIdle;
|
|
35
|
+
}
|
|
36
|
+
export declare function awaitCollector<V>(collector: Collector<V>, errors?: string[]): Promise<Collection<string, V>>;
|
|
37
|
+
export {};
|