Devlog-Archiv: Filter akzeptiert auch Bot-Posts, Backfill-Report mit Absender-Aufschlüsselung
- 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 <noreply@anthropic.com>
This commit is contained in:
@@ -18,21 +18,27 @@ export async function execute(interaction) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Historie rückwärts in 100er-Blöcken durchlaufen (Discord-API-Maximum pro Fetch)
|
// Historie rückwärts in 100er-Blöcken durchlaufen (Discord-API-Maximum pro Fetch)
|
||||||
let scanned = 0;
|
|
||||||
let saved = 0;
|
let saved = 0;
|
||||||
let before;
|
let before;
|
||||||
|
// Aufschlüsselung nach Absender-Typ — hilft bei der Diagnose, wenn nichts archiviert wird
|
||||||
|
const counts = { webhook: 0, bot: 0, user: 0 };
|
||||||
for (;;) {
|
for (;;) {
|
||||||
const batch = await channel.messages.fetch({ limit: 100, before });
|
const batch = await channel.messages.fetch({ limit: 100, before });
|
||||||
if (batch.size === 0) break;
|
if (batch.size === 0) break;
|
||||||
|
|
||||||
for (const message of batch.values()) {
|
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++;
|
if (archiveDevlogMessage(message)) saved++;
|
||||||
}
|
}
|
||||||
before = batch.last().id;
|
before = batch.last().id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const scanned = counts.webhook + counts.bot + counts.user;
|
||||||
await interaction.editReply(
|
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**.`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,9 +21,12 @@ function extractContent(message) {
|
|||||||
* @returns {boolean} true, wenn neu gespeichert
|
* @returns {boolean} true, wenn neu gespeichert
|
||||||
*/
|
*/
|
||||||
export function archiveDevlogMessage(message) {
|
export function archiveDevlogMessage(message) {
|
||||||
// Nur Webhook-Nachrichten — devlog.py postet per Discord-Webhook.
|
// Devlogs kommen von Webhooks oder fremden Bots/Apps (je nachdem, wie
|
||||||
// Filtert nebenbei User-Chatter und Bot-Posts im Kanal aus.
|
// devlog.py postet). User-Chatter und der EcoBot selbst werden ignoriert.
|
||||||
if (!message.webhookId) return false;
|
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);
|
const content = extractContent(message);
|
||||||
if (!content) return false;
|
if (!content) return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user