added persistence in chat endpoint

This commit is contained in:
Kevin Dang
2024-01-23 16:33:21 -08:00
committed by kevinthedang
parent f8956b0b50
commit 78921ee571
5 changed files with 44 additions and 24 deletions

View File

@@ -1,43 +1,44 @@
import type { ClientEvents, Awaitable, Client } from 'discord.js';
import type { ClientEvents, Awaitable, Client } from 'discord.js'
// Export events through here to reduce amount of imports
export { Events } from 'discord.js';
export { Events } from 'discord.js'
export type LogMethod = (...args: unknown[]) => void;
export type EventKeys = keyof ClientEvents; // only wants keys of ClientEvents object
export type LogMethod = (...args: unknown[]) => void
export type EventKeys = keyof ClientEvents // only wants keys of ClientEvents object
// Event properties
export interface EventProps {
client: Client;
log: LogMethod;
client: Client
log: LogMethod
msgHist: { role: string, content: string }[]
}
export type EventCallback<T extends EventKeys> = (
props: EventProps,
...args: ClientEvents[T]
) => Awaitable<unknown>; // Method can be synchronous or async, unknown so we can return anything
) => Awaitable<unknown> // Method can be synchronous or async, unknown so we can return anything
// Event interface
export interface Event<T extends EventKeys = EventKeys> {
key: T;
callback: EventCallback<T>;
key: T
callback: EventCallback<T>
}
export function event<T extends EventKeys>(key: T, callback: EventCallback<T>): Event<T> {
return { key, callback };
return { key, callback }
}
export function registerEvents(client: Client, events: Event[]): void {
export function registerEvents(client: Client, events: Event[], msgHist: { role: string, content: string }[]): void {
for (const { key, callback } of events) {
client.on(key, (...args) => {
// Create a new log method for this event
const log = console.log.bind(console, `[Event: ${key}]`);
const log = console.log.bind(console, `[Event: ${key}]`)
// Handle Errors, call callback, log errors as needed
try {
callback({ client, log }, ...args);
callback({ client, log, msgHist }, ...args)
} catch (error) {
log('[Uncaught Error]', error);
log('[Uncaught Error]', error)
}
});
})
}
}