// ready.ts import type { EventPayload } from '../interfaces'; import chalk from 'chalk'; import type { Client, ClientEvents, RestEvents } from 'discord.js'; export default { name: 'ready', description: 'Emitted when the client becomes ready to start working.', once: true, run(client: Client) { console.log(chalk.green(`Logged in as ${client.user.tag}!`)); }, } as EventPayload; // Event.ts import type { ClientEvents, RestEvents } from 'discord.js'; type UnionToType = { [k in keyof ClientEvents | keyof RestEvents]: k extends keyof ClientEvents ? ClientEvents[k] : k extends keyof RestEvents ? RestEvents[k] : never; }; interface EventPayload { readonly name: K; readonly description: string; readonly once?: boolean | undefined; readonly rest?: boolean | undefined; readonly run: (...args: [UnionToType]) => void; } export { EventPayload };