fix: events

This commit is contained in:
Yuzu 2022-06-21 20:31:41 -05:00
parent b1134946b1
commit 781ef10e8c
2 changed files with 34 additions and 34 deletions

View File

@ -40,43 +40,13 @@ export class Session extends EventEmitter {
options: SessionOptions;
// TODO: improve this with CreateShardManager etc
rest?: ReturnType<typeof createRestManager>;
gateway?: ReturnType<typeof createGatewayManager>;
rest: ReturnType<typeof createRestManager>;
gateway: ReturnType<typeof createGatewayManager>;
constructor(options: SessionOptions) {
super();
this.options = options;
// TODO: set botId in Session.botId or something
}
/** TODO: move this */
static #toSnakeCase(str: string) {
// probably not a fast implementation
return str.replace(/[A-Z]/g, (char) => "_" + char.toLowerCase());
}
override on(event: "ready", func: Events["ready"]): this;
override on(event: "messageCreate", func: Events["messageCreate"]): this;
override on(event: "raw", func: Events["raw"]): this;
override on(event: keyof Events, func: Events[keyof Events]): this {
return super.on(Session.#toSnakeCase(event), func);
}
override off(event: "ready", func: Events["ready"]): this;
override off(event: "messageCreate", func: Events["messageCreate"]): this;
override off(event: "raw", func: Events["raw"]): this;
override off(event: keyof Events, func: Events[keyof Events]): this {
return super.off(Session.#toSnakeCase(event), func);
}
override once(event: "ready", func: Events["ready"]): this;
override once(event: "messageCreate", func: Events["messageCreate"]): this;
override once(event: "raw", func: Events["raw"]): this;
override once(event: keyof Events, func: Events[keyof Events]): this {
return super.once(Session.#toSnakeCase(event), func);
}
async start() {
const defHandler: DiscordRawEventHandler = (shard, data) => {
this.emit("raw", data, shard.id);
@ -102,8 +72,38 @@ export class Session extends EventEmitter {
},
handleDiscordPayload: this.options.rawHandler ?? defHandler,
});
// TODO: set botId in Session.botId or something
}
const getGatewayBot = () => this.rest!.runMethod<DiscordGetGatewayBot>(this.rest!, "GET", Routes.GATEWAY_BOT());
/** TODO: move this */
static #toSnakeCase(str: string) {
// probably not a fast implementation
return str.replace(/[A-Z]/g, (char) => "_" + char.toLowerCase());
}
override on(event: "ready", func: Events["ready"]): this;
override on(event: "messageCreate", func: Events["messageCreate"]): this;
override on(event: "raw", func: Events["raw"]): this;
override on(event: keyof Events, func: Events[keyof Events]): this {
return super.on(Session.#toSnakeCase(event).toUpperCase(), func);
}
override off(event: "ready", func: Events["ready"]): this;
override off(event: "messageCreate", func: Events["messageCreate"]): this;
override off(event: "raw", func: Events["raw"]): this;
override off(event: keyof Events, func: Events[keyof Events]): this {
return super.off(Session.#toSnakeCase(event).toUpperCase(), func);
}
override once(event: "ready", func: Events["ready"]): this;
override once(event: "messageCreate", func: Events["messageCreate"]): this;
override once(event: "raw", func: Events["raw"]): this;
override once(event: keyof Events, func: Events[keyof Events]): this {
return super.once(Session.#toSnakeCase(event).toUpperCase(), func);
}
async start() {
const getGatewayBot = () => this.rest.runMethod<DiscordGetGatewayBot>(this.rest, "GET", Routes.GATEWAY_BOT());
// check if is empty
if (!Object.keys(this.options.gateway?.data ?? {}).length) {

View File

@ -11,7 +11,7 @@ const session = new Discord.Session({
});
session.on("ready", (payload) => console.log(payload));
session.on("message", (payload) => console.log(payload));
session.on("messageCreate", (payload) => console.log(payload));
// session.on("raw", (data, shardId) => console.log(shardId, data));
console.log("hello");