Numbering
Number your rooms sequentially using whatever style you like.
| Token | What it does | Example |
|---|---|---|
## | Room number with a hash in front | #2 |
$# | Room number on its own, with no hash in front | 2 |
$0# | Zero-padded room number. Add more zeros for more padding. | 02 (or 002 with $00#) |
+# | Room number as a Roman numeral | II |
@@nato@@ | NATO phonetic word for the room number. It wraps past 26 with a cycle number. | Bravo |
<<singular/plural>> | Singular when exactly one member is in the room, plural otherwise. Use a \ instead to count members without the owner, or a | to count players in the biggest rich-presence party. | plural |
People
Templates based on who's in the room.
| Token | What it does | Example |
|---|---|---|
@@owner@@ | The room owner's display name, or the custom name they set with /nick. @@creator@@ is an older name for the same token and still works. | Pixel |
@@original_creator@@ | Whoever first made the room, even after someone else has taken it over. AVC hands a room to the longest-present member when the owner leaves, and this token keeps naming the person it was made for | Pixel |
@@num@@ | How many members are in the room, bots aside | 4 |
@@num_others@@ | How many members are in the room, not counting the owner | 3 |
@@num_live@@ | How many people in the room are streaming, by Go Live or on an outside site | 2 |
@@limit@@ | The room's user limit, or 0 when it has none. Follows /limit live | 5 |
@@slots@@ | How many free places are left. Blank on a room with no limit, because "0 spots left" would be wrong. Guard it with {{@@limit@@>=1 ?? โฆ}} | 2 |
Games and streams
Your room can show what's happening inside it.
| Token | What it does | Example |
|---|---|---|
@@game_name@@ | The room's representative game, run through aliases | LoL |
@@stream_name@@ | The owner's stream title while they are live, and empty otherwise | ranked grind, day 3 |
@@num_playing@@ | How many people are in the game's party, or playing it if there is no party | 3 |
When two games tie, @@game_name@@ shows both, and three or more falls back to your "no game" label, "General" by default. To name the room after a single game instead, whatever the tie, open /setup and pick Tied games under More settings. AVC then picks the room owner's game when they are playing one of the tied games, and one of the tied games otherwise. Shorten long names with /alias.
If someone is not sharing their activity on Discord, AVC cannot see it either. See Troubleshooting.
Rich presence
Some games publish extra detail through Discord's rich presence, like party size, what you are queued for, or which map you are on. When the room's game has more than one party, AVC reports the biggest one. When two games are tied, these describe one of them. A three-way tie leaves them empty, because the name does not identify a game either.
| Token | What it does | Example |
|---|---|---|
@@party_size@@ | The party's maximum size. If the game does not say, it falls back to the room's user limit. | 5 |
@@party_state@@ | The party's state line straight from the game | In a Group |
@@party_details@@ | The party's details line straight from the game | Competitive, Dust II |
Date and time
Room names can follow the clock. Set your server's time zone first: run /setup, open More settings and pick Time zone. Until you do, these render in UTC.
| Token | What it does | Example |
|---|---|---|
@@weekday@@ | The day of the week, in English | Friday |
@@month@@ | The month, in English | September |
@@hour@@ | The hour on a 24-hour clock, 0 to 23. Compares as a number, so {{@@hour@@>=18 ?? ๐ Evening // โ๏ธ Daytime}} works | 21 |
Nothing finer than the hour. Against the rename limit above, @@hour@@ spends one rename an hour keeping itself current and @@weekday@@ one a day. For anything faster, use the voice status, which is not rate-limited.
Random picks
| Token | What it does | Example |
|---|---|---|
@@random_emoji@@ | A random emoji, picked once per room from the seed so it stays put for good. The default template uses one. | ๐ฆ |
[[a/b/c]] | Picks one option at random, fixed once per room and never re-rolled | b |
[[list:name]] | Picks from a named list you set up in /setup/More settings, so the options live on the server instead of in the template. Handy past a handful of choices, and for reusing one set across several templates | otter |
Randomness is rolled once per room, from a seed stored when the room is created.
Resting and in use
Point /template at an existing standalone voice channel and you can give it two names at once: a resting name for when it sits empty, and a busy name for when someone is in it. Write them as __resting/in use__ and AVC swaps between them as people come and go. Only the first / splits the two sides, so the busy side can still contain slashes, and tokens inside either side fill in as normal.
For example, __๐ค Chill Zone/๐ฎ @@game_name@@__ shows ๐ค Chill Zone while the channel is empty and ๐ฎ Halo once someone joins and starts playing.
Conditionals
The {{condition ?? yes // no}} form shows one thing when a condition holds and another when it does not. The // no branch is optional. Leave it off and the whole block just disappears when the condition is false. Conditions can also compare, so {{PLAYERS >= 4 ?? full squad}} works, with <, >, <=, >=, = and != all supported. Blocks nest, and they resolve from the innermost one out, so a false branch can itself be another condition, building a fallback chain.
For example, {{ROLE:123456... ?? โญ // {{LIVE ?? ๐ด // ๐ง}}}} shows โญ for anyone with that role, otherwise falls through to the nested condition: ๐ด if the owner is live, or ๐ง if neither applies.
| Condition | True when | Example |
|---|---|---|
PLAYING | Someone in the room is playing a game, so it is not on the "no game" label | {{PLAYING ?? ๐ฎ // ๐ค}} |
LIVE | The owner is streaming, whether Discord Go Live or an external stream | {{LIVE ?? ๐ด // ๐ง}} |
LIVE_DISCORD | The owner is screen sharing in the room with Discord Go Live | {{LIVE_DISCORD ?? ๐บ}} |
LIVE_EXTERNAL | The owner is streaming on an outside site like Twitch | {{LIVE_EXTERNAL ?? ๐ฃ}} |
ROLE:id | The owner has the role with that id | {{ROLE:123456... ?? โญ VIP room}} |
GAME | Matches the game name. Use : for "contains", or =/!= for an exact match | {{GAME:Call of Duty ?? ๐ซ}} also matches "Call of Duty: Modern Warfare", but {{GAME=Call of Duty ?? ๐ซ}} only matches that exact title |
PLAYERS | Compares against the number of people in the party | {{PLAYERS >= 5 ?? stacked}} |
MAX | Compares against the party's maximum size | {{MAX = 5 ?? 5-stack lobby}} |
RICH | The game is publishing rich-presence detail | {{RICH ?? @@party_details@@ // @@game_name@@}} |
FULL | The room has a limit and is at or over it. A room with no limit is never full | {{FULL ?? ๐ฅ // @@slots@@ free}} |
WEEKEND | It is Saturday or Sunday in your server's time zone. Those two days everywhere, so a Friday and Saturday weekend needs {{WEEKDAY=Friday ?? โฆ}} instead | {{WEEKEND ?? ๐ // ๐ง}} |
WEEKDAY | Matches the day name. : for "contains", = for exact | {{WEEKDAY=Wednesday ?? ๐ธ raid night}} |
MONTH | Matches the month name, the same way | {{MONTH=December ?? ๐}} |
PRIVATE | The room is locked with /private. Always false on a standalone channel, which has no lock | {{PRIVATE ?? ๐ // ๐}} |
ANY_LIVE | Anyone in the room is streaming, where LIVE asks only about the owner | {{ANY_LIVE ?? ๐ด }}@@game_name@@ |
ANY_ROLE:id | Anyone in the room has that role, where ROLE asks only about the owner | {{ANY_ROLE:123456... ?? ๐ก๏ธ a mod is here}} |
MEMBER:id | That specific person is in the room | {{MEMBER:998877... ?? ๐ }}@@owner@@ |
OWNER:id | That specific person owns the room, so their rooms can be named differently from everyone else's. Bare, {{OWNER ?? โฆ}} is true while the room has an owner present | {{OWNER:998877... ?? ๐ Greg's lounge // @@owner@@'s room}}{{OWNER ?? @@owner@@'s room // Open room}} |
What can go on the left
A condition tests a variable from the table above, a plain number, or one of the counting tokens: @@num@@, @@num_others@@, @@num_playing@@, @@num_live@@, @@party_size@@, @@limit@@, @@slots@@, @@hour@@ and $# (with its padded forms). So {{@@num@@ >= 5 ?? busy}} works, and you can compare two of them: {{@@num@@ >= @@limit@@ ?? full}}.
Test a person by user ID, not by name. Display names change and people set their own, so there is deliberately no way to compare against one. {{OWNER:id}} and {{ROLE:id}} are the robust forms.
Two traps. ## and +# render #4 and IV, not a bare number, so compare with $#. And @@owner@@, @@original_creator@@, @@game_name@@ and @@stream_name@@ fill in after conditions resolve, so they never match: use OWNER and GAME. Anything unrecognised is quietly false, so try a new condition in the playground above.
Prefer {{FULL ?? โฆ}} to {{@@num@@ >= @@limit@@ ?? โฆ}}. An unlimited room has @@limit@@ of 0, so the comparison calls an empty room full. FULL knows better.
Styling text
Wrap any part of a name in ""mode:text"" to restyle it. The tokens inside are filled in first, then the style is applied to the result, so ""caps:@@game_name@@"" shouts whatever game is on. Chain styles with a + to run them in order, like ""lower+scaps:..."". An unknown style just leaves the text as it was, so a typo never breaks a name.
| Mode | What it does | Example |
|---|---|---|
upper / caps | UPPERCASE | ""caps:squad"" becomes SQUAD |
lower | lowercase | ""lower:LOUD ROOM"" becomes loud room |
title | Title Case On Each Word | ""title:the war room"" becomes The War Room |
swap | Swaps the case of every letter | ""swap:HeLLo"" becomes hEllO |
scaps | Small caps. Only lowercase letters convert, so pair it as lower+scaps. | ""lower+scaps:crew"" becomes แดสแดแดก |
spaces | Trims the ends and collapses repeated spaces into one | ""spaces:too many gaps"" becomes too many gaps |
acro | Keeps only the first letter of each word | ""acro:deep rock galactic"" becomes drg |
remshort | Drops little filler words (a, an, and, at, by, from, in, is, of, on, or, the, to) | ""remshort:the king of the hill"" becomes king hill |
<N>w | Keeps the first N words, so 2w keeps two | ""2w:ranked grind day three"" becomes ranked grind |
rand | Randomised upper and lower case, fixed once so it never re-shuffles | ""rand:chaos"" becomes cHaOs |
uwu | uwu speak | ""uwu:really cool"" becomes weawwy coow |
usd | Turns the text upside down | ""usd:goblins"" becomes suแดlqoฦ |
There are also thirteen fancy lettering styles that swap the alphabet for a Unicode font: bold, italic, bolditalic, script, boldscript, fraktur, boldfraktur, double, sans, boldsans, italicsans, bolditalicsans, and mono. They look striking but are harder to read, so save them for a name that really wants to stand out.
Worked examples
Here is what real templates actually turn into, mid-session:
| Template | Becomes |
|---|---|
@@game_name@@ ## | Apex #3 |
@@owner@@'s [[den/lair/hangout]] | Pixel's lair, and it stays "lair" for good |
@@nato@@ ยท @@num@@ <<person/people>> | Charlie ยท 4 people |
{{LIVE ?? ๐ด @@stream_name@@ // @@game_name@@ ##}} | ๐ด ranked grind, day 3 while streaming, and CS:GO #1 otherwise |
@@game_name@@ {{RICH ?? (@@num_playing@@/@@party_size@@)}} | Valorant (3/5), and the party bit vanishes for games without rich presence |
""lower+scaps:@@owner@@'s crew"" | แดษดแดขแด'๊ฑ แดสแดแดก for an owner named Onza |
{{PLAYING ?? @@game_name@@ ## // @@owner@@'s room}} | Apex #3 while a game is on, and Pixel's room when the room is just hanging out |
Edit any of this live with /template. It shows you a preview of the rendered name before you commit.