patch: add interaction event

This commit is contained in:
Yuzu 2022-07-01 10:17:05 -05:00
parent 42e5c9f62b
commit 71aa75c660

View File

@ -2,6 +2,7 @@ import type {
DiscordGuildMemberAdd, DiscordGuildMemberAdd,
DiscordGuildMemberRemove, DiscordGuildMemberRemove,
DiscordGuildMemberUpdate, DiscordGuildMemberUpdate,
DiscordInteraction,
DiscordMessage, DiscordMessage,
DiscordMessageDelete, DiscordMessageDelete,
DiscordReady, DiscordReady,
@ -11,6 +12,7 @@ import type { Session } from "../session/Session.ts";
import Member from "../structures/Member.ts"; import Member from "../structures/Member.ts";
import Message from "../structures/Message.ts"; import Message from "../structures/Message.ts";
import User from "../structures/User.ts"; import User from "../structures/User.ts";
import Interaction from "../structures/Interaction.ts";
export type RawHandler<T> = (...args: [Session, number, T]) => void; export type RawHandler<T> = (...args: [Session, number, T]) => void;
export type Handler<T extends unknown[]> = (...args: T) => unknown; export type Handler<T extends unknown[]> = (...args: T) => unknown;
@ -43,6 +45,11 @@ export const GUILD_MEMBER_REMOVE: RawHandler<DiscordGuildMemberRemove> = (sessio
session.emit("guildMemberRemove", new User(session, member.user), member.guild_id); session.emit("guildMemberRemove", new User(session, member.user), member.guild_id);
}; };
export const INTERACTION_CREATE: RawHandler<DiscordInteraction> = (session, _shardId, interaction) => {
session.unrepliedInteractions.add(BigInt(interaction.id));
session.emit("interactionCreate", new Interaction(session, interaction));
};
export const raw: RawHandler<unknown> = (session, shardId, data) => { export const raw: RawHandler<unknown> = (session, shardId, data) => {
session.emit("raw", data, shardId); session.emit("raw", data, shardId);
}; };
@ -60,5 +67,6 @@ export interface Events {
"guildMemberAdd": Handler<[Member]>; "guildMemberAdd": Handler<[Member]>;
"guildMemberUpdate": Handler<[Member]>; "guildMemberUpdate": Handler<[Member]>;
"guildMemberRemove": Handler<[User, Snowflake]>; "guildMemberRemove": Handler<[User, Snowflake]>;
"interactionCreate": Handler<[Interaction]>;
"raw": Handler<[unknown, number]>; "raw": Handler<[unknown, number]>;
} }