diff --git a/src/lib/chat.ts b/src/lib/chat.ts index b2c0a66..3252b6f 100644 --- a/src/lib/chat.ts +++ b/src/lib/chat.ts @@ -49,9 +49,8 @@ export async function sendChat( ): Promise { const text = rawText.replace(/\s+/g, " ").trim().slice(0, CHAT_MAX_LEN); if (!text) return "empty"; - const now = Date.now(); - if (now - (lastSent.get(nickname) ?? 0) < MIN_INTERVAL_MS) return "too_fast"; + // 인증을 도배 제한보다 먼저 — 미인증 요청이 남의 닉네임 전송 쿨다운을 소모하지 못하도록 await ensureVillages(); const owner = await db.query( "SELECT 1 FROM villages WHERE nickname = $1 AND token = $2", @@ -59,6 +58,9 @@ export async function sendChat( ); if (owner.rowCount === 0) return "auth"; + const now = Date.now(); + if (now - (lastSent.get(nickname) ?? 0) < MIN_INTERVAL_MS) return "too_fast"; + await ensureChatTable(); const r = await db.query( "INSERT INTO chat_messages (nickname, text) VALUES ($1, $2) RETURNING id, extract(epoch from created_at) * 1000 AS at",