From 2f9d548bc828bfc8b1c302e7932e3a63cef9e277 Mon Sep 17 00:00:00 2001 From: D4rkst3r Date: Wed, 22 Jul 2026 23:56:42 +0200 Subject: [PATCH] =?UTF-8?q?Devlog-Archiv:=20Filter=20akzeptiert=20auch=20B?= =?UTF-8?q?ot-Posts,=20Backfill-Report=20mit=20Absender-Aufschl=C3=BCsselu?= =?UTF-8?q?ng?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - devlog.py kann per Webhook ODER Bot-Token posten — beides wird jetzt archiviert (nur User-Chatter und der EcoBot selbst bleiben ausgeschlossen) - /devlog-backfill meldet jetzt Webhook/Bot/User-Zählung zur Diagnose Co-Authored-By: Claude Opus 4.8 --- src/bot/commands/devlog-backfill.js | 12 +++++++++--- src/bot/devlog-archive.js | 9 ++++++--- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/bot/commands/devlog-backfill.js b/src/bot/commands/devlog-backfill.js index a8f4c64..246a71e 100644 --- a/src/bot/commands/devlog-backfill.js +++ b/src/bot/commands/devlog-backfill.js @@ -18,21 +18,27 @@ export async function execute(interaction) { } // Historie rückwärts in 100er-Blöcken durchlaufen (Discord-API-Maximum pro Fetch) - let scanned = 0; let saved = 0; let before; + // Aufschlüsselung nach Absender-Typ — hilft bei der Diagnose, wenn nichts archiviert wird + const counts = { webhook: 0, bot: 0, user: 0 }; for (;;) { const batch = await channel.messages.fetch({ limit: 100, before }); if (batch.size === 0) break; for (const message of batch.values()) { - scanned++; + if (message.webhookId) counts.webhook++; + else if (message.author?.bot) counts.bot++; + else counts.user++; if (archiveDevlogMessage(message)) saved++; } before = batch.last().id; } + const scanned = counts.webhook + counts.bot + counts.user; await interaction.editReply( - `✅ Backfill fertig: ${scanned} Nachrichten gescannt, **${saved} Devlogs neu archiviert**.` + `✅ Backfill fertig: ${scanned} Nachrichten gescannt ` + + `(${counts.webhook} Webhook, ${counts.bot} Bot, ${counts.user} User), ` + + `**${saved} Devlogs neu archiviert**.` ); } diff --git a/src/bot/devlog-archive.js b/src/bot/devlog-archive.js index 9b89718..819fce8 100644 --- a/src/bot/devlog-archive.js +++ b/src/bot/devlog-archive.js @@ -21,9 +21,12 @@ function extractContent(message) { * @returns {boolean} true, wenn neu gespeichert */ export function archiveDevlogMessage(message) { - // Nur Webhook-Nachrichten — devlog.py postet per Discord-Webhook. - // Filtert nebenbei User-Chatter und Bot-Posts im Kanal aus. - if (!message.webhookId) return false; + // Devlogs kommen von Webhooks oder fremden Bots/Apps (je nachdem, wie + // devlog.py postet). User-Chatter und der EcoBot selbst werden ignoriert. + const isWebhook = Boolean(message.webhookId); + const isForeignBot = + message.author?.bot === true && message.author.id !== message.client?.user?.id; + if (!isWebhook && !isForeignBot) return false; const content = extractContent(message); if (!content) return false;