Rollen-Ping beim Devlog: Erwähnung + Abo-Button
- Setting devlog_ping_role_id (Rollen-Dropdown auf der Setup-Seite, leer = aus) - Devlog-Post erwähnt die Rolle (allowedMentions gescoped) und trägt einen 🔔-Button, über den Member die Rolle selbst an-/abmelden (ephemere Bestätigung) - API liefert vergebbare Rollen (ohne @everyone/managed), PUT validiert Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -10,7 +10,7 @@ import { join } from 'node:path';
|
||||
import { ActionRowBuilder, AttachmentBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder } from 'discord.js';
|
||||
import { config } from '../config.js';
|
||||
import { saveDevlog } from '../db.js';
|
||||
import { devlogChannelId } from '../runtime-settings.js';
|
||||
import { devlogChannelId, devlogPingRoleId } from '../runtime-settings.js';
|
||||
import { imagesDir } from '../bot/devlog-archive.js';
|
||||
|
||||
const BRAND_YELLOW = 0xf5c518;
|
||||
@@ -123,7 +123,7 @@ export function registerDevlogEndpoint(app, client) {
|
||||
}
|
||||
});
|
||||
|
||||
// Link-Buttons unterm Embed: Archiv-Seite + Repo
|
||||
// Link-Buttons unterm Embed: Archiv-Seite + Repo + Abo-Button für die Ping-Rolle
|
||||
const buttons = new ActionRowBuilder().addComponents(
|
||||
new ButtonBuilder().setStyle(ButtonStyle.Link).setLabel('Devlog-Archiv').setEmoji('🗂️').setURL(groupUrl)
|
||||
);
|
||||
@@ -133,7 +133,26 @@ export function registerDevlogEndpoint(app, client) {
|
||||
);
|
||||
}
|
||||
|
||||
const message = await channel.send({ embeds, files: attachments, components: [buttons] });
|
||||
// Ping-Rolle: Rolle erwähnen + Abo-Button anbieten (Setup-Seite)
|
||||
const pingRole = devlogPingRoleId();
|
||||
if (pingRole) {
|
||||
buttons.addComponents(
|
||||
new ButtonBuilder()
|
||||
.setStyle(ButtonStyle.Secondary)
|
||||
.setLabel('Benachrichtigungen')
|
||||
.setEmoji('🔔')
|
||||
.setCustomId('devlog_ping_toggle')
|
||||
);
|
||||
}
|
||||
|
||||
const message = await channel.send({
|
||||
embeds,
|
||||
files: attachments,
|
||||
components: [buttons],
|
||||
...(pingRole
|
||||
? { content: `<@&${pingRole}>`, allowedMentions: { roles: [pingRole] } }
|
||||
: {}),
|
||||
});
|
||||
|
||||
// Direkt archivieren (der Live-Listener ignoriert eigene Bot-Posts bewusst)
|
||||
const imageFiles = [];
|
||||
|
||||
Reference in New Issue
Block a user