diff --git a/src/lib/moment/__tests__/mapMetadataToSupabase.test.ts b/src/lib/moment/__tests__/mapMetadataToSupabase.test.ts index 6416ac9b..bad9d636 100644 --- a/src/lib/moment/__tests__/mapMetadataToSupabase.test.ts +++ b/src/lib/moment/__tests__/mapMetadataToSupabase.test.ts @@ -2,16 +2,32 @@ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; vi.mock('@/lib/metadata/getMetadataHandler', () => ({ default: vi.fn() })); vi.mock('@/lib/arweave/getMimeType', () => ({ default: vi.fn() })); +vi.mock('@/lib/farcaster/getFarcasterUsernameByAddress', () => ({ + default: vi.fn(), +})); +vi.mock('@/lib/ens/resolveAddressToEns', () => ({ default: vi.fn() })); import { mapMetadataToSupabase } from '../mapMetadataToSupabase'; import getMetadataHandler from '@/lib/metadata/getMetadataHandler'; import getMimeType from '@/lib/arweave/getMimeType'; +import getFarcasterUsernameByAddress from '@/lib/farcaster/getFarcasterUsernameByAddress'; +import resolveAddressToEns from '@/lib/ens/resolveAddressToEns'; const mockGetMetadata = vi.mocked(getMetadataHandler); const mockGetMimeType = vi.mocked(getMimeType); +const mockGetFarcasterUsername = vi.mocked(getFarcasterUsernameByAddress); +const mockResolveEns = vi.mocked(resolveAddressToEns); describe('mapMetadataToSupabase', () => { - beforeEach(() => vi.clearAllMocks()); + beforeEach(() => { + vi.clearAllMocks(); + // When metadata has no `artist` field, mapMetadataToSupabase falls back + // to a real Farcaster/ENS lookup for the creator address. Default both + // to "not found" so tests that don't care about this fallback don't hit + // the network and hang. + mockGetFarcasterUsername.mockResolvedValue(undefined); + mockResolveEns.mockResolvedValue(null); + }); it('returns empty records for empty input', async () => { const result = await mapMetadataToSupabase([]); diff --git a/src/lib/telegram/chat/bot.ts b/src/lib/telegram/chat/bot.ts index b68bf8b8..33669c9b 100644 --- a/src/lib/telegram/chat/bot.ts +++ b/src/lib/telegram/chat/bot.ts @@ -11,6 +11,14 @@ export function createTelegramChatBot() { secretToken: process.env.TELEGRAM_CHAT_WEBHOOK_SECRET_TOKEN, mode: 'webhook', }); + // The adapter defaults persistMessageHistory to true, which writes every + // message to Redis (msg-history:) forever. Nothing in this repo + // reads that history back (no LLM context use), so it's pure write waste. + // Field is typed readonly upstream but is a plain mutable class field at + // runtime — force it off here instead of forking the adapter. + ( + telegramAdapter as { persistMessageHistory: boolean } + ).persistMessageHistory = false; const bot = new Chat({ userName: process.env.TELEGRAM_CHAT_BOT_USERNAME!,