Ticket-System, Web-Composer und Nachrichten-Bearbeitung

- Tickets: /ticket-setup postet 🎫-Button; Klick erstellt privaten Thread
  (ein offenes Ticket pro User), Schließen-Button sperrt + archiviert
- Composer auf der Setup-Seite: Nachricht/Embed als Bot in beliebigen Kanal
  senden oder per Message-ID bearbeiten (nur eigene Bot-Posts)
- API v1: PATCH /api/v1/message — Skripte können ihre Bot-Posts aktualisieren
- Setting ticket_channel_id; README ergänzt

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-23 13:43:27 +02:00
co-authored by Claude Opus 4.8
parent f631c0e2ab
commit 4d1b0a956d
9 changed files with 310 additions and 4 deletions
+42
View File
@@ -0,0 +1,42 @@
// /ticket-setup — postet das Ticket-Embed mit 🎫-Button in den aktuellen Kanal (Admin)
import {
SlashCommandBuilder, PermissionFlagsBits, MessageFlags,
ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder,
} from 'discord.js';
import { ticketChannelId } from '../../runtime-settings.js';
export const data = new SlashCommandBuilder()
.setName('ticket-setup')
.setDescription('Postet das Ticket-Embed mit Button in diesen Kanal')
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator);
export async function execute(interaction) {
if (!ticketChannelId()) {
await interaction.reply({
content: '❌ Erst auf der Setup-Seite einen Ticket-Kanal wählen.',
flags: MessageFlags.Ephemeral,
});
return;
}
const embed = new EmbedBuilder()
.setColor(0xf5c518)
.setTitle('🎫 Support-Ticket')
.setDescription(
'Du hast eine Frage, ein Problem oder ein privates Anliegen?\n\n' +
'Klick auf den Button — es öffnet sich ein **privater Thread**, ' +
'den nur du und das Team sehen können.'
)
.setFooter({ text: 'D4RKST3R // SUPPORT' });
const row = new ActionRowBuilder().addComponents(
new ButtonBuilder()
.setCustomId('ticket_create')
.setStyle(ButtonStyle.Primary)
.setLabel('Ticket erstellen')
.setEmoji('🎫')
);
await interaction.channel.send({ embeds: [embed], components: [row] });
await interaction.reply({ content: '✅ Ticket-Post erstellt.', flags: MessageFlags.Ephemeral });
}