Bug-Reports, Devlog-Threads und Watchdog
- /bug (alle Member): erstellt Gitea-Issue inkl. Screenshot-Upload als Asset; bug_reports-Tabelle für den Rückkanal — Issue geschlossen (issues-Webhook) → DM an den Reporter - Auto-Thread '💬 Devlog <Datum>' unter jedem Devlog-Post (Setting, Default an) - Watchdog: prüft Setting watchdog_urls alle 2 min, DM an Admin nach 2 Fails in Folge + Entwarnung mit Downtime-Dauer - Setup-Seite: Bug-Repo, Threads-Toggle, Watchdog-URLs; Env GITEA_API_TOKEN/GITEA_URL Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+23
-1
@@ -8,7 +8,7 @@ import { existsSync } from 'node:fs';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
import { dirname, join } from 'node:path';
|
||||
import { config } from '../config.js';
|
||||
import { saveCommits, saveRelease } from '../db.js';
|
||||
import { saveCommits, saveRelease, takeBugReport } from '../db.js';
|
||||
import { commitFeedEnabled, branchAllowed, repoIgnored } from '../runtime-settings.js';
|
||||
import { postPushEmbed } from '../bot/commit-feed.js';
|
||||
import { postReleaseEmbed } from '../bot/release-feed.js';
|
||||
@@ -140,6 +140,28 @@ export async function startWebServer(client) {
|
||||
return { ok: true, release: release.tag, posted };
|
||||
}
|
||||
|
||||
// Issue geschlossen → Rückkanal-DM an den Discord-Reporter (/bug)
|
||||
if (event === 'issues') {
|
||||
const payload = request.body;
|
||||
if (payload.action === 'closed' && payload.issue?.number) {
|
||||
const repo = payload.repository?.full_name ?? '';
|
||||
const report = takeBugReport(repo, payload.issue.number);
|
||||
if (report) {
|
||||
try {
|
||||
const user = await client.users.fetch(report.discord_user_id);
|
||||
await user.send(
|
||||
`✅ Dein gemeldeter Bug **„${report.title}"** wurde behoben!\n` +
|
||||
`Issue [#${payload.issue.number}](${payload.issue.html_url ?? ''}) ist geschlossen — danke für den Report! 🙌`
|
||||
);
|
||||
request.log.info(`Bug-Report-DM an ${report.discord_user_id} (Issue #${payload.issue.number})`);
|
||||
} catch (error) {
|
||||
request.log.warn(`Bug-Report-DM fehlgeschlagen: ${error.message}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
return { ok: true, event: 'issues' };
|
||||
}
|
||||
|
||||
// Andere Events (Tag, Issue, …) freundlich ignorieren
|
||||
if (event !== 'push') {
|
||||
return { ok: true, ignored: event };
|
||||
|
||||
Reference in New Issue
Block a user