Custom Commands V3Modules and apps
Custom Commands V3Beta

Bundle flows into a module

The Daily question flow does not have to stay in your server. Put it in a module with its own settings and another server can install it, picking its own channel, its own time and its own role.

The settings the installing server sees

Daily question

Settings

Question channel

Channel
#general

Where the question is posted. Any text channel the bot can write in.

Post at

Schedule
Every day, 09:00

A schedule picker, not a cron text box.

Suggestion role

Role
@Team

Who reviews the questions members send in.

Open a thread

Opens a thread on the question so the answers stay together.

Illustration only - actual interface may differ

What a module contains

A module is self-contained. It carries its own flows, its own stored data and its own settings, grouped into pages, plus one switch for the whole bundle.

Flows

Every flow the module needs, in folders you decide on.

Storage fields

The stored data the module owns. Flows that sit outside a module keep their data separately, and the two never mix.

Settings

What the installing server fills in, grouped into pages: text, numbers, yes or no, channels, roles, members, lists and schedules.

One switch

Turning the module off takes every flow in it along.

The same flow, now inside the module

Daily question

ActiveSave

Trigger

Change

Schedule, every day at 09:00

#1

Get storage value(get-storage-value)

Read the question catalogue from{questions}

#2

Pick the next entry(array-at)

The one after yesterday's

#3

Send message(send-message)

Post the question as an embed in{config:channel}

#4

Create thread(start-thread-from-message)

Open a thread on that message

#5

Increase storage value(increment-storage-value)

Count the question as asked in{asked}

Illustration only - actual interface may differ

Installed, it reads like an app

The person who installs your module does not land in a flow editor. They get an app page: an overview of what it does, a settings tab with your config fields, and a help tab with your guides and FAQ.

What the module can do is listed for you from its flows, and then you rewrite it in your own words. Help for a setting sits behind a question mark next to it. The flow editor, the stored data and the run history sit behind an advanced tab.

What a developer writes in the overview, the guides and the FAQ stays text. No scripts, and no links dressed up as something else.

OverviewSettingsHelp

Capabilities

Daily post

Posts the question at 09:00 and opens a thread for the answers.

Suggest a question

Members send in a question, the team approves it into the catalogue.

Guide

Fill your question catalogue

How to get the first thirty questions in, and what happens when the list runs out.

FAQ

Can members suggest questions?

Yes. Give the suggestion role to your team and they see every suggestion before it is used.

Illustration only - actual interface may differ

Portable by design

Modules never carry your channel, role or member IDs. Anything that belongs to one server comes from a setting, so every server that installs the module picks its own. That is what makes an install somewhere else work at all.

Channels and roles come from settings

A step never points at a channel or a role by ID. It points at a setting, and the installing server chooses what goes in it.

Each server's choices stay with that server

The values a server picked are kept next to the module, not inside it, so an update never overwrites them.

Leftovers are caught before a version ships

A new version is checked for IDs from your own server, and anything found is pointed out with the flow, the step and the field it sits in.

Every install knows its version

A server keeps exactly the version it installed until it decides to update.

Install, update, translate

A module installs into another server in one step, and the setup wizard walks the required fields one per step. When you ship a new version, every install is told about it.

An installed module tells the server running it how it is doing: it needs setup, the bot is missing a permission, something keeps failing, or all is well.

Updates

An update shows up as an Update available pill with the version number. Apply them one at a time, or with Update all.

Your own edits

A module you changed yourself is left out of Update all and asks you first, because updating replaces the flows in it. Your current version is kept for 30 days, so you can go back to it.

One main language

Your module has one main language. You pick it when you first publish, and it stays fixed once translations exist. You can hand-translate it into 28 supported languages.

Machine translation

Machine translation is opt-in and writes German only. Where it was used, the app tells the person reading it that parts were translated by AI and that the developer has not checked the wording.

When a translation arrives

Translation fixes reach an installed module at install time and at version update, never retroactively.

Modules, answered

A loose flow sits directly in your server's custom commands and is yours alone. A module bundles flows, stored data and settings into one thing with a single switch, its own settings page and its own help. Anything you want to install into another server, or hand to someone else, has to be a module.

Want your server in the beta?

V3 is a large system and it still moves fast, so servers come in one at a time instead of all at once. Every application is read by a person, and you hear back within a few days.

The servers already in the beta decide a good part of what we build next. What you build is yours: flows and modules stay when the beta ends.