Modules
Tags
Saved replies anyone can call up by name, with placeholders, embeds and layouts, that can also answer by themselves when a message has a word, a phrase or a pattern.
A tag is a saved reply: your rules, the server's address, how to get a role, a link members keep asking for. Write it once, and anyone can call it up by its name: d!tag rules. Dexy answers with what the tag says, filled in for whoever asked.
A tag can also answer by itself. Give it triggers (a word, a phrase or a pattern), and when a member's message matches one, Dexy answers with the tag without anyone typing a command. One module does both: saved replies and auto-responses.
Tags is on in a new server, but it does nothing until someone makes a tag. It's free.
Limits#
- 1,000 tags per server. Other names don't count.
- 30 of them can answer by themselves.
- 5 other names and 5 triggers per tag.
- 2,000 characters for a text tag, after its placeholders are filled in.
- Each member can own 15 tags by default (you pick 1 to 1,000). Moderators aren't limited.
Make one#
d!tag create on its own asks for everything in a form: the name, what it says, other names, and whether it's text or an embed. The tag is made, and its editor opens in the same message:
- What it says (and Pictures, for an embed) opens a form with the tag's text in it, ready to change.
- Rename changes the name and the other names.
- Triggers, Who and where and How it answers each open their own page, with buttons and pickers for every rule.
- Try it shows you the answer, filled in for you, where only you can see it. Make it an embed and Make it text switch the look. Delete asks first.
d!tag edit rules opens the same editor for a tag you can change, and d!tag delete rules asks before deleting. The editor keeps working after Dexy restarts. Layouts are built on the dashboard.
In one line, the name comes first, then what the tag says:
d!tag create rules **Server rules** 1. Be kind. 2. No spam. 3. Keep it in the right channel.
d!tag rules
d!tag create rules **Server rules** 1. Be kind. 2. No spam. 3. Keep it in the right channel.
d!tag rules
Names with spaces#
A name can be up to 5 words, like server ip. Members type it after tag: d!tag server ip. When two names start the same way, the longest one wins: with the tags alolan and alolan muk, d!tag alolan muk hi is alolan muk with "hi" after it.
To make or rename a tag in one line, put a name with spaces in quotes: d!tag create "server ip" play.example.net. A name can't start with one of the tag command's own words (info, list, create and the rest), since d!tag info … is the info command.
On the dashboard:
- Open Tags and press New tag.
- Called with: the tag's name: up to 5 words of letters, numbers,
-,_and., likerulesorserver ip. Add other names it answers to as well, with commas between them. - What it says: write the answer, or switch it to an embed (or, on Discord, a layout you build).
- Add triggers if it should answer by itself, and rules if only some members, some channels or a cooldown should apply.
- Press Make the tag.
The preview beside the editor shows the answer as it will look. Type some words in Try it with to see the placeholders filled in for them.
What a tag looks like#
| Look | What it is |
|---|---|
| Text | A message: markdown, up to 2,000 characters. |
| Embed | A card with a title, a description, a colour, a picture, a thumbnail and a footer, with optional text above it. |
| Layout | A Components V2 message you build part by part: containers, sections with pictures or link buttons, text, galleries, separators and link buttons. It works like the layout builder in Reaction Roles. |
Placeholders work in every part: the text, the embed's title, description and footer, its picture links, and a layout's texts and links.
Fluxer has no Components V2, so tags there are text or an embed.
Placeholders#
A tag fills these in each time it's used. The Placeholders page has every one with examples, how if / else compares, and recipes to copy; in chat, d!tag placeholders lists them (on Discord, the editor's Placeholders button too).
| Placeholder | Becomes |
|---|---|
{user} | The member who used the tag, pinged. |
{username} · {displayname} | Their username, and the name they show in the server. |
{user.id} · {user.avatar} | Their ID, and a link to their avatar. |
{reply} | The member whose message they replied to, pinged. Empty when the tag wasn't used in a reply. {reply.name} and {reply.id} too. |
{target} | The member replied to, else the first member named after the tag's name, else the member who used it. {target.name} and {target.id} too. |
{server} · {server.id} · {membercount} | The server's name, its ID and how many members it has. |
{channel} · {channel.name} · {channel.id} | The channel, as a link, its name and its ID. |
{args} | Everything typed after the tag's name. |
{1} to {9} | One word typed after the name: {1} the first, {2} the second. "Quoted words" count as one. |
{tag} · {uses} | The tag's name, and how many times it has been used, this time included. |
{date} · {timestamp} | Today's date, and now as a Unix time (<t:{timestamp}:R> shows it in each reader's own time). |
Anything else in braces is left exactly as typed. The editor and d!tag create say so, in case it's a typo.
Pings#
{user} and {reply} ping their member. Other members a tag names (like someone typed after its name) ping only when the tag's Ping the other members it names rule is on. Roles, @everyone and @here never ping, and mentions inside an embed never do.
Answering someone for you#
To point a member to a tag, reply to their message with it: d!tag rules as a reply. Dexy answers their message, pings them, and {reply} is them. Turn Answer the message they replied to off for a tag to make it always answer whoever used it.
d!tag create rules {if:{reply}|Hey {reply}, here are the rules:|Here are the rules:} 1. Be kind. 2. No spam.
d!tag create rules {if:{reply}|Hey {reply}, here are the rules:|Here are the rules:} 1. Be kind. 2. No spam.
Choices and conditions#
The full rules, with recipes, are on Placeholders.
| Write | Does |
|---|---|
{random:Heads|Tails} | Picks one of the choices each time. |
{range:1-6} | A whole number from 1 to 6. |
{if:{1}==yes|Great!|Maybe next time} | The first text when the condition holds, else the second (which you can leave out). |
{upper:{1}} · {lower:{args}} | The text in capitals, or in small letters. |
A condition compares with ==, !=, >, <, >= or <= (as numbers when both sides are numbers), or contains. With no comparison, it holds when the text isn't empty. Parts can sit inside each other: {if:{args}|Hi {1}!|Say a name after the tag}.
What members type after the name is put in as it is: it's never read as a placeholder. Tags never run commands or code.
Answering by itself#
Triggers make a tag an auto-response. Capitals never matter.
| Trigger | A message matches when |
|---|---|
Word (word) | It has the word or phrase on its own: hi answers "hi all", not "this". |
Contains (contains) | It has those letters anywhere, even inside a word. |
Starts with (starts) | It starts with them. |
Is exactly (exact) | It's just that, and nothing else. |
Pattern (regex) | A regular expression matches it. |
Patterns are for experts. Dexy refuses a pattern that could take too long on some messages (a repeat inside a repeat like (a+)+, a repeated choice like (a|ab)*, or a back-reference), and only reads the first 500 characters of a message with it.
Dexy never answers bots, webhooks, or messages that start with the server's prefix (those are commands). By default one message gets one answer: the oldest matching tag answers. You can allow up to 3 under Who makes tags, and pick channels where tags never answer by themselves. A tag that answers by itself still works by name.
d!tag trigger add ip contains server ip
d!tag trigger add ip word ip?
d!tag trigger ip
d!tag trigger add ip contains server ip
d!tag trigger add ip word ip?
d!tag trigger ip
Adding triggers needs Manage Messages, so only moderators decide what Dexy answers by itself.
Rules#
Each tag has rules for who can use it, where, how often, and where its answer goes. Set them under Who and where and How it answers in the editor, or with d!tag rule:
| Rule | What it does |
|---|---|
| Only these roles · Never these roles | Who can use it. Empty means everyone. |
| Only in these channels · Never in these channels | Where it works. A category counts for its channels. |
| Cooldown | How often it can be used: per member, per channel or for the whole server. |
| Where the answer goes | In the channel, as a reply, by DM, or in another channel. |
| Delete the member's message | Tidies up the call (d!tag rules) after answering. |
| Reactions | Up to 3 emojis on the answer, or on the member's message. A tag with triggers and reactions but no text only reacts. |
| Delete the answer after | Removes the answer after a while. |
| Answer the message they replied to | On by default: used in a reply to someone, the tag answers their message and pings them. |
| Ping the other members it names | Off by default: {user} and {reply} ping, other mentions show without pinging. Roles and everyone are never pinged. |
When someone uses a tag by name and a rule stops them, Dexy says why. A tag answering by itself just stays quiet.
d!tag rule rules cooldown 1m
d!tag rule faq send dm
d!tag rule staff roles @Staff
d!tag rule rules cooldown
d!tag rule rules cooldown 1m
d!tag rule faq send dm
d!tag rule staff roles @Staff
d!tag rule rules cooldown
The last one, with no value, puts the cooldown back to none. Limiting roles or channels, sending answers to another channel and allowing pings need Manage Messages.
Owners#
Whoever makes a tag owns it. Owners change their own tags; members with Manage Messages change or delete anyone's.
d!tag claim rulestakes over a tag whose owner left the server.d!tag transfer rules @Oriongives a tag to someone else.d!tag purge @memberdeletes every tag a member owns, after you confirm.
If a member's data is deleted (d!privacy delete), their tags stay with the server, owned by nobody, and anyone allowed to make tags can claim them.
Who makes tags#
Everyone can use tags. By default, only members with Manage Messages and the roles you pick can make them. Switch to Everyone to let any member make tags, up to the number each may own.
| Setting | What it does |
|---|---|
| Who can make tags | Moderators and chosen roles, or everyone. |
| Roles that may make tags | Roles allowed to make tags, besides moderators. |
| Tags one member may own | 1 to 1,000 (moderators aren't limited). |
| Answers one message may get | 1 to 3 tags answering one message by themselves. |
| Channels where tags never answer by themselves | Tags still work there by name. |
d!tag config
d!tag config creatorroles @Helpers
d!tag config
d!tag config creatorroles @Helpers
These need Manage Server, or the settings role permission, which also opens the Tags page on the dashboard. Every change made there is in the audit log under Tags.
Finding tags#
d!tags
d!tag search role
d!tag info rules
d!tag raw rules
d!tag stats
d!tags
d!tag search role
d!tag info rules
d!tag raw rules
d!tag stats
d!tags lists every tag, most used first. info shows a tag's owner, uses, rank, other names, triggers and rules; raw shows it as written, with its placeholders unfilled, to copy into a new one. stats shows the most used tags and who owns the most. d!tag random uses one at random.
Moving tags#
d!tag export gives you every tag as a file (tags.json). d!tag import, with that file attached, loads them into another server: you own the new tags, and names that are already taken are skipped. Both need Manage Server.
Switching it off#
With Tags off (d!modules disable tags, or the switch on its page), tags don't answer, by name or by themselves. They're kept, and you can still write them on the dashboard.
Commands#
| Command | What it does | Needs |
|---|---|---|
| tag | Use a tag: Dexy answers with its saved reply.alias · claim · config · create · delete · edit · export · import · info · list · placeholders · purge · random · raw · rename · rule · search · stats · transfer · trigger · unalias | — |
Full details for each: Tags command reference.