Files
firefrost-operations-manual/docs/tasks/task-098-discord-channel-automation.md
Claude 6685b7dbcf Task #98: Add role automation to scope
- Create/delete server roles alongside channels
- Add reaction to role selection message
- Updated command syntax: !createserver "Name" 🎮
- Delete command now removes role + channels

Chronicler #66
2026-04-07 19:31:55 +00:00

4.9 KiB

Task #98: Discord Server Channel Automation

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


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.


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.


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

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"

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)

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

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

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