From b32278c108598ea79c661ff0f4636edf69aaf0de Mon Sep 17 00:00:00 2001 From: Nix Krystik Date: Sun, 13 Sep 2026 21:14:56 +0800 Subject: [PATCH] some logging for me. --- .env.sample | 1 + src/events/client/error.ts | 6 ++++-- src/events/client/ready.ts | 23 ++++++++++------------- src/events/guild/guildCreate.ts | 31 +++++++++++++++++++++++++++++++ src/events/guild/guildDelete.ts | 23 +++++++++++++++++++++++ src/events/index.ts | 14 +++++++++++--- types/env.d.ts | 1 + 7 files changed, 81 insertions(+), 18 deletions(-) create mode 100644 src/events/guild/guildCreate.ts create mode 100644 src/events/guild/guildDelete.ts diff --git a/.env.sample b/.env.sample index d174367..680aef4 100644 --- a/.env.sample +++ b/.env.sample @@ -2,3 +2,4 @@ DATABASE_URL=postgresql://postgres:postgres@postgres:5432/pond DEV_GUILD= DISCORD_TOKEN= +LOGGING_CHANNEL= \ No newline at end of file diff --git a/src/events/client/error.ts b/src/events/client/error.ts index 3a24bc7..2a17321 100644 --- a/src/events/client/error.ts +++ b/src/events/client/error.ts @@ -3,15 +3,17 @@ import { CommandClient, Event } from 'athena-prime'; // ---------- class ErrorEvent extends Event { - event: string = 'ready' as const; + event: string = 'error' as const; async handle(context: CommandClient, error: string | Error, shard?: number | undefined) { const _err = error as Error; - await context.createMessage('1548676420136599624', { + await context.createMessage(process.env.LOGGING_CHANNEL, { embed: { color: 0xff5555, + title: 'Error', + fields: [ { name: 'Message', value: _err.message, inline: false }, { name: 'Cause', value: `${_err.cause ?? 'N/A'}`, inline: false }, diff --git a/src/events/client/ready.ts b/src/events/client/ready.ts index 8075145..7c2d67f 100644 --- a/src/events/client/ready.ts +++ b/src/events/client/ready.ts @@ -9,21 +9,18 @@ class ReadyEvent extends Event { await context.deployCommands(); context.setCustomActivity('Tracking your petting!'); - context.on('error', async (error: string | Error, shard?: number | undefined) => { - const _err = error as Error; + await context.createMessage(process.env.LOGGING_CHANNEL, { + embed: { + color: 0x55ff55, - await context.createMessage('1548676420136599624', { - embed: { - color: 0xff5555, + title: 'Bot Ready', - fields: [ - { name: 'Message', value: _err.message, inline: false }, - { name: 'Cause', value: `${_err.cause ?? 'N/A'}`, inline: false }, - { name: 'Stack', value: `${_err.stack ?? 'N/A'}`, inline: false } - ] - } - }); - }) + fields: [ + { name: 'Guilds', value: `${context.guilds.size}`, inline: true }, + { name: 'Shards', value: `${context.shards.size}`, inline: true }, + ] + } + }); } } diff --git a/src/events/guild/guildCreate.ts b/src/events/guild/guildCreate.ts new file mode 100644 index 0000000..cd57549 --- /dev/null +++ b/src/events/guild/guildCreate.ts @@ -0,0 +1,31 @@ +import { CommandClient, Event, Guild } from 'athena-prime'; + +// ---------- + +class GuildCreateEvent extends Event { + event: string = 'guildCreate' as const; + + async handle(context: CommandClient, guild: Guild) { + await context.createMessage(process.env.LOGGING_CHANNEL, { + embed: { + color: 0x55ff55, + + thumbnail: { + url: guild.iconURL!, + }, + + title: 'Joined Guild', + + fields: [ + { name: 'Name', value: `${guild.name}`, inline: false }, + { name: 'Name', value: `${guild.id}`, inline: false }, + { name: 'Owner', value: `${(await context.fetchUser(guild.ownerID)).username}`, inline: false }, + { name: 'Members', value: `${guild.memberCount}`, inline: false }, + { name: 'Large', value: `${guild.large}`, inline: false }, + ], + } + }); + } +} + +export default new GuildCreateEvent('guildCreate'); diff --git a/src/events/guild/guildDelete.ts b/src/events/guild/guildDelete.ts new file mode 100644 index 0000000..2bf676b --- /dev/null +++ b/src/events/guild/guildDelete.ts @@ -0,0 +1,23 @@ +import { CommandClient, Event, Guild } from 'athena-prime'; + +// ---------- + +class GuildCreateEvent extends Event { + event: string = 'guildCreate' as const; + + async handle(context: CommandClient, guild: { id: string; }) { + await context.createMessage(process.env.LOGGING_CHANNEL, { + embed: { + color: 0xff5555, + + title: 'Left Guild', + + fields: [ + { name: 'Name', value: `${guild.id}`, inline: false } + ], + } + }); + } +} + +export default new GuildCreateEvent('guildCreate'); diff --git a/src/events/index.ts b/src/events/index.ts index 8000b23..c05697a 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -1,8 +1,16 @@ -import messageReactionAdd from './message/messageReactionAdd'; -import messageReactionRemove from './message/messageReactionRemove'; import error from './client/error'; import ready from './client/ready'; +import guildCreate from './guild/guildCreate'; +import guildDelete from './guild/guildDelete'; + +import messageReactionAdd from './message/messageReactionAdd'; +import messageReactionRemove from './message/messageReactionRemove'; + // ---------- -export default [messageReactionAdd, messageReactionRemove, error, ready]; +export default [ + error, ready, // Client. + guildCreate, guildDelete, // Guild. + messageReactionAdd, messageReactionRemove // Message. +]; diff --git a/types/env.d.ts b/types/env.d.ts index 402a839..b7a0052 100644 --- a/types/env.d.ts +++ b/types/env.d.ts @@ -3,6 +3,7 @@ declare global { interface ProcessEnv { DATABASE_URL: string; DISCORD_TOKEN: string; + LOGGING_CHANNEL: string; } } }