From dc59e5c1def2b26ffbe11f31e5d5275d8a4113b0 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 8 Apr 2026 17:30:12 +0000 Subject: [PATCH] Add /delserver documentation script Chronicler: #71 --- .../arbiter-3.0/scripts/add-delserver-docs.js | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 services/arbiter-3.0/scripts/add-delserver-docs.js diff --git a/services/arbiter-3.0/scripts/add-delserver-docs.js b/services/arbiter-3.0/scripts/add-delserver-docs.js new file mode 100644 index 0000000..3453bac --- /dev/null +++ b/services/arbiter-3.0/scripts/add-delserver-docs.js @@ -0,0 +1,109 @@ +#!/usr/bin/env node +/** + * Add /delserver documentation to #staff-commands + * + * Created: April 8, 2026 + * Chronicler: #71 + */ + +require('dotenv').config({ path: '/opt/arbiter-3.0/.env' }); +const { Client, GatewayIntentBits, ChannelType, EmbedBuilder } = require('discord.js'); + +async function main() { + console.log('📋 Adding /delserver to #staff-commands'); + console.log('======================================='); + + const client = new Client({ + intents: [GatewayIntentBits.Guilds] + }); + + try { + await client.login(process.env.DISCORD_BOT_TOKEN); + await new Promise(resolve => { + if (client.isReady()) resolve(); + else client.once('ready', resolve); + }); + console.log(`✅ Logged in as ${client.user.tag}`); + + const guild = client.guilds.cache.get(process.env.GUILD_ID); + await guild.channels.fetch(); + + // Find #staff-commands + const channel = guild.channels.cache.find( + ch => ch.name === 'staff-commands' + ); + + if (!channel) { + console.log('❌ #staff-commands not found!'); + return; + } + console.log(`✅ Found: #${channel.name}`); + + // /delserver command embed + const delServerEmbed = new EmbedBuilder() + .setColor(0xDC3545) // Red for danger/delete + .setTitle('🗑️ /delserver') + .setDescription('Permanently deletes a server setup including all channels and the role.') + .addFields( + { + name: '👥 Who Can Use', + value: 'Staff, Moderators, Trinity only', + inline: true + }, + { + name: '📍 Where to Use', + value: 'Any channel', + inline: true + }, + { + name: '📝 Usage', + value: '```/delserver name:Server Name confirm:True```', + inline: false + }, + { + name: '⚠️ Preview Mode', + value: `Running without \`confirm:True\` shows a preview: +\`\`\`/delserver name:Server Name\`\`\` +This lists what would be deleted without actually deleting anything.`, + inline: false + }, + { + name: '🗑️ What It Deletes', + value: `• All channels in the category (chat, in-game, forum, voice) +• The category itself +• The server role`, + inline: false + }, + { + name: '📋 After Running', + value: `Don't forget to: + +1. Remove the reaction emoji from <#1403980899464384572> +2. Remove the role mapping from Carl-bot`, + inline: false + }, + { + name: '💡 Notes', + value: `• Always preview first before confirming +• Give players at least 7 days notice before deleting +• This is permanent — there is no undo +• Forum posts and messages are lost forever`, + inline: false + } + ) + .setFooter({ text: 'The Arbiter • Firefrost Gaming' }); + + await channel.send({ embeds: [delServerEmbed] }); + console.log('✅ Posted /delserver documentation'); + + console.log(''); + console.log('✅ Done! Don\'t forget to pin it.'); + + } catch (error) { + console.error('❌ ERROR:', error.message); + } finally { + client.destroy(); + } +} + +main();