diff --git a/src/__tests__/messageCreate.test.ts b/src/__tests__/messageCreate.test.ts index 0651014..c36f500 100644 --- a/src/__tests__/messageCreate.test.ts +++ b/src/__tests__/messageCreate.test.ts @@ -58,6 +58,19 @@ test('handleMessageCreate ignores bot messages', async () => { assert.equal(enqueued, 0); }); +test('handleMessageCreate ignores system messages (e.g. thread rename)', async () => { + let enqueued = 0; + const handler = createMessageCreateHandler( + createDeps(() => { + enqueued += 1; + }), + ); + + // A thread rename arrives as a system message whose content is the new name. + await handler(makeMessage({ system: true, content: 'renamed-thread' }) as any); + assert.equal(enqueued, 0); +}); + test('handleMessageCreate ignores DMs', async () => { let enqueued = 0; const handler = createMessageCreateHandler( diff --git a/src/providers/discord/messageCreate.ts b/src/providers/discord/messageCreate.ts index 015aeab..30af786 100644 --- a/src/providers/discord/messageCreate.ts +++ b/src/providers/discord/messageCreate.ts @@ -49,6 +49,7 @@ function toIncoming(message: Message, attachmentSource?: IncomingAttachment[]): export function createMessageCreateHandler(deps: MessageCreateDeps) { return async function handleMessageCreate(message: Message): Promise { if (message.author.bot) return; + if (message.system) return; if (!message.guild) return; if (!message.content.trim() && message.attachments.size === 0) return;