ZombyIO
All guides

Docs · Reward the people who show up

How to set up automatic answers to keywords in Discord

A trigger watches for words or sentences you choose and answers with the text you wrote: as a reply, as a normal message, by direct message or with an emoji. You decide how closely a message has to match and how often the bot may answer.

Takes about 4 minutesFree, Premium raises limits

What you will end up with

A member asks when the next stream is, and ZombyIO answers at once with your text. A short wait stops it from answering the same question over and over in one channel.

general

Where to find it

Open the dashboard, pick your server and choose Triggers in the sidebar (on a phone: under Features in the bar at the bottom). That is two clicks from your server list. You can also press Ctrl K anywhere in the dashboard and type the name.

  1. Your servers
  2. Your server
  3. Triggers
Open the dashboard

Step by step

  1. Step 1: Open Triggers and add a trigger

    In the dashboard, pick your server and choose Triggers in the sidebar. The switch in the banner starts out on, so all you need is a trigger.

    Under Your triggers, press Add a trigger. You can have 10 triggers on the free plan and 200 with Premium.

    Tip

    Start with the one question your members ask most often. You can add the others once the first one works.

  2. Step 2: Enter what to watch for

    Give the trigger a Name, which only you see. Then type a phrase into What to watch for and press Enter or Add phrase. Add every way people ask the same thing, for example when is the stream, stream time and wann ist der stream. Any one of them fires the trigger. You can add up to 25 phrases of up to 100 characters each.

    Capital letters, accents, extra spaces and curly apostrophes make no difference, so Straße matches strasse and don’t matches don't. Punctuation inside a phrase has to be in the message too.

    Tip

    A phrase that can never fire is marked in red with the reason. A single letter, for example, would sit inside almost every message, so it only works with The whole message, exactly.

  3. Step 3: Choose how closely a message has to match

    Under How closely it has to match, pick one of four rules:

    • As a whole word, the default. With the phrase help, it fires on Help!, I need help with roles and self-help, but not on helpful or help123: no letter or number may come right before or after the phrase.
    • At the start of the message. With !rules, it fires on !rules please, > !rules and @ZombyIO !rules, because quote marks, formatting and mentions at the front are skipped. It does not fire on please !rules or !rulesplease.
    • The whole message, exactly. With hello, it fires on hello, Hello! and **Hello?**, because formatting and punctuation around the message are ignored. It does not fire on hello there or hello :).
    • Anywhere in the message. With stream, it fires on livestreams today, even inside a word.

    Only one trigger answers a message. When several fit, the strictest rule wins: the whole message, then the start, then a whole word, then anywhere. Within one rule, the phrase that comes first in the message wins.

    Tip

    Regular expressions and wildcards are not supported. List the different wordings as separate phrases instead.

  4. Step 4: Write the answer

    Type your reply into Answer text, up to 2,000 characters. Under More ways to say it you can add up to 4 more answers, and each time one of them is picked at random.

    Placeholders fill in the details: {user} mentions the member, {user.id} is their ID, {server} the server name, {membercount} the number of members, {channel} links the channel and {match} is the phrase that matched, as you wrote it.

    Turn on Send as an embed for a bordered card with a title in your colour. Also react with adds one emoji to the member’s message, and works on its own without any text. Wait before answering again applies to the emoji too.

    Tip

    @everyone and @here in an answer never ping anyone.

    general
  5. Step 5: Decide how the answer arrives and how often

    The quickest way is a card under Pick a starting point:

    • Answer in the channel: replies to the question, at most once per channel every 30 seconds.
    • Quietly, by DM: answers the member privately, once per member per minute.
    • React only: no text, just an emoji.
    • Answer and tidy up: posts in the channel and removes its answer again after a minute.

    Or set it yourself. How the answer arrives offers a reply, a normal message or a direct message. Wait before answering again stops a common word from flooding a channel: 30 seconds by default, counted per channel, per member or for the whole server under Counted per.

    Important

    React only clears the answer text and the extra answers. Pick the emoji under Also react with, or the trigger has nothing to do.

  6. Step 6: Limit where it answers, if you need to

    Under Where this trigger applies, leave everything empty and the trigger works in every channel for everyone. Or narrow it with Only in these channels, Except in these channels, Only for these roles and Never for these roles, up to 25 entries each. Threads and forum posts count as the channel they are in. A member with a role from both role lists is left alone.

    To keep every trigger out of a bot channel or away from your staff, open Server-wide exceptions at the bottom of the page.

  7. Step 7: Try it, then save

    Type a sample message into Try a message beside the settings. It runs the same matching your server does and shows which trigger would answer and on which phrase, or why a trigger that fits is held back. Then press Save.

    Tip

    The tester checks the words, and the channel and role you choose under In channel and Written by a member with. On your server a trigger also waits out Wait before answering again, and saving does not reset a wait that is already running. Choose Every time while you test.

Every setting explained

In the order the page shows them. Names in bold are exactly what the dashboard calls each control.

Your triggers

Add a triggerFree: 10 · Premium: 200

Adds a trigger that matches a whole word, answers as a reply and waits 30 seconds per channel. Every trigger in the list counts towards the limit, including switched-off ones.

Active

Switches one trigger off without deleting it. A switched-off trigger never answers, but it still counts towards your plan’s limit.

Order in the list

Settles a tie: when two triggers have the same phrase and rule, the higher one answers, as long as it applies in that channel for that member. The trigger that wins is the only one that can answer: while it waits out Wait before answering again, no other trigger answers that message instead. When your list is longer than your plan allows, for example after Premium ends, only as many as your plan allows run, counted from the top, and the rest are marked Paused.

Edit this trigger

Name

Up to 80 characters. Only you see it.

What to watch for

Up to 25 phrases of up to 100 characters. Any one of them fires the trigger. A phrase that differs from one already in the list only by capitals or accents is not added again.

How closely it has to match

As a whole word (the default), At the start of the message, The whole message, exactly or Anywhere in the message, explained with examples in step 3. A phrase of a single character only works with The whole message, exactly, unless it is an emoji or a Chinese or Japanese character.

The answer

Pick a starting point

Four ready-made ways to answer. They set how the answer arrives, the wait and what it is counted per, whether the answer is removed later, and they switch off deleting the member’s message. They never change your phrases or where the trigger applies. React only also clears the answer text.

Answer text

Up to 2,000 characters. Leave it empty for a trigger that only reacts or only deletes.

More ways to say it

Up to 4 more answers. Each time the trigger fires, one of the answers is picked at random. Empty boxes are dropped when you save.

Placeholders

{user} mentions the member, {user.id} is their ID, {server} the server name, {membercount} the number of members, {channel} links the channel the question was asked in, and {match} is the phrase that matched, as you wrote it rather than as the member typed it. Click one to copy it.

Send as an embed

Sends the answer as a bordered card. Off by default.

Embed title

Up to 256 characters. {user} and {channel} do not work in a title and are left out there. The other placeholders work. An embed with a title and no text is still sent.

Accent colour

The colour along the card’s edge. Blue by default.

Also react with

One emoji, from your server or the standard set, added to the message that fired the trigger. It is not added when Delete the message that fired it is on.

How the answer arrives

As a reply (the default) quotes the question. As a normal message posts without quoting. By direct message answers privately, and members who do not accept direct messages get nothing. A channel answer always goes to the channel or thread the question was asked in.

Wait before answering again

Every time, 30 seconds, 1 minute, 5 minutes, 1 hour, or an exact value up to 86,400 seconds (a day). Default 30 seconds. Even on Every time, one channel gets a few answers in quick succession and then at most about one every two seconds. All triggers on the server together get about 20 answers, reactions or deletions in a row and then about one a second, and a direct message counts as two. Anything past these limits is dropped without notice, not sent later.

Counted per

Channel (the default): one answer per channel, and here each thread counts as a channel of its own. Member: each member gets their own answer. Whole server: one answer anywhere on the server.

Delete the message that fired it

Removes the member’s message. The answer is then posted as a normal message rather than a reply, and no reaction is added. ZombyIO needs the Manage Messages permission for this. A trigger with only this switched on, and no text or emoji, still removes the message. It also waits out Wait before answering again, so choose Every time if every such message should go.

Remove the answer again after

Keep it (the default), 30 seconds, 1 minute, 5 minutes, or an exact value up to 3,600 seconds. Only for answers in a channel. Answers sent by direct message stay.

Where this trigger applies

Only in these channels

The trigger answers only here. Empty means every channel. Threads and forum posts count as the channel they are in. Up to 25 channels.

Except in these channels

The trigger never answers here, or in threads and forum posts of these channels. Up to 25 channels.

Only for these roles

Only members with at least one of these roles fire the trigger. Empty means everybody. Up to 25 roles.

Never for these roles

Members with any of these roles never fire the trigger, even when they also have a role from Only for these roles. Up to 25 roles.

Server-wide exceptions

Ignored channels

No trigger answers in these channels, or in their threads and forum posts. Bot channels and staff rooms are the usual choice. Up to 25 channels.

Ignored roles

Members with any of these roles never get an answer from any trigger. Up to 25 roles.

Free and Premium

Premium costs €6 a month per server and is shared by every admin of that server. It raises limits, it does not unlock the feature.

Free and Premium
WhatFreePremium
Triggers10200

Something not working?

The problems people run into most often, and how to fix each one.

The trigger does not answer at all
  • You have not pressed Save yet.
  • Triggers are switched off in the banner, or the trigger’s Active box is unticked.
  • The trigger is marked Paused because your list is longer than your plan allows.
  • Its phrase is marked in red as one that never fires.
  • The rule is stricter than the message: As a whole word does not fire inside helpful.

Type the message into Try a message. It shows which trigger would answer, or why one is held back.

It answered once and then stayed silent

The wait under Wait before answering again is running: 30 seconds per channel by default, and saving does not reset it. While you test, set it to Every time. Even then, a busy channel gets at most about one answer every two seconds, and the whole server about one a second after the first 20. Answers past that are dropped without notice.

The tester shows a match, but nobody gets an answer
  • Automatic moderation reacted to the message. When any of its rules catches a message, even in watch mode, no trigger answers it. See auto moderation.
  • The message was edited into the phrase. Triggers only read new messages.
  • The message came from a bot, was forwarded, or had no text.
  • ZombyIO may not write, react or delete in that channel. After it has been refused, it leaves that channel alone for ten minutes. See roles and permissions.
A different trigger answered than the one I expected

The order of the list only settles ties. First the strictest rule wins: The whole message, exactly, then At the start of the message, then As a whole word, then Anywhere in the message. Within one rule, the phrase that comes first in the message wins, and at the same place the longer phrase wins. Make the trigger you want stricter, or its phrases longer.

Some members never get the direct message

They do not accept direct messages from ZombyIO. After one refused message, the bot does not try that member again for six hours, and nobody is told. Answer in the channel if everyone must see it.

The emoji reaction is missing
  • Delete the message that fired it is on, so there is nothing to react to.
  • The emoji was deleted, or comes from a server ZombyIO is not on.
  • ZombyIO lacks Add Reactions or Read Message History in that channel.
  • The member has blocked ZombyIO.
I cannot add another trigger

You have reached 10 triggers on the free plan or 200 with Premium. Switched-off triggers count too, so delete the ones you no longer need. When Premium ends, your extra triggers stay saved and paused, and answer again once Premium is back.

Still stuck?

Ask in the ZombyIO support server. Bring your support ID, your server’s support ID and a sentence about what you expected to happen, and someone will look at it with you.

Go to the support server