Skip to content
Guide v1

/tts

Read messages from a voice channel’s own text chat aloud and choose your personal Fish voice.

Public source-edition command; execution remains conditional on installation, server policy and the running service. This reference is built from the repository, not a live Discord registration probe. Explicit registration contexts: server.

/tts [voice:String] [action:String] [autojoin:String] [page:Integer]

Angle brackets indicate required input; square brackets indicate optional input. In Discord, choose the command and fill its named options, rather than typing the brackets.

Name Type Required Allowed values / bounds Default when omitted Description
voice String No Autocomplete suggestions Keep your selected voice; use suggestions to choose a new one. Type to search Fish workshop voices and select one. No action needed; IDs/links also work.
action String No listen, stop, everyone, only_me, random_voice listen (or voice selection when voice is supplied) Start/stop reading, change this channel’s mode, or choose a random voice.
autojoin String No on, off, status Do not change autojoin. Administrator: automatically join and read all voice-channel chats across this server.
page Integer No Min 1 Legacy compatibility option; ignored by the current slash handler. Workshop search page (25 suggestions per page). Set this before searching voice.

No native default-member permission is declared for this path, and no additional native member permission was identified in its reviewed direct handler.

Fork role access is evaluated using the underlying tts policy key, even when the slash name is grouped. Native Discord permission checks remain separate from Fork role grants. Sensitive commands fail closed before valid setup; native Administrator bypasses Fork’s role matrix, not Discord’s bot permissions or target hierarchy. See Permission model.

Choose only one change at a time: voice, action or autojoin. Everyone, only_me and all autojoin operations require Administrator. Prefix variants include f!tts stop, f!tts voice <name or public workshop ID/link>, f!tts random and f!tts autojoin status. Personal opt-out remains effective in everyone mode.

Slash options
/tts action:listen
Prefix equivalent and aliases
Default prefix
f!tts listen

Default prefix: f!; installations can configure another. No extra handler aliases. Handler-declared usage: f!tts <listen|stop|voice|random|everyone|only_me|autojoin> [voice name/ID/link or on/off/status].

Grouped prefix routes also delegate to the original handlers, but aliases retain that handler’s argument parsing. Conflicting aliases are rejected as ambiguous. Prefix replies are generally visible in the channel; prefer slash privacy controls for sensitive personal data.

Listen opts you in; stop opts you out. Everyone/only_me changes channel mode for administrators. Voice selection is personal. Autojoin is a separate administrator setting.

Use the voice channel’s own text chat for listening modes. Missing View Channel/Send Messages/Attach Files, voice access, provider credits or an unavailable voice can prevent delivery. Check the returned error, current bot status and the relevant server permissions. A timeout or uncertain receipt is not proof that nothing happened; inspect state before repeating a mutation.

One voice connection per server; cross-channel playback is serialized. Queues and metered provider usage may limit delivery.


Source edition v1 · Registration, direct handler and shared authorization review are hash-bound in the local documentation validation. This is not a production feature-availability certification.