mirror of
https://github.com/discordeno/discordeno.git
synced 2026-05-31 16:00:07 +00:00
feat: event proxying
This commit is contained in:
12
src/bot.ts
12
src/bot.ts
@@ -5,6 +5,7 @@ import { DiscordGatewayIntents } from "./types/gateway/gateway_intents.ts";
|
||||
import { snowflakeToBigint } from "./util/bigint.ts";
|
||||
import { GATEWAY_VERSION } from "./util/constants.ts";
|
||||
import { ws } from "./ws/ws.ts";
|
||||
import { EventEmitter } from "https://deno.land/std@0.96.0/node/events.ts";
|
||||
|
||||
// deno-lint-ignore prefer-const
|
||||
export let secretKey = "";
|
||||
@@ -16,7 +17,15 @@ export let eventHandlers: EventHandlers = {};
|
||||
export let proxyWSURL = `wss://gateway.discord.gg`;
|
||||
|
||||
export async function startBot(config: BotConfig) {
|
||||
if (config.eventHandlers) eventHandlers = config.eventHandlers;
|
||||
if (config.eventProxy) {
|
||||
eventHandlers = new Proxy(eventHandlers, {
|
||||
get(target, prop: keyof EventHandlers) {
|
||||
return target[prop] !== undefined ? target[prop] : ((...args: unknown[]) => config.eventProxy!.emit(prop, ...args));
|
||||
},
|
||||
});
|
||||
if (config.eventHandlers) updateEventHandlers(config.eventHandlers);
|
||||
}
|
||||
if (config.eventHandlers && !config.eventProxy) eventHandlers = config.eventHandlers;
|
||||
ws.identifyPayload.token = `Bot ${config.token}`;
|
||||
rest.token = `Bot ${config.token}`;
|
||||
ws.identifyPayload.intents = config.intents.reduce(
|
||||
@@ -67,4 +76,5 @@ export interface BotConfig {
|
||||
compress?: boolean;
|
||||
intents: (DiscordGatewayIntents | keyof typeof DiscordGatewayIntents)[];
|
||||
eventHandlers?: EventHandlers;
|
||||
eventProxy?: EventEmitter;
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@ import { DiscordenoMember } from "../../structures/member.ts";
|
||||
import { DiscordenoMessage } from "../../structures/message.ts";
|
||||
import { DiscordenoRole } from "../../structures/role.ts";
|
||||
import { Collection } from "../../util/collection.ts";
|
||||
import { DiscordenoShard } from "../../ws/ws.ts";
|
||||
import { ThreadMember } from "../channels/threads/thread_member.ts";
|
||||
import { ThreadMembersUpdate } from "../channels/threads/thread_members_update.ts";
|
||||
import { IntegrationCreateUpdate } from "../integrations/integration_create_update.ts";
|
||||
|
||||
Reference in New Issue
Block a user