Skip to content

User Manual

GreySole edited this page Aug 13, 2025 · 4 revisions

Starting Spooder

npm run start

This is the way to start Spooder normally. Before you can use it, you must call npm run build to make the build files.

npm run dev

This will run Spooder by the Typescript files using TSX.

npm run init

This will run Spooder in initialization mode. There isn't much use after initial setup, but it can restore a backup to recover in case something goes wrong.

npm run safe

This will run Spooder without logging into modules (Twitch and Discord), loading plugins, and starting public hosting.

Events

Triggers

Chat

Chat commands are made with the Command field of the trigger. Nothing is appended afterwards, so ! commands must include the ! point. Commands are read at the beginning of a message, to see if it starts with the given string. This allows for the command to have arguments after the command. So the trigger is basically a base trigger while a Response command on the next section determines if it does anything.

Chat Search and Match

Search and Match is a more advanced chat trigger. Instead of searching the beginning of the message, it searches the whole message. The given string is a mix of words and special characters that tell how exactly the trigger should fire. For example, if the given string is "hello world", then it will search the whole message for the words "hello" and "world" in that sequence. If the given string is "hello *world", then it will search for "hello" first and then keep searching ahead until it finds "world" regardless of what's between them. For documentation on the Search and Match codes, click the ? button next to the Search and Match switch on the WebUI for a cheat sheet.

OSC

OSC Conditions can be one complex trigger or multiple simple triggers. A condition group will trigger if all the conditions within it are true. To make alternate conditions, make another group and keep the mode on OR. This way, if one condition group is true, the event will fire. Setting the mode to AND will require all groups to be true to fire.

In a condition, the arg field is set to the index of the condition by default. Incoming OSC messages will contain an address and an args[] array. With the arg of the condition set to 0, the condition will apply to args[0] of the array.

OSC Trigger and Toggle

The handle dropdown of the OSC trigger contains Trigger, a single condition set to fire the event. The dropdown also contains Toggle, which has a separate condition set for ON and OFF with the same rules applied to Trigger condition sets.

OSC Search String

Search String applies the rules of Chat's Search and Match to an OSC arg. This is especially useful for voice to OSC applications like TTS Voice Wizard. Set the address of the message and set the arg where the string will be in the message. Then use the Command field to define the Search and Match trigger. Additional conditions groups may be set in case other args need to be certain values.

Twitch Trigger

You must have Twitch set up in the Modules tab to use the Twitch trigger. Most of Twitch's EventSubs are available to use and the data from events can be accessed in Response commands from event.platformEventData which contains the object received from the module. Documentation for Twitch's eventsub data which will be reflected in platformEventData can be found on EventSub Subscription Types.

Twitch Channel Points

You must be an affiliate on Twitch to use channel points. Create a new custom reward on Twitch and then add the Twitch trigger with the Channel Point Redeem type. The Reward dropdown will appear with all your channel point rewards. The Override Approval switch will trigger the event before it's been approved on Twitch's Stream Manager. This makes channel point rewards refundable. Otherwise, the even will not fire unless it's been approved.

Commands

Response

This is a small script to build a response for your bot. It can store data, set timers, and call APIs. With a little Javascript knowledge, you can make complex commands and even chain events together to make your ideas work without having to make a full plugin. The response script is asynchronous, so you may call await for any API/fetch calls within the script.

Plugin

These will trigger an event inside a plugin through it's onEvent function. Plugins may have an events-form.json that defines fields for specific events. Without an events-form.json, it defaults to passing a string for the event name for legacy plugins.

Software

This will fire an OSC message through UDP to a specified UDP server which is defined in the Config tab. The Event Type determines which fields are used in the command. Timed events will send a message with Value On and then send another message with Value Off when the duration expires. Button press type works the same way as Timed, but with a fixed duration to make command momentary. It will send Value On first, and then Value Off 500ms later. One Shot only uses the Value On field and doesn't use duration.

Resolving Software Conflicts

You may have other events using Software commands that use the same Address. The WebUI should warn you of any events that have this. By itself, one event can trigger it on and the other event can trigger it off unless you set the priority field of one of them to prevent one event from cancelling another.

OBS

You must connect to OBS before you can set OBS commands. You only need to be connected to OBS to set the command's settings. There are timed and one shot commands for setting mute on audio sources, switching scenes, and enabling scene items.

Moderation

There is already a !mod command for locking and unlocking events and plugins. This is more for bundling mod commands or hooking them to an OSC message. You can set mod commands to lock specific events or plugins or everything. These can be timed or one shot as well.

Discord

Currently only sends a message. Handy for stream online events when you want to announce you're live to your server. It works just like a response script. Call the Twitch API to get stream info and put into your message. You can also enable Use Link Button to create a button that links to your stream or anywhere else.

Clone this wiki locally