Teams
Teams are a core platform primitive: membership, roles, forums, notifications, moderation and the Discord integrations are all core’s, and none of it knows what a Team is in your game.
Core cannot create a Team. Teams arrive from the installed module — with the uo
module, they are the shard’s guilds. On a deployment with no module, the Team machinery is
present and permanently empty. That is not a bug to work around; it is the contract that
lets the same forum, notification and moderation code serve any game.
The projection, and why it can be stale
Section titled “The projection, and why it can be stale”Admin → Teams shows a sync panel per module: last attempt, last success, consecutive failures and the last error, with Sync now and Resync now.
The wording on that panel is exact and worth reading:
Core has never had an answer it could trust. What is shown below is not a confirmed empty shard.
An empty list therefore means one of two very different things — there are no Teams, or
nobody could ask. The panel tells you which, and a last success: never with a last
error of no uo-link configured is the second. Fix
the shard connection and sync again.
Forums
Section titled “Forums”Team forums are switched on site-wide in Settings, along with whether images are allowed and how long an author may edit a post — see Configuration.
Two rules are structural rather than settings:
- A Team’s leaders moderate their own forum. That is the point of a Team forum.
- Reports about that forum do not go to them. They go to site staff, because a report about a leader has to reach someone above them. See Moderation.
Team notification emails
Section titled “Team notification emails”Team emails are sent by the engagement rules, and they arrive switched off.
Someone posting in a Team forum used to send mail with no configuration at all. It now goes through the same engine as everything else the site sends: the forum post raises an event, an engagement rule decides who is told and through which message template, and the outbox delivers it. Push notifications to the app and the Discord bridge below are unaffected — only the email moved.
The practical consequence on an existing site: nobody gets Team email until you turn a rule on. Open Admin → Engagement → Rules. Four rules are waiting there, one per Team event, all switched off, and the screen says so at the top for as long as they all are. Switch on the ones your site wants.
| Rule | Sends when |
|---|---|
| Team forum posts | someone posts a new thread or reply |
| Team announcements | a leader posts an announcement |
| Team — new member | someone joins, at most once an hour per person |
| Team — leadership change | a new leader is named, at most once an hour per person |
The first two are the ones most sites want. The last two describe things that already show up on the Team’s activity feed and arrive from a sweep rather than from a person doing something — which is why they ship off and with a cooldown.
Digests are re-read at the moment they are sent, not assembled as posts arrive. A site that was down for two days sends one digest rather than two days of backlog, a post a moderator hid is not in it, and somebody who lost access to a forum between the post and the send does not receive it.
Unsubscribe links keep working. A link in mail sent before this change still does what it says. What changed is that it is now precise: it stops the emails it came with and leaves that Team’s push notifications alone, where before it silenced both.
You can change what any of these messages say — see Message templates — decide which of them are sent at all under Engagement rules, and see who was actually sent what in Admin → Engagement → Send log.
The Discord bridges
Section titled “The Discord bridges”Two integrations, both optional, both configured from Admin → Teams.
Notification bridge — sends Team notifications to a Discord channel: a default for every Team, overridable per Team. A message is sent once and never retried; the bridge is a courtesy, and nothing on the site depends on it arriving. With nothing configured, no Team event leaves the site.
Voice channels — gives each Team a Discord voice channel of its own, with access granted by a per-Team role, so a Team’s members can see and join theirs and nobody else can. It needs the bot reachable, and members need a linked Discord account and guild membership.
Its three settings deserve a thought each:
| Setting | What it decides |
|---|---|
| Minimum members | How large a Team must be to get a channel. Every active member counts, linked account or not. |
| Grace window (days) | How long a Team keeps its channel after it stops qualifying. A Team that recovers inside the window keeps the same channel; zero removes it on the next pass. |
| Staff roles | Roles that can see and join every Team’s channel. Guild administrators already can, so this is for staff who are not administrators. |