Triggers
An automation ties a trigger to a sequence of steps: when this event happens on the server, the bot does that. Everything is composed visually, with no code.
Two ways to write the same thing
Section titled “Two ways to write the same thing”An automation is a graph. Two views work on it, and nothing is ever converted by force:
- Étapes (Steps): the automation reads as a sequence of sentences - Quand …, Si …, Alors …. This is the default view.
- Graphe (Graph): a canvas of connected blocks, with a palette. It takes over on automations that cannot be expressed linearly - a loop, a switch - and Kotbo says so: This automation uses blocks that cannot be written as steps.
Creating an automation
Section titled “Creating an automation”The New automation button offers to start from a ready-made template or from scratch.
| Template | What it does |
|---|---|
| Welcome message | Greet every arrival in a channel and grant their starting role. |
| Watch fresh accounts | Flag to the staff any arrival whose Discord account is under a week old. |
| Block invitations | Time out anyone posting an invitation link to another server. |
| Level reward | Congratulate a member publicly when they level up. |
| Ticket greeting | Post the guidelines as soon as a support ticket opens. |
Templates are ready to use - you only pick the channels and roles.
The triggers
Section titled “The triggers”An automation has a single trigger. The palette holds forty-two of them, sorted by family.
Members
Section titled “Members”| Trigger | When it fires |
|---|---|
| Arrivée d’un membre | A member joins the server. |
| Départ d’un membre | A member leaves the server. |
| Rôle attribué / Rôle retiré | A role is added to or removed from a member, once per role when several change at the same time. |
| Surnom modifié | A member’s nickname on the server changes, whether they did it themselves or not. A global Discord name change does not count. |
| Boost du serveur | A member starts boosting. Discord does not report further boosts from a member who was already boosting. |
| Arrivée par invitation | A member arrives through an invitation the bot could identify. |
| Passage de niveau | A member gains a level. |
Messages and voice
Section titled “Messages and voice”| Trigger | When it fires |
|---|---|
| Message envoyé | On every message posted by a human. |
| Message modifié | A member edits the text of one of their messages. A link preview appearing, or a pin, does not count. |
| Message supprimé | A member’s message is deleted. Bot messages and bulk deletions do not count. |
| Réaction ajoutée / Réaction retirée | A member adds or removes their reaction. Clearing all reactions of a message at once fires nothing. |
| Arrivée en vocal / Départ du vocal | A member joins or leaves a voice channel. Leaving exposes the duration in minutes. |
| Changement de salon vocal | A member moves from one voice channel to another without leaving voice. |
| Fil créé | A member creates a thread or a forum post. Threads created by a bot do not count. |
Moderation
Section titled “Moderation”| Trigger | When it fires |
|---|---|
| AutoMod déclenché | Kotbo’s AutoMod sanctions a message: spam, invitation, caps, emojis, mentions, everyone. |
| Sanction appliquée | A sanction is issued. |
| Sanction levée | A member is unbanned, or their timeout is lifted before its term. |
Server structure
Section titled “Server structure”Salon créé, Salon supprimé, Rôle créé, Rôle supprimé: these four also fire when the bot or an integration is the one acting. Threads do not count as channels. After a deletion the object no longer exists: only its name stays usable.
Tickets, forms and suggestions
Section titled “Tickets, forms and suggestions”| Trigger | When it fires |
|---|---|
| Ticket créé | A support ticket is opened. |
| Ticket fermé | A ticket is closed, from Discord, the dashboard or the AI assistant. Deleting a ticket without closing it does not count. |
| Avis sur un ticket | The author of a closed ticket rates it from 1 to 5. Only the first rating counts, and the optional comment is not passed on. |
| Formulaire envoyé | A custom form is submitted, from Discord or from its public page. The answers arrive grouped, one Question: answer line per filled field. |
| Suggestion publiée | A member posts a suggestion. |
| Suggestion traitée | The staff approves, rejects or marks a suggestion as implemented. |
For a ticket handled in DMs or relayed to the staff server, the channel is empty: the channel filter then leaves the case out.
Engagement
Section titled “Engagement”| Trigger | When it fires |
|---|---|
| Participation à un concours | A member joins a giveaway. |
| Gagnant d’un concours | For each winner, once their prize is secured. A draw awaiting validation fires nothing until the staff validates it. |
| Fin d’un concours | When a giveaway closes, whether it produced winners or not. |
| Victoire à un mini-jeu | A member finds the mystery number or solves an emoji riddle. |
| Pari tranché / Pari annulé | A referee names the winning side, or the stakes are returned. |
| Dette de clan creusée / soldée | A member stakes points they do not hold, or finishes repaying. |
Partnerships
Section titled “Partnerships”Partenariat : changement d’étape fires when a partnership case moves to another stage, after the perks are applied - the partner role is already granted. Partenariat : engagement non tenu fires when a commitment is found unmet, and its missed periods field lets you react only from the second or the third time. Partenariat : arrivée attribuée only fires for arrivals actually credited to a partner’s invitation.
See Partnerships.
Scheduling
Section titled “Scheduling”The Planification trigger is set either through the guided choice - every hour, every day, every week, every month, with the hour and the day - or through an advanced pattern: a five-field cron pattern.
The time is interpreted in the server’s time zone, set from the Server settings.
Narrowing the trigger
Section titled “Narrowing the trigger”Rather than filtering with a condition, several triggers can be narrowed on the Quand card itself:
- Seulement dans ces salons (only in these channels): text channels, voice channels or whole categories. Available on messages, reactions, voice, threads, AutoMod and tickets. On Changement de salon vocal the filter applies to the destination channel; on Fil créé, to the parent channel or forum.
- Seulement pour ces rôles (only for these roles): on Rôle attribué and Rôle retiré.
- Seulement sur ces messages (only on these messages): on reactions, by pasting the message link (right click → Copy Message Link). If nothing typed there is recognised as a message, Kotbo warns that no reaction will get through.
- Seulement pour ces émojis (only for these emojis): on reactions, by pasting the emojis or typing
:name:for a server emoji.
Left empty, these fields accept the whole server.
The steps
Section titled “The steps”Every trigger exposes values - the member, the message, the channel - that the following steps can use.
Actions
Section titled “Actions”Posting: Envoyer un message, Envoyer un embed, Envoyer un message privé (no effect if the member’s DMs are closed), Répondre à un message (posted without a quote if the message was deleted meanwhile) and Écrire dans les logs, which fails as long as no log channel is configured.
On a member: Ajouter un rôle, Retirer un rôle, Donner un rôle temporaire, Changer le surnom, Exclure temporairement, Expulser, Bannir (permanently or for a given duration).
On a message: Supprimer un message, Réagir à un message, Épingler un message, Ouvrir un fil.
Rewarding and tracking: Donner des pièces, Retirer des pièces (never below zero), Donner de l’XP - with level-up and reward roles - and Ajouter une note au membre, which writes a dated line into their moderation note. Finally, Ouvrir un ticket opens a support ticket on a member’s behalf.
Conditions and flow control
Section titled “Conditions and flow control”- Si: only run the rest in certain cases. A condition reads as all these conditions or at least one condition, and is arranged into Alors / Sinon (Then / Otherwise).
- Aiguillage: compares a text value against a list of cases.
- Pour chaque: walks a list and runs the loop body for every element.
- Attendre: suspends the run. It resumes even after a bot restart.
In the Steps view, conditions are offered as sentences, and only those the trigger can fill in appear: the role, the account age, the time spent on the server, the member’s run frequency, the content or the length of the message, the channel, the emoji, the sanction type, the form and its answers, the fate of a suggestion, a ticket’s rating and type, the invitation code, the mini-game won, or the server’s member count.
In the Graph view the same tests are assembled by hand: Possède le rôle, Salon est, Texte contient, Texte est égal à, Comparer two numbers, Calcul, Concaténer, ET / OU, NON, plus the length of a text or the size of a list.
Values
Section titled “Values”The data blocks provide a Texte, a Nombre, a Booléen, a Texte composé (in which context values are inserted), Un rôle or Un salon from the server, the Fréquence du membre, and the properties of the member, the message, the channel or the server.
In the Steps view, channels, roles and texts are typed straight onto the card, without creating a data block.
Saving
Section titled “Saving”Kotbo validates the graph before saving and lists the issues to fix: Start by placing a trigger block, A field of this step is still empty, N step(s) still need to be completed before saving. When everything is right: The graph is valid.
A saved automation starts paused; the switch on its card enables it.
Following what runs
Section titled “Following what runs”The list filters by All, Active or Paused, and every card shows its number of runs, its success rate and its last run.
The Runs tab lists the passes with their status - Running, Waiting, Completed, Failed, Cancelled - and the number of blocks visited. Two menus filter the list by status and by automation, the Show failures button keeps only the misses, and Load older runs goes further back. A waiting run shows when it is due to resume, and a failed run names the step at fault.
Click a run to replay it on the graph: the path is replayed step by step, with the inputs and outputs recorded at each block.
Managing the list
Section titled “Managing the list”Every card offers Edit, Duplicate, Pause or Enable, and Delete.