From 522c316af64201f8957148f8bae4192b6edefd1d Mon Sep 17 00:00:00 2001 From: ToastedToast Date: Mon, 23 Jun 2025 18:49:20 +0800 Subject: [PATCH 1/2] feat(commands): better errors for `/track` closes #32 --- src/commands.ts | 11 ++++++----- src/utils/database.ts | 8 ++++---- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/commands.ts b/src/commands.ts index 0b0b4b0..b2c958f 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -343,16 +343,17 @@ const commands: Record = { return; } - // Check if the channel is already being tracked in the guild - if ( + const trackedChannels = await checkIfGuildIsTrackingChannelAlready( platformUserId, guildId, - ) - ) { + ); + + // Check if the channel is already being tracked in the guild + if (trackedChannels.length) { await interaction.reply({ flags: MessageFlags.Ephemeral, - content: "This channel is already being tracked!", + content: `This channel is already being tracked in ${trackedChannels.map((channel, index) => `${index > 0 && index === trackedChannels.length - 1 ? "and " : ""}<#${channel.guild_channel_id}>`).join(", ")}!`, }); return; diff --git a/src/utils/database.ts b/src/utils/database.ts index d2c46be..0f36fbe 100644 --- a/src/utils/database.ts +++ b/src/utils/database.ts @@ -1,8 +1,8 @@ -import type { dbDiscordTable, dbYouTube } from "../types/database"; +import type { dbDiscordTable } from "../types/database"; import { Pool } from "pg"; -import { dbCredentials, env } from "../config"; +import { dbCredentials } from "../config"; // import path from "path"; // import { Database } from "bun:sqlite"; @@ -30,14 +30,14 @@ export const pool: Pool = new Pool({ export async function checkIfGuildIsTrackingChannelAlready( channelId: string, guild_id: string, -) { +): Promise { const query = `SELECT * FROM discord WHERE platform_user_id = ? AND guild_id = ?`; try { const statement = db.prepare(query); const result = statement.all(channelId, guild_id); - return result.length > 0; + return result; } catch (err) { console.error( "Error checking if guild is tracking channel already:", From c77de3c0c630a9d21958e17b533dfcbaba0f1d61 Mon Sep 17 00:00:00 2001 From: ToastedToast Date: Mon, 23 Jun 2025 18:51:47 +0800 Subject: [PATCH 2/2] feat(/track): add same errors for twitch --- src/commands.ts | 15 ++++++++------- src/utils/database.ts | 20 -------------------- 2 files changed, 8 insertions(+), 27 deletions(-) diff --git a/src/commands.ts b/src/commands.ts index b2c958f..34fd29b 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -413,16 +413,17 @@ const commands: Record = { return; } - // Check if the channel is already being tracked in the guild - if ( - await twitchCheckIfGuildIsTrackingChannelAlready( - streamerId, + const trackedChannels = + await checkIfGuildIsTrackingChannelAlready( + platformUserId, guildId, - ) - ) { + ); + + // Check if the channel is already being tracked in the guild + if (trackedChannels.length) { await interaction.reply({ flags: MessageFlags.Ephemeral, - content: "This streamer is already being tracked!", + content: `This channel is already being tracked in ${trackedChannels.map((channel, index) => `${index > 0 && index === trackedChannels.length - 1 ? "and " : ""}<#${channel.guild_channel_id}>`).join(", ")}!`, }); return; diff --git a/src/utils/database.ts b/src/utils/database.ts index 0f36fbe..30f385a 100644 --- a/src/utils/database.ts +++ b/src/utils/database.ts @@ -150,26 +150,6 @@ export async function twitchCheckIfChannelIsAlreadyTracked(channelId: string) { } } -export async function twitchCheckIfGuildIsTrackingChannelAlready( - channelId: string, - guild_id: string, -) { - const query = `SELECT * FROM discord WHERE platform_user_id = ? AND guild_id = ?`; - - try { - const statement = db.prepare(query); - const result = statement.all(channelId, guild_id); - - return result.length > 0; - } catch (err) { - console.error( - "Error checking if guild is tracking Twitch channel already:", - err, - ); - throw err; - } -} - export async function twitchAddNewChannelToTrack( channelId: string, isLive: boolean,