/tts
Read messages from a voice channel’s own text chat aloud and choose your personal Fish voice.
Availability
Section titled “Availability”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.
Syntax
Section titled “Syntax”/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.
Parameters
Section titled “Parameters”| 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. |
Permissions
Section titled “Permissions”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.
Examples
Section titled “Examples”/tts action:listenPrefix equivalent and aliases
f!tts listenDefault 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.
Expected result
Section titled “Expected result”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.
Failure cases
Section titled “Failure cases”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.
Usage limits
Section titled “Usage limits”One voice connection per server; cross-channel playback is serialized. Queues and metered provider usage may limit delivery.
Related commands
Section titled “Related commands”Related guides
Section titled “Related guides”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.