Files
firefrost-operations-manual/docs/tasks/task-098-discord-channel-automation.md
Claude b38f08189e feat: Add task_number to YAML frontmatter for 26 tasks
Long-term fix for mobile task index - task numbers now in frontmatter.

Numbers added from BACKLOG.md cross-reference:
#2 rank-system-deployment
#3 fire-frost-holdings-restructuring
#14 vaultwarden-ssh-setup
#22 netdata-deployment
#23 department-structure
#26 modpack-version-checker
#32 terraria-branding-training-arc
#35 pokerole-wikijs-deployment
#36 notebooklm-integration
#40 world-backup-automation
#44 nc1-node-usage-stats
#45 steam-and-state-server
#48 n8n-rebuild
#51 ignis-protocol
#55 discord-invite-setup
#65 claude-infrastructure-access
#67 nc1-security-monitoring
#82 plane-decommissioning
#87 arbiter-2-1-cancellation-flow
#89 staff-portal-consolidation
#90 decap-tasks-collection
#91 server-matrix-node-fix
#92 desktop-mcp
#93 trinity-codex
#94 global-restart-scheduler
#98 discord-channel-automation
#99 claude-projects-architecture

Chronicler #69
2026-04-08 14:32:38 +00:00

5.1 KiB

task_number, status, priority, owner, created
task_number status priority owner created
98 open P2 Holly 2026-04-07

Task #98: Discord Server Channel Automation

Created: April 7, 2026
Created By: Chronicler #66
Owner: Holly (primary beneficiary), Michael (implementation)
Priority: MEDIUM
Status: Backlog


task_number: 98

Problem

When a new Minecraft server is added, Holly must manually create:

  1. A category named after the server
  2. Text channel: chat
  3. Text channel: in-game-chat
  4. Forum channel: forum
  5. Voice channel: voice
  6. Set permissions on all channels
  7. Position everything under the Servers category
  8. Create a server role for reaction-role assignment
  9. Add reaction emoji to the role selection message

With 20 servers, this is 100+ manual actions. Each new server adds 7 more.


task_number: 98

Solution

Automate Discord channel creation via the Discord API.

Trigger options (pick one):

Option Trigger Complexity
A Bot command: !createserver "Stoneblock 4" Low
B Trinity Console button when adding server Medium
C Automatic when server added to Pterodactyl High

Recommendation: Start with Option A (bot command) — fastest to implement, Holly can use immediately.


task_number: 98

Technical Requirements

Discord Bot Permissions Needed:

  • Manage Channels
  • Manage Roles
  • Add Reactions (for role selection message)

Arbiter already has a Discord bot — just needs these permissions granted in Discord server settings.

API Endpoints:

  • POST /guilds/{guild.id}/channels — Create channel
  • PATCH /channels/{channel.id} — Modify channel (position, permissions)
  • DELETE /channels/{channel.id} — Delete channel (for retirement)
  • POST /guilds/{guild.id}/roles — Create role
  • DELETE /guilds/{guild.id}/roles/{role.id} — Delete role (for retirement)
  • PUT /channels/{channel.id}/messages/{message.id}/reactions/{emoji}/@me — Add reaction to role selection message

Channel Types:

  • 0 = Text (chat, in-game-chat)
  • 2 = Voice
  • 4 = Category
  • 15 = Forum

task_number: 98

Implementation Outline

// Pseudocode for !createserver command
async function createServerChannels(serverName, emoji) {
  const guild = /* get guild */;
  const serversCategory = /* find "Servers" category */;
  const roleSelectionChannelId = /* role selection channel */;
  const roleSelectionMessageId = /* the reaction role message */;
  
  // 1. Create role for this server
  const role = await guild.roles.create({
    name: serverName,
    mentionable: true,
    reason: `Server role for ${serverName}`
  });
  
  // 2. Create category for this server
  const category = await guild.channels.create({
    name: serverName,
    type: 4, // Category
    parent: serversCategory.id
  });
  
  // 3. Create channels under category
  const channels = [
    { name: 'chat', type: 0 },
    { name: 'in-game-chat', type: 0 },
    { name: 'forum', type: 15 },
    { name: 'voice', type: 2 }
  ];
  
  for (const ch of channels) {
    await guild.channels.create({
      name: ch.name,
      type: ch.type,
      parent: category.id
    });
  }
  
  // 4. Add reaction to role selection message
  const roleChannel = await guild.channels.fetch(roleSelectionChannelId);
  const roleMessage = await roleChannel.messages.fetch(roleSelectionMessageId);
  await roleMessage.react(emoji);
  
  // 5. Configure reaction role bot (Carl-bot API or manual step)
  // Note: May require manual mapping in bot dashboard
  
  return `Created ${serverName}: role + category + 4 channels + reaction`;
}

Command syntax:

!createserver "Stoneblock 4" 🪨
!deleteserver "Stoneblock 4"

task_number: 98

Future Enhancements

  1. Discord-Minecraft integration: in-game-chat channel planned to connect to Minecraft via a mod (e.g., Discord Integration, dclink, or similar Forge/NeoForge mod)
  2. Permission templates: Auto-apply role permissions (subscribers only, etc.)
  3. Trinity Console integration: Button in admin panel instead of bot command
  4. Carl-bot API integration: Auto-configure reaction role mapping (if API available)

task_number: 98

Acceptance Criteria

  • Holly can type !createserver "Server Name" 🎮 in Discord
  • Bot creates server role with matching name
  • Bot creates category + 4 channels with correct types
  • Channels appear under the Servers category
  • Bot adds emoji reaction to role selection message
  • Permissions match existing manual setup
  • !deleteserver "Server Name" removes role + all channels

task_number: 98

Notes

  • All 4 channels have the same permissions (confirmed by Michael)
  • Delete command removes both role AND channels for server retirement
  • in-game-chat Discord-Minecraft integration is planned (needs Forge/NeoForge mod, not plugin)
  • Carl-bot reaction role mapping may still require manual step in dashboard unless API is available
  • Role selection message location: TBD (needs channel ID and message ID configured)
  • This is a quality-of-life improvement for Holly, not a launch blocker

task_number: 98

Fire + Frost + Foundation = Where Love Builds Legacy 🔥❄️