From de09a84daa2c7b1833eadc302de9a01e08863b86 Mon Sep 17 00:00:00 2001 From: Sosokker Date: Tue, 2 Sep 2025 21:20:37 +0700 Subject: [PATCH] feat: enhance logging for Discord interactions with detailed user information --- src/discord/core.ts | 15 ++++++++++++++- src/index.ts | 10 +++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/discord/core.ts b/src/discord/core.ts index a1445b7..18fa6fb 100644 --- a/src/discord/core.ts +++ b/src/discord/core.ts @@ -1,10 +1,11 @@ import { Config } from "../config"; +import { logger } from "../logger"; export const fetchDiscord = async ( path: string, init?: RequestInit, ): Promise => { - const response = await fetch(`${Config.DISCORD_API}${path}`, { + let response = await fetch(`${Config.DISCORD_API}${path}`, { ...init, headers: { Authorization: `Bot ${Config.BOT_TOKEN}`, @@ -12,10 +13,22 @@ export const fetchDiscord = async ( ...(init?.headers || {}), }, }); + if (response.status === 429) { const data = await response.json().catch(() => ({}) as any); const retry = (data?.retry_after ? Number(data.retry_after) : 1) * 1000; + logger.warn({ path, retry }, `Rate limited. Retrying after ${retry}ms.`); await new Promise((r) => setTimeout(r, retry)); + + response = await fetch(`${Config.DISCORD_API}${path}`, { + ...init, + headers: { + Authorization: `Bot ${Config.BOT_TOKEN}`, + "Content-Type": "application/json", + ...(init?.headers || {}), + }, + }); } + return response; }; diff --git a/src/index.ts b/src/index.ts index f7c64e3..f45d1ab 100644 --- a/src/index.ts +++ b/src/index.ts @@ -132,7 +132,15 @@ app.post("/interactions", async (c) => { } const interaction = JSON.parse(raw); - logger.info({ interaction }, "Received interaction"); + logger.info( + { + user: interaction.user.id, + name: interaction.name, + guideId: interaction.channel.guild_id, + channelId: interaction.channel_id, + }, + "Received interaction", + ); const { type } = interaction; if (type === 1) {