---
task_number: 98
status: open
priority: P2
owner: Holly
created: 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

```javascript
// 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** 🔥❄️
