Ally flow on Discord
The Ally pipeline is the canonical way for someone from a partner guild to apply as an ally on Discord. It's the structural twin of the Enlist flow — one applicant click opens a private review ticket, a reviewer runs a short wizard to verify which character they're applying as, and an archive transcript lands in a forum on close.
This page walks the whole pipeline from each role's seat — owner setting it up, ally applicant clicking the button, reviewer running the slash commands. The shape mirrors Enlist closely; the Differences from Enlist section near the end calls out what's Ally-specific.
Prerequisites
- The bot is paired to your AO Master guild — see Install + pair.
- Your guild is on Pro tier or above (the Alliance pipeline is tier-gated).
- The person setting it up either is the Discord server owner or holds the Manage Integrations permission in AO Master.
- One Discord role exists that will act as "reviewer" — anyone with that role can act on tickets. Create one in Discord first if you don't have it yet.
1. Owner — set up the Ally hub
The Ally hub gets provisioned from the same #⚙️-guild-settings channel as Enlist. The pinned Guild Settings message now has four buttons on the first row: [🔍 View Config] [🎯 Manage Enlist] [💰 Manage Regear] [🤝 Enable Ally].
Click the green 🤝 Enable Ally button. An ephemeral panel appears with a "Not set up" status and a single working button — ⚙ Setup.
Setup wizard (2 steps)
The wizard is identical in shape to the Enlist setup (same 2-step pattern documented on Enlist flow):
- Pick reviewer Discord roles — multi-select dropdown of your server's Discord roles with live member counts. The wizard refuses
@everyoneand managed bot roles. Anyone with one of the picked roles will see ally tickets and be allowed to run/ally review//ally reject//ally done. - Confirm — short confirmation card listing what gets created:
#🤝-ally-herechannel +🤝 Allycategory, plus the pinned[Apply as Ally]button. Click ✅ Confirm.
After ~5 seconds the panel re-renders into the full Manage Ally dashboard.
Manage Ally dashboard
The post-setup panel mirrors the Manage Enlist dashboard with the Ally-specific extras at the bottom. Buttons include:
- ⚙ Reconfigure — re-run the recruiter-role picker.
- ? Edit Questions — change the apply questions ally applicants are asked. (Shared editor; same questions show on the web
/ally/<code>page too.) - 📝 Edit Template / ✏️ Edit Ally Message / ✏️ Edit Ticket Message / ✏️ Edit Ally Button — customise the pinned message body, the welcome message inside each ticket, the button label.
- 📋 Map Ally Channel / 📂 Map Ticket Category — point the pinned button or new tickets at existing Discord channels / categories instead of the auto-created ones.
- 🚫 Pause Ally — stop accepting new applicants but keep tickets-in-flight open.
- 🔄 Refresh Pinned — re-render the pinned
[Apply as Ally]message in#🤝-ally-here. - 🎮 Auto-Name: OFF / ON — toggle the Discord nickname rename on approval (defaults ON).
- 🔧 Rebuild — auto-reject every pending ally applicant + wipe the
#🤝-ally-herechannel and🤝 Allycategory + recreate them fresh. Reviewer roles + message customisations are preserved. - 🗑 Disable Ally — clear the entire Ally Discord-side config. The Discord channels stay but become un-managed. Reversible by re-running setup.
Each setting can also be edited on the web at #Discord Integration → Integrations → Ally (see Discord Integration). Changes sync both ways in real time.
2. Ally applicant — click [Apply as Ally]
For everyone outside the guild, the only channel they can see inside the 🤝 Ally category is #🤝-ally-here. The pinned message has the [Apply as Ally] button (or your custom label).
When an applicant clicks the button:
- The bot creates a private channel named per the Ticket channel name template (default
🤝-ally-<discord-username>). Only the applicant + reviewer roles can see it. - The bot posts the Welcome message at the top of the ticket — the host's customised intro + any apply questions the host has set.
- The bot replies with an ephemeral nudge directing the applicant to answer the questions in the ticket.
The applicant types their answers as regular Discord messages. Reviewers see those messages in the ticket; the answers are not stored in the AO Master database (they live in the Discord transcript only).
3. Reviewer — /ally review, /ally reject, /ally done
Three slash commands cover the entire reviewer side. All three are gated on the reviewer roles set in the Manage Ally panel.
/ally review
Run inside an ally ticket channel. Opens a wizard:
- Pick character from alliance — a dropdown listing characters from your alliance partners. The applicant declares which character they're applying as; the picker is scoped to alliance partner guilds so a reviewer can't accidentally approve someone from a non-partner guild.
- Confirm — a summary card shows the picked character + their home partner guild (resolved live from Albion's API). Click ✅ Confirm.
On confirm:
- The ally row is added to
#Allieson the AO Master web side (status: Linked). - The bot adds the AO Ally role to the applicant's Discord account (auto-created the first time you enable Ally; coloured to match the Ally Role chip you configured).
- If a Partner Role mapping exists for the picked home guild, the bot also grants that role (e.g. an applicant from "Cozy Chilipi" gets both AO Ally + a Cozy Chilipi role).
- If Auto-Name is ON, the bot renames the applicant's Discord nickname to match the picked Albion character.
/ally reject
Run anywhere reviewers can post (typically inside the ticket). Usage:
/ally reject user:@<applicant> reason:<optional reason>- The applicant's pending join request flips to Rejected.
- The bot DMs the applicant with the reason (or a default one if you skipped it).
- The ticket closes immediately; the transcript is NOT archived (reject closures skip the archive forum by design — rejected tickets are noise).
/ally done
Run inside the ticket AFTER /ally review has approved the applicant. Two things happen:
- The full ticket conversation is mirrored — with original author names + avatars + every attached file — into a private forum thread inside the
🗄-ally-archiveforum channel. The forum + the webhook the bot uses to post into it are created automatically the first time/ally doneruns (a guild that never archives doesn't carry an empty forum around). - The ticket channel is deleted.
The archive thread title matches the ticket channel name so reviewers can search the forum later by username.
4. Differences from Enlist
The two flows share the structural backbone, but Ally has a few twists that don't exist on the Enlist side:
| Aspect | Enlist | Ally |
|---|---|---|
| Tier gate | Free tier and up | Pro tier and up |
| Character picker | Free-text search across Albion | Alliance roster picker (scoped to partner guilds) |
| Role grant on approval | Discord role from mapping table | AO Ally universal role + optional Partner Role based on home guild |
| Visual marker on web | Regular AO Master role | Ally Role chip (label + colour) |
| Roster channel on web | #Members | #Allies |
| Defection cron | n/a | Daily check; flips status to Left alliance when ally's home guild leaves the alliance — see Ally Role Sync |
| Slash commands | /enlist review, /enlist reject, /enlist done | /ally review, /ally reject, /ally done |
| Pinned channel default | #📋-enlist-here | #🤝-ally-here |
| Ticket channel prefix | 🎯-enlist-… | 🤝-ally-… |
| Archive forum | apply-archive | 🗄-ally-archive |
Everything not in the table works the same way — same setup wizard shape, same panel layout, same archive transcript flow, same Pause / Rebuild / Disable semantics.
5. When the Alliance feature is "held"
Alliance is tier-gated to Pro. If your guild drops from Pro to a lower tier (subscription expires, downgrade), the pipeline enters hold mode:
- The 🤝 Enable Ally button on
#⚙️-guild-settingsis replaced with a greyed[🔒 Alliance — Pro tier needed]state. - Existing ally tickets stay open but no new applicants can apply.
- The defection cron pauses (your roster doesn't churn just because you dropped a tier).
- Existing allies keep their AO Ally role and roster row.
Restoring Pro tier flips the pipeline back to active automatically — no re-setup needed.
6. Web-side mirror
Every setting on the Manage Ally Discord panel also lives at #Discord Integration → Integrations → Ally on the web (see Discord Integration). The cross-surface settings (Receive new applicants toggle, Custom apply questions, Ally Role chip) live at Settings → Recruitment (Ally outer tab) and are also surfaced on the Discord Integration Ally sub-page under a Related settings card.
Pick whichever surface is convenient — they sync in real time over the same channel.
Cross-links
- Enlist flow on Discord — the member-side equivalent (with full per-step Discord screenshots; the Ally shape mirrors them).
- Settings → Recruitment — Ally outer tab (apply questions + Ally Role chip + invite codes).
- Discord Integration — paired-state hub (Ally sub-page lives under the Integrations tab).
- #Allies channel reference — the host-side roster page.
- Members — Alliance — the applicant-side view.
- Discord — Slash command appendix — full reference of every slash command, including
/ally review//ally reject//ally done.