-
-
Notifications
You must be signed in to change notification settings - Fork 3
User Manual
This is the way to start Spooder normally. Before you can use it, you must call npm run build to make the build files.
This will run Spooder by the Typescript files using TSX.
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.
This will run Spooder without logging into modules (Twitch and Discord), loading plugins, and starting public hosting.
The help command can be set in the Config tab. Learn more down in the Config section
This stops the given event. This is for events that have timed commands. The event name is the internal name you gave it when you created the event. To find your event's internal name, you can call !help events or on the first page of editing the event. To stop all running events, you can call !stop all.
This command can lock events or plugins or everything. The targetName can be either an event's internal name or a Plugin's internal name. You can find internal names with !help events or !help plugins.
Lists all the events you have. If your bot's message exceeds Twitch's character limit, it will chop the message to multiple messages to fit.
Gives info about the given event. That includes description and which triggers are on it.
Lists all the active plugins you have.
Lists the commands associated with the given plugin this may or may not be set by the plugin developer
Gives description of the plugin's command.
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.
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 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Plugins are standalone Node.js modules that can contain their own dependencies. They are connected to all the data Spooder gets from integration modules. Learn more in the Plugin Dev Guide in this Wiki.
Redirect incoming OSC messages to another destination and/or a new address. These are repeaters that do not obstruct the OSC pipeline, so events can still trigger for tunneled messages. You can set up your list of UDP servers (machines/apps that host an OSC server like VRChat, Ableton, etc.) in the Config tab.
Currently only for access to the ModUI. You can create a user for a moderator and send them a temporary password which they'll use to login and set a permanent password.
Share your Spooder's chat commands and plugins to another streamer without any installations on their end. You can also enable Live Auto Share to make your Spooder automatically join their stream when they go live. Chat features can be shared without the need of public hosting, but to share plugins with overlays and access to the ShareUI, you will need public hosting set up.
If you create a share and have public hosting set up, you can create a share key. This is a perpetual key that must be appended to the end of the url to the ShareUI and overlays to give them access. Share keys can be deleted or regenerated on the Spooder owner's end.
This is a friendly interface for your share clients to enable/disable chat commands and plugins you shared with them. They can also configure plugins in a separate settings file which will appear in your plugin's directory under _share. To make your plugin share compatible, check for the shareId in the incoming StreamMessage in onChat and use getShareSettings(shareId:string) to get the share's settings.
This is where you can set up a lot of important stuff. From basic info about you and your bot to backing up your setup.
The owner and bot names are self explanitory. The help command is what gives all the info your Spooder is capable of. When called alone, your bot will say what is written in the Introduction field. There are args to pass in with this command that give you info for both commands and plugins.
Hosting your Spooder on the internet allows advanced sharing, ModUI, and public interfaces for your plugins. Ngrok is integrated for a free and easy way to get set up. However, for free accounts, the URL is not easy to read and it's randomized every time you run Spooder. I would have subdomain support on it if I had a paid account (or if someone has a paid account and would like to make a PR for it, you're welcome to add it), but I have my own reverse proxy in the works. Motherwolf will be an affordable service designed for individual Spooder users. Otherwise, you may create your own reverse proxy if you have a domain and set it manually.
You can backup your settings and/or your plugins. You can also export them and save them to a safer place. Restoring allows you to select which settings and plugins to restore on your Spooder.