This script allows you to program automatisms related to all available Addons.
It is possible to react to a Twitch message, or even when changing the OBS Studio scene, but I let you discover all this via the following blocks.

## Presentation

Here we will discuss the different possibilities and how to use a block.
Some details:

- A right click on a block displays a cross to delete this block.
- A double right click on a block creates a perfect copy.
- It is possible to move blocks, but to move several at the same time you must first select them by holding down the `Shift` key.

## Header

The Toggle Blocks button shows and hides the blocks you can use by swiping in the current module.
The drop-down list gives access to the different modules that you can via the following icons, create, import, and export.
The gear allows you to activate, deactivate, rename or delete a module.

## ID / Title

The upper part of a block includes an icon, its title, as well as an arrow which opens a contextual menu providing access to various options.
By hovering over the title, a tooltip appears indicating the identifier of the block (reusable in some blocks), as well as its section followed by its title.
Here are the available options:

- Enable: makes it possible to deactivate the block, if you don't want it to be operated by an Addon or another connected block (enabled by default),
- Test: activates the block as well as all the active blocks connected to it (it will not have the variables coming from the blocks connected as input),
- Export: allows you to export only this block and the blocks connected to it,
- Delete all: removes the block and all blocks connected to it.

## Hidden elements

Some parts of the blocks are hidden so that the block is as small as possible.
Click on the eye to show or hide these settings again.

## Connections

The connections are made between the outputs and the inputs of the blocks and only in this direction.
Three types of blocks are available:

- Green: they are activated for example by an Addons and often return information,
- Orange: they are activated by the blocks connected to their input,
- Violet: same as orange blocks, but can return one more data.

Some details:

- A right click on a connection displays a cross to delete this connection.

## Variables

Blocks have many of their own variables that you can use in many ways.
But the following variables are available for all blocks:

- date (type: String): complete date including all information such as time zone,
- date:locale (type: String): day, month, and year presented in local format (as is usually written for you),
- date:year (type: Number): current year,
- date:month (type: Number): current month,
- date:day (type: Number): current day,
- date:utc:year (type: Number): year in UTC format (without your time zone),
- date:utc:month (type: Number): month in UTC format (without your time zone),
- date:utc:day (type: Number): day in UTC format (without your time zone),
- time (type: Number): a number representing the time elapsed since January 1, 1970 (expressed in seconds),
- time:timezone:offset (type: Number): time offset from UTC (expressed in minutes),
- time:locale (type: String): hours, minutes, and seconds presented in local format (as is usually written for you),
- time:hours (type: Number): current hours,
- time:minutes (type: Number): current minutes,
- time:seconds (type: Number): current seconds,
- time:utc:hours (type: Number): hours in UTC format (without your time zone),
- time:utc:minutes (type: Number): minutes in UTC format (without your time zone, normally the same as yours),
- time:utc:seconds (type: Number): seconds in UTC format (without your time zone, normally the same as yours),
- block:id (type: Number): the identifier of the block where you use the variable (also available when hovering over the title with the mouse),
- block:type (type: String): the name of the section corresponding to the block (ex. Spotify),
- block:name (type: String): the name of the block,
- block:title (type: String): the title of the block (often composed of the entire `section` and the `name` of the block),
- block:input:exists (type: Boolean): if the block has inputs (which should always be the case where you will use the variable),
- block:output:exists (type: Boolean): if the block has outputs,
- block:input:connections (type: Number): the number of blocks connected to the input of the block,
- block:output:connections (type: Number): the number of blocks connected to the output of the block.
- block:previous:id (type: Number): the identifier of the block which led to the one where you are using the variable (also available when hovering over the title with the mouse),
- block:previous:type (type: String): the name of the section corresponding to the block that led to this one (ex. Spotify),
- block:previous:name (type: String): the name of the previous block,
- block:previous:title (type: String): the title of the previous block (often composed of the entire `section` and the `name` of the block),
- block:previous:input:exists (type: Boolean): if the previous block has inputs,
- block:previous:output:exists (type: Boolean): if the previous block has outputs (which should always be the case where you will use the variable),
- block:previous:input:connections (type: Number): the number of blocks connected to the input of the previous block,
- block:previous:output:connections (type: Number): the number of blocks connected to the output of the previous block.

*: This star symbolizes that the input box supports variables (e.g. `${twitch:user:display}` for the variable `twitch:user:display`, the characters before and after are important).

# Blocks

## Functionality

### App Status

| Checks every 5 seconds if an application has started or stopped. Application: by clicking on the ellipsis, a dialog box will open asking for the targeted program. State: Launch: when the application is launched. Closing: when the application has stopped. This block returns the following variables: app-status:id (scope: Next, type: Number): identifier of the detected process. app-status:name (scope: Next, type: String): name of the detected process (without the program extension). app-status:path (scope: Next, type: String): application file path. app-status:lanched (scope: Next, type: Boolean): whether the application has just started or stopped.

### Audio Play

| Play media files of your choice. File: by clicking on the ellipsis, a dialog box will open asking you for the audio file to play. Volume: adjusts the volume of the sound in percentage. Device: specifies the device on which the file must be read (leaving empty, it will be output on the default device).

### Audio Stop

| Stops playing all current sounds, played by the Audio Play block.

### Cooldown

| Uses the variable system to prevent the activation of the following blocks as long as the delay between two activations is not respected. Variable name: a variable name is automatically generated, but you can choose a more convenient name. Time: minimum delay before letting the action pass to the next block.

### Download File

| Download a file from the internet. URL *: internet address of the file to download. File name *: filename once uploaded (extension included, e.g. `photo.png`). Folder: * folder in which to drop the file.

### File Read

| Reads a file in text format in utf-8. File *: by clicking on the ellipsis, a dialog box will open asking you for the file to read. This block returns the following variables: file-read:all (scope: Next, type: String): all the content of the file. file-read:count (scope: Next, type: Number): number of lines present in the file (count the empty line at the end of the file if there is one). file-read:line[i] (scope: Next, type: String): Contents of the line number i (starts at 0).

### File Write

| Writes a file in text format in utf-8. File *: by clicking on the ellipsis, a dialog box will open asking you for the file to create or modify. Content *: text to put in the file. Separator: make a new line before putting the requested content. Add at the end: add the requested content at the end of the file (do not overwrite lines already present).

### HTTP Request

| Send a request (like a web browser) to the given address. URL *: the internet address to which to make the request. Method: the method can have several values such as GET, POST, PUT, DELETE, and many others. This block returns the following variables: http-request:status (scope: Next, type: Number): the HTTP code returned by the targeted site (e.g. 404). http-request:body (scope: Next, type: String): the data returned by the site in question (often in HTML or JSON format).

### Keyboard Shortcut

| Reacts to the keyboard shortcut you choose. Keys: click on the cross on the right then press the keys of the desired keyboard (to validate the modification, deselect the block). This block returns the following variables: keyboard-shortcut:name (scope: Next, type: String): name of the keys composing the shortcut. keyboard-shortcut:code (scope: Next, type: Nombre): number representing the keys. keyboard-shortcut:virtual (scope: Next, type: Nombre): number representing keys that are not alphanumeric. keyboard-shortcut:state (scope: Next, type: Nombre): `down` on press, `up` on release.

### Kill App

| Closes the selected program (forced close). Application: by clicking on the ellipsis, a dialog box will open asking for the program to close. Kill children: will also close all processes that were created by the chosen program.

### Launch App

| Launches the selected program. Application: by clicking on the ellipsis, a dialog box will open asking for the program to launch.

### Notification

| Opens a small notification box at the bottom right of the screen. Title *: bold text noted above the message (leaving empty, it will be replaced by Scripts Manager). Message *: it indicates the intention of the notification (e.g. Launch of the current stream...). Icon: by clicking on the ellipsis, a dialog box will open asking for the icon to be displayed to the left of the title and message (leaving empty, it will be replaced by the Scripts Manager icon). This block receives the following variables: notification:icon (type: String): replaces notification icon if not set.

### Open URL

| Opens the requested web address directly in the default browser. Address *: address of the web page to open in the browser.

### Scripts Manager Launch

| Activated only when launching Scripts Manager. It can be used for example to launch an infinite loop (if the program is already launched, use the Test option to launch the action once).

### Self-Timer

| Ideal for waiting before doing an action. Often used in parallel with another action (e.g. displaying a Twitch source and in parallel waiting 5 seconds then hiding the source).

### Socket Request

| Sending data to a socket server. IPv4 *: IP address of the server receiving the request. Port: the port is a number which also makes it possible to deduce where to send the request (depending on the server in question). Data *: written data is sent as is.

### Toggle Block

| Reacts like or depending on the Enable option. Block ID: the identifier of the block which is going to be or to activate/deactivate (it can be found by hovering over the title of the blocks). State: On: reacts when activated for green block or active for orange block. Both: reacts as much to activation as to deactivation. Toggle: if the state is On, it will change to Off, and vice versa. Off: reacts when deactivated for green block or deactivated for orange block.

### USB Detection

| Detects the connection as well as the disconnection of a USB peripheral. Device: peripheral name to wait for (if left blank, will wait for all peripheral). State: Connection: when connecting a peripheral. Disconnection: when disconnecting a peripheral. This block returns the following variables: usb-detection:name (scope: Next, type: String): peripheral name given by the manufacturer. usb-detection:manufacturer (scope: Next, type: String): name of the manufacturer of this peripheral. usb-detection:serial (scope: Next, type: String): serial number, if there is one. usb-detection:connected (scope: Next, type: Boolean): whether the device is connected or disconnected.

### Variable Condition

| Prevents going to the next action if the configured terms are not respected (take the variable of the first scope that is available: Next, then Local, and finally Global). Value 1 *: the input value to compare. Condition: the condition depends on the type of variable, by choosing `Equal`, Value 1 must be identical to Value 2 to activate the following connected blocks. Value 2 *: will be compared to Value 1 depending on the Condition you choose. Variable type: String: is just a text. Number: only accepts a number. Boolean: is like a switch (on or off represented by `true` and `false` respectively).

### Variable Increment

| Adds or removes the chosen number to the variable (consider the variable at 0 if it is not defined). Can be used to count for example the number of Twitch messages received. Variable name: name of the numeric variable that will be incremented or decremented. Increment: number to add or subtract from the variable. Scope: Global: will make the variable available for all Multi Actions. Local: will only be accessible for the module where the block is located. Next: will give the variable to the blocks connected at the output of this block.

### Variable Remove

| Deletes a variable in the chosen scope. Variable name: name of the variable that will be deleted. Scope: Global: will make the variable available for all Multi Actions. Local: will only be accessible for the module where the block is located. Next: will give the variable to the blocks connected at the output of this block.

### Variable Replace

| Replaces a term contained one or more times in the given value. Variable name: name of the variable that will receive the modification. Value *: the input value in which to search. Search *: the search term in Value which will be replaced. Replace *: term by which Search will be replaced. Replace all: replaces all terms found (if unchecked, only replaces the first one found). Scope: Global: will make the variable available for all Multi Actions. Local: will only be accessible for the module where the block is located. Next: will give the variable to the blocks connected at the output of this block.

### Variable Setter

| Gives the value given to a variable by specifying its scope. Variable name: name of the variable that will receive the value. Value *: the input value that will be stored in the variable. Variable type: String: is just a text. Number: only accepts a number. Boolean: is like a switch (on or off represented by `true` and `false` respectively). Scope: Global: will make the variable available for all Multi Actions. Local: will only be accessible for the module where the block is located. Next: will give the variable to the blocks connected at the output of this block.

### Websocket Request

| Sending data to a websocket server. URL *: address often including the communication port to the server. Data *: written data is sent as is.

## Discord

### Discord - Webhook Embed

| Allows you to send a block message in a Discord channel. You must first go to the settings of the channel in question in Integrations > Create a webhooks. All you have to do is Copy the webhook URL of the bot you just created, and enter it in the appropriate field of the block. Title *: published title. URL *: click redirect address. Thumbnail: small image in the upper right corner. Big Image: large image placed below the block information. Webhook: URL retrieved from Discord room settings. Message *: placed above the block (can contain @everyone if needed). Inline 1 *: title and text of the first column of information. Inline 2 *: title and text of the second column of information. This block returns the following variables: discord:webhook:id (scope: Next, type: String): id of the message sent or edited. discord:webhook:create:date and discord:webhook:create:time: date of creation of the message (refer to date and time variables which are presented in the same way). discord:webhook:edit:date and discord:webhook:edit:time: date of edition of the message (refer to date and time variables which are presented in the same way). discord:webhook:content (scope: Next, type: String): message content. discord:webhook:channel:id (scope: Next, type: String): id of the channel where the message is. discord:webhook:author:id (scope: Next, type: String): id of message author (that of the webhook in this case). discord:webhook:author:username (scope: Next, type: String): name of message author (that of the webhook in this case). discord:webhook:author:avatar (scope: Next, type: String): image address or empty string. discord:webhook:mention:everyone (scope: Next, type: Boolean): if the message mentioned all users of the server. discord:webhook:embeds:count (scope: Next, type: Number): number of message blocks present in this message. discord:webhook:embed[i]:url (scope: Next, type: String): address opened on click on message block number i or empty string. discord:webhook:embed[i]:title (scope: Next, type: String): message block title number i. discord:webhook:embed[i]:image (scope: Next, type: Texte): large image present in message block number i or empty string. discord:webhook:embed[i]:thumbnail (scope: Next, type: Texte): small image present in the upper right corner of the message block number i or empty string. discord:webhook:embed[i]:fields:count (scope: Next, type: Number): number of fields present in message block number i. discord:webhook:embed[i]:field[j]:inline (scope: Next, type: Boolean): if the number field i is inline (`true` in this case). discord:webhook:embed[i]:field[j]:name (scope: Next, type: String): field name number i (column title in this case). discord:webhook:embed[i]:field[j]:value (scope: Next, type: String): number field text i (column text in this case). This block receives the following variables: discord:webhook:id (type: String): id of the message to be edited. discord:thumbnail (type: String): replace message thumbnail if not set. discord:big-image (type: String): replaces the large message image if not set.

### Discord - Webhook Message

| Allows you to send a message in a Discord channel. You must first go to the settings of the channel in question in Integrations > Create a webhooks. All you have to do is Copy the webhook URL of the bot you just created, and enter it in the appropriate field of the block. Webhook: URL retrieved from Discord channel settings. Message *: message published on the webhook channel (can contain @everyone if needed). This block returns the following variables: discord:webhook:id (scope: Next, type: String): id of the message sent or edited. discord:webhook:create:date and discord:webhook:create:time: date of creation of the message (refer to date and time variables which are presented in the same way). discord:webhook:edit:date and discord:webhook:edit:time: date of edition of the message (refer to date and time variables which are presented in the same way). discord:webhook:content (scope: Next, type: String): message content. discord:webhook:channel:id (scope: Next, type: String): id of the channel where the message is. discord:webhook:author:id (scope: Next, type: String): id of message author (that of the webhook in this case). discord:webhook:author:username (scope: Next, type: String): name of message author (that of the webhook in this case). discord:webhook:author:avatar (scope: Next, type: String): image address or empty string. discord:webhook:mention:everyone (scope: Next, type: Boolean): if the message mentioned all users of the server. discord:webhook:embeds:count (scope: Next, type: Number): number of message blocks present in this message (`0` in this case). This block receives the following variables: discord:webhook:id (type: String): id of the message to be edited.

## OBS Studio

### OBS Studio - Connection

| When attempting to connect or disconnect from OBS Studio. State: Opened: when connecting to the websocket. Closed: when disconnecting the websocket. This block returns the following variables: obs-studio:connection (scope: Global, type: Boolean): allows to know if OBS Studio is connected to Scripts Manager.

### OBS Studio - Exit

| Specifies that OBS Studio has been closed.

### OBS Studio - Lock Source

| When a source is locked or unlocked (small padlock) in the list of sources in OBS Studio. Scene name: list all existing scenes (if left blank, reacts for everyone). Source name: list all existing sources (if left blank, reacts for everyone). State: On: reacts when activated for green block or active for orange block. Toggle: if the state is On, it will change to Off, and vice versa. Off: reacts when deactivated for green block or deactivated for orange block. This block returns the following variables: obs-studio:lock-source:id (scope: Next, type: Number): source id locked or unlocked. obs-studio:lock-source:name (scope: Next, type: String): source name locked or unlocked. obs-studio:lock-source:locked (scope: Next, type: Boolean): whether the source is locked or unlocked.

### OBS Studio - Recording

| When recording starts or stops, or to choose what to do. State: On: reacts when activated for green block or active for orange block. Both: reacts as much to activation as to deactivation. Toggle: if the state is On, it will change to Off, and vice versa. Off: reacts when deactivated for green block or deactivated for orange block. This block returns the following variables: obs-studio:recording (scope: Global, type: Boolean): allows you to know if a recording is in progress or not.

### OBS Studio - Replay

| When replay starts or stops, or to choose what to do. State: On: reacts when activated for green block or active for orange block. Both: reacts as much to activation as to deactivation. Toggle: if the state is On, it will change to Off, and vice versa. Off: reacts when deactivated for green block or deactivated for orange block. This block returns the following variables: obs-studio:replay (scope: Global, type: Boolean): allows you to know if a replay is in progress or not.

### OBS Studio - Save Replay

| When the recording is saved or to save it.

### OBS Studio - Set Browser

| Changes the web address to display on the source. Source name: list all existing browser sources. URL *: internet address to display.

### OBS Studio - Set Image

| Changes the image to display on the source. Source name: list all existing image sources. File *: by clicking on the ellipsis, a dialog box will open asking you for the image to display.

### OBS Studio - Set Media

| Changes the media to display on the source. Source name: list all existing media sources (mainly videos). File *: by clicking on the ellipsis, a dialog box will open asking you for the media to display.

### OBS Studio - Set Text

| Changes the content of a text source. Source name: list all existing text sources. Text *: the input value to put in the source.

### OBS Studio - Source Selected

| When a source is selected in the source list of OBS Studio. Scene name: list all existing scenes (if left blank, reacts for everyone). Source name: list all existing sources (if left blank, reacts for everyone). This block returns the following variables: obs-studio:source-selected:id (scope: Next, type: Number): identifier of the selected source. obs-studio:source-selected:name (scope: Next, type: String): selected source name.

### OBS Studio - Streaming

| When streaming starts or stops, or to choose what to do. State: On: reacts when activated for green block or active for orange block. Both: reacts as much to activation as to deactivation. Toggle: if the state is On, it will change to Off, and vice versa. Off: reacts when deactivated for green block or deactivated for orange block. This block returns the following variables: obs-studio:streaming (scope: Global, type: Boolean): allows you to know if a streaming is in progress or not.

### OBS Studio - Switch Scene

| When changing scene or to change scene (green block reacts to all changes if no scene is selected). Scene name: list all existing scenes (if left blank, reacts for everyone). This block returns the following variables: obs-studio:switch-scene (scope: Global, type: String): gives the name of the currently displayed scene.

### OBS Studio - Toggle Filter

| When the filter of a source is activated or deactivated (small eye) in the list of filters of this source on OBS Studio. Source name: list all existing sources (if left blank, reacts for everyone). Filter name: lists the filters present on the selected source (if left blank, reacts for everyone). State: Show: reacts when activated for green block or active for orange block. Toggle: if the state is Show, it will change to Hide, and vice versa. Hide: reacts when deactivated for green block or deactivated for orange block. This block returns the following variables: obs-studio:toggle-filter:name (scope: Next, type: String): filter name. obs-studio:toggle-filter:source (scope: Next, type: String): source name of this filter. obs-studio:toggle-filter:enabled (scope: Next, type: Boolean): if the filter is activated or deactivated.

### OBS Studio - Toggle Source

| When a source is enabled or disabled (little eye) in the source list of OBS Studio. Scene name: list all existing scenes (if left blank, reacts for everyone). Source name: list all existing sources (if left blank, reacts for everyone). State: Show: reacts when activated for green block or active for orange block. Toggle: if the state is Show, it will change to Hide, and vice versa. Hide: reacts when deactivated for green block or deactivated for orange block. This block returns the following variables: obs-studio:toggle-source:id (scope: Next, type: Number): source id. obs-studio:toggle-source:name (scope: Next, type: String): source name. obs-studio:toggle-source:scene (scope: Next, type: String): name of the scene where the source is located. obs-studio:toggle-source:enabled (scope: Next, type: Boolean): whether the source is activated or deactivated.

### OBS Studio - Virtual Camera

| When the virtual camera is enabled or disabled. State: Start: reacts when activated for green block or active for orange block. Toggle: if the state is Start, it will change to Stop, and vice versa. Stop: reacts when deactivated for green block or deactivated for orange block. This block returns the following variables: obs-studio:virtualcam (scope: Global, type: Boolean): allows you to know if the virtual camera is in progress or not.

## Spotify

### Spotify - Add To Queue

| Adds the first track found to the play queue. Track *: specifies the song/music to add to the list. This block receives the following variables: spotify:search[0]:uri (type: String): add the track (returned by other Spotify blocks) to the queue.

### Spotify - Current Queue

| Retrieves information of all track present in the play queue. This block returns the following variables: spotify:current:count (scope: Next, type: Number): number of track in the queue. spotify:current[i]:name (scope: Next, type: String): track name number i (starts at 0). spotify:current[i]:type (scope: Next, type: String): type of the result number i which is for this there `track`. spotify:current[i]:uri (scope: Next, type: String): spotify-specific string (representing the result) of track number i. spotify:current[i]:link (scope: Next, type: String): web page address of track number i. spotify:current[i]:image (scope: Next, type: String): cover of track number i. spotify:current[i]:duration (scope: Next, type: Number): duration in milliseconds of track number i. spotify:current[i]:artist[j]:name (scope: Next, type: String): name of artist number j of track number i. spotify:current[i]:artist[j]:uri (scope: Next, type: String): spotify-specific string (representing the result) of artist number j of track number i. spotify:current[i]:artist[j]:link (scope: Next, type: String): web page address of artist number j of track number i. spotify:current[i]:artists:name (scope: Next, type: String): name of artists (separated by a comma) of track number i. spotify:current[i]:artists:count (scope: Next, type: Number): number of artists of track number i.

### Spotify - Currently Playing

| Retrieves the information of the track currently playing. This block returns the following variables: spotify:current:count (scope: Next, type: Number): number of track (`0` if no track is playing). spotify:current[0]:name (scope: Next, type: String): track name (starts at 0). spotify:current[0]:type (scope: Next, type: String): type of the result which is for this there `track`. spotify:current[0]:uri (scope: Next, type: String): spotify-specific string (representing the result) of track. spotify:current[0]:link (scope: Next, type: String): web page address of track. spotify:current[0]:image (scope: Next, type: String): cover of track. spotify:current[0]:duration (scope: Next, type: Number): duration in milliseconds of track. spotify:current[0]:artist[j]:name (scope: Next, type: String): name of artist number j of track. spotify:current[0]:artist[j]:uri (scope: Next, type: String): spotify-specific string (representing the result) of artist number j of track. spotify:current[0]:artist[j]:link (scope: Next, type: String): web page address of artist number j of track. spotify:current[0]:artists:name (scope: Next, type: String): name of artists (separated by a comma) of track. spotify:current[0]:artists:count (scope: Next, type: Number): number of artists of track.

### Spotify - Play/Pause

| Play a title, play the current title, or pause. Track *: specifies the song/music to play (leaving empty, just do the action below). State: Play: plays, and launches the track if specified. Toggle: if the state is Play, it will change to Pause, and vice versa. Pause: pauses the current listening. This block receives the following variables: spotify:search[0]:uri (type: String): add the track (returned by other Spotify blocks) to the queue.

### Spotify - Prev/Next

| Skips to the next track, or back to the previous one. State: Prev: back to the previous one. Next: skips to the next track.

### Spotify - Repeat

| Changes the repeat mode of tracks. State: Off: turn off repeat. Track: repeats the currently playing track. Context: repeats the playlist currently playing.

### Spotify - Search

| Look for the tracks you are looking for. Track *: specifies the song/music to search for. This block returns the following variables: spotify:search:count (scope: Next, type: Number): number of results returned by the search. spotify:search[i]:name (scope: Next, type: String): track name number i (starts at 0). spotify:search[i]:type (scope: Next, type: String): type of the result number i which is for this there `track`. spotify:search[i]:uri (scope: Next, type: String): spotify-specific string (representing the result) of track number i. spotify:search[i]:link (scope: Next, type: String): web page address of track number i. spotify:search[i]:image (scope: Next, type: String): cover of track number i. spotify:search[i]:duration (scope: Next, type: Number): duration in milliseconds of track number i. spotify:search[i]:artist[j]:name (scope: Next, type: String): name of artist number j of track number i. spotify:search[i]:artist[j]:uri (scope: Next, type: String): spotify-specific string (representing the result) of artist number j of track number i. spotify:search[i]:artist[j]:link (scope: Next, type: String): web page address of artist number j of track number i. spotify:search[i]:artists:name (scope: Next, type: String): name of artists (separated by a comma) of track number i. spotify:search[i]:artists:count (scope: Next, type: Number): number of artists of track number i.

### Spotify - Shuffle

| Enables or disables shuffle track mode. State: On: activate shuffle mode. Toggle: if the state is On, it will change to Off, and vice versa. Off: deactivate shuffle mode.

### Spotify - Volume

| Changes the volume of the player that is currently playing. Volume: the volume to apply in percentage.

## Stream Deck / Touch Portal

### Stream Deck / Touch Portal - Action

| Is operated by a button on the Stream Deck or your Touch Portal app. Block ID: identifier of the current block to enter in the parameters of the `Multi Actions: Button` button.

## Twitch

### Twitch - Action

| Corresponds to the `/me` command sent in the chat. Message *: message sent for orange block, or message received from a user for green block (if left blank, reacts to all messages). Account: type of account to use for this action (if `Bot` account is not configured, `Broadcaster` account will be used). Case sensitive: must have the same upper and lower case if the box is checked, otherwise `GooD` and `good` are considered identical. Contains sentence: the word can be anywhere in the message if the box is checked, otherwise the message must be exactly as entered. Type of viewer: check the boxes corresponding to the types of viewers who can operate the block. This block returns the following variables: twitch:message (scope: Next, type: String): message sent by the user on the chat. twitch:message:id (scope: Next, type: String): identifier of the received message. twitch:message:date and twitch:message:time: date of receipt of the action (refer to date and time variables which are presented in the same way). twitch:message:type (scope: Next, type: String): returns `Action` in this case. twitch:user:id (scope: Next, type: String): unique user identifier. twitch:user:type (scope: Next, type: String): the type of the user (possible values are undefined, 'mod', 'global_mod', 'admin' and 'staff'). twitch:user:name (scope: Next, type: String): lowercase username. twitch:user:display (scope: Next, type: String): user name including the capitals chosen by the user. twitch:user:color (scope: Next, type: String): username color displayed in chat. twitch:flags:broadcaster (scope: Next, type: Boolean): if the message comes from the streamer (the one who owns the chain, so you). twitch:flags:founder (scope: Next, type: Boolean): the first participants in the chain once the affiliation is activated. twitch:flags:moderator (scope: Next, type: Boolean): if the message comes from a channel moderator. twitch:flags:subscriber (scope: Next, type: Boolean): if the user is currently subscribed to the channel. twitch:flags:vip (scope: Next, type: Boolean): if you have given the role of VIP to this user. twitch:flags:follower (scope: Next, type: Boolean): lets you know if the user is following the channel.

### Twitch - Announce

| Highlighted announcements in chat. Message *: message sent for orange block, or message received from a user for green block (if left blank, reacts to all messages). Color: some announce colors are available, `Primary` being neutral. Account: type of account to use for this action (if `Bot` account is not configured, `Broadcaster` account will be used). Case sensitive: must have the same upper and lower case if the box is checked, otherwise `GooD` and `good` are considered identical. Contains sentence: the word can be anywhere in the message if the box is checked, otherwise the message must be exactly as entered. Type of viewer: check the boxes corresponding to the types of viewers who can operate the block. This block returns the following variables: twitch:message (scope: Next, type: String): message sent by the user on the chat. twitch:message:id (scope: Next, type: String): identifier of the received message. twitch:message:date and twitch:message:time: date of receipt of the announcement (refer to date and time variables which are presented in the same way). twitch:message:type (scope: Next, type: String): returns `Announce` in this case. twitch:user:id (scope: Next, type: String): unique user identifier. twitch:user:type (scope: Next, type: String): the type of the user (possible values are undefined, 'mod', 'global_mod', 'admin' and 'staff'). twitch:user:name (scope: Next, type: String): lowercase username. twitch:user:display (scope: Next, type: String): user name including the capitals chosen by the user. twitch:user:color (scope: Next, type: String): username color displayed in chat. twitch:flags:broadcaster (scope: Next, type: Boolean): if the message comes from the streamer (the one who owns the chain, so you). twitch:flags:founder (scope: Next, type: Boolean): the first participants in the chain once the affiliation is activated. twitch:flags:moderator (scope: Next, type: Boolean): if the message comes from a channel moderator. twitch:flags:subscriber (scope: Next, type: Boolean): if the user is currently subscribed to the channel. twitch:flags:vip (scope: Next, type: Boolean): if you have given the role of VIP to this user. twitch:flags:follower (scope: Next, type: Boolean): lets you know if the user is following the channel.

### Twitch - Ban

| Reacts to ban a user or to ban one. User *: targeted user. Reason *: the reason why the ban took place. This block returns the following variables: twitch:ban:user:id (scope: Next, type: String): number representing the Twitch user (does not change on name change). twitch:ban:user:name (scope: Next, type: String): username (like the one shown but all lowercase). twitch:ban:user:display (scope: Next, type: String): username as displayed in chat. twitch:ban:reason (scope: Next, type: String): the reason why the ban took place. twitch:ban:start:date and twitch:ban:start:time: start date of the ban (refer to date and time variables which are presented in the same way).

### Twitch - Chat Clear

| Clear all chat messages or clear chat.

### Twitch - Cheer

| When bits are sent by a viewer. This block returns the following variables: twitch:cheer:bits (scope: Next, type: Number): number of bits received. twitch:cheer:message (scope: Next, type: String): message including bit emotes. twitch:cheer:anonymous (scope: Next, type: Boolean): whether the sending of bits is done anonymously.

### Twitch - Command

| When a command is written in the chat (a command is a keyword preceded by an exclamation mark). Command: name of the command to capture, do not put the exclamation mark before (if left blank, reacts to all messages). Type of viewer: check the boxes corresponding to the types of viewers who can operate the block. This block returns the following variables: twitch:command (scope: Next, type: String): command used (without the exclamation point). twitch:command:arguments (scope: Next, type: String): the following words the name of the command. twitch:command:argument[i] (scope: Next, type: String): each word following the command name separately (replace the i with a number starting with zero). twitch:message:id (scope: Next, type: String): identifier of the received message. twitch:message:date and twitch:message:time: date command received (refer to date and time variables which are presented in the same way). twitch:message:type (scope: Next, type: String): returns `Command` in this case. twitch:user:id (scope: Next, type: String): unique user identifier. twitch:user:type (scope: Next, type: String): the type of the user (possible values are undefined, 'mod', 'global_mod', 'admin' and 'staff'). twitch:user:name (scope: Next, type: String): lowercase username. twitch:user:display (scope: Next, type: String): user name including the capitals chosen by the user. twitch:user:color (scope: Next, type: String): username color displayed in chat. twitch:flags:broadcaster (scope: Next, type: Boolean): if the message comes from the streamer (the one who owns the chain, so you). twitch:flags:founder (scope: Next, type: Boolean): the first participants in the chain once the affiliation is activated. twitch:flags:moderator (scope: Next, type: Boolean): if the message comes from a channel moderator. twitch:flags:subscriber (scope: Next, type: Boolean): if the user is currently subscribed to the channel. twitch:flags:vip (scope: Next, type: Boolean): if you have given the role of VIP to this user. twitch:flags:follower (scope: Next, type: Boolean): lets you know if the user is following the channel.

### Twitch - Community Pay Forward

| Fires when a user pays forward a subscription that was gifted to them to the community. This block returns the following variables: twitch:all:user:id and twitch:community-pay-forward:user:id (scope: Next, type: String): number representing the Twitch user (does not change on name change). twitch:user:type (scope: Next, type: String): the type of the user (possible values are undefined, 'mod', 'global_mod', 'admin' and 'staff'). twitch:all:user:name and twitch:community-pay-forward:user:name (scope: Next, type: String): username (like the one shown but all lowercase). twitch:all:user:display and twitch:community-pay-forward:user:display (scope: Next, type: String): username as displayed in chat. twitch:user:color (scope: Next, type: String): username color displayed in chat. twitch:flags:broadcaster (scope: Next, type: Boolean): if the message comes from the streamer (the one who owns the chain, so you). twitch:flags:founder (scope: Next, type: Boolean): the first participants in the chain once the affiliation is activated. twitch:flags:moderator (scope: Next, type: Boolean): if the message comes from a channel moderator. twitch:flags:subscriber (scope: Next, type: Boolean): if the user is currently subscribed to the channel. twitch:flags:vip (scope: Next, type: Boolean): if you have given the role of VIP to this user. twitch:flags:follower (scope: Next, type: Boolean): lets you know if the user is following the channel. twitch:community-pay-forward:original:id (scope: Next, type: String): the user ID of the original gifter. twitch:community-pay-forward:original:name (scope: Next, type: String): the name of the original gifter. twitch:community-pay-forward:original:display (scope: Next, type: String): the display name of the original gifter.

### Twitch - Community Sub

| Fires when a user gifts random subscriptions to the community of a channel. This block returns the following variables: twitch:all:user:id and twitch:community-sub:user:id (scope: Next, type: String): number representing the Twitch user (does not change on name change). twitch:user:type (scope: Next, type: String): the type of the user (possible values are undefined, 'mod', 'global_mod', 'admin' and 'staff'). twitch:all:user:name and twitch:community-sub:user:name (scope: Next, type: String): username (like the one shown but all lowercase). twitch:all:user:display and twitch:community-sub:user:display (scope: Next, type: String): username as displayed in chat. twitch:user:color (scope: Next, type: String): username color displayed in chat. twitch:flags:broadcaster (scope: Next, type: Boolean): if the message comes from the streamer (the one who owns the chain, so you). twitch:flags:founder (scope: Next, type: Boolean): the first participants in the chain once the affiliation is activated. twitch:flags:moderator (scope: Next, type: Boolean): if the message comes from a channel moderator. twitch:flags:subscriber (scope: Next, type: Boolean): if the user is currently subscribed to the channel. twitch:flags:vip (scope: Next, type: Boolean): if you have given the role of VIP to this user. twitch:flags:follower (scope: Next, type: Boolean): lets you know if the user is following the channel. twitch:community-sub:original:id (scope: Next, type: String): the user ID of the user that gifted the subscription(s). twitch:community-sub:original:name (scope: Next, type: String): the name of the user that gifted the subscription(s). twitch:community-sub:original:display (scope: Next, type: String): the display name of the user that gifted the subscription(s). twitch:community-sub:count (scope: Next, type: Number): number of subscriptions offered. twitch:community-sub:plan:id (scope: Next, type: String): the plan ID of the subscription(s).

### Twitch - Delete Message

| Allows you to delete a chat message. Type: All: delete all chat messages. By variable: Will delete the message received by another Twitch block. This block receives the following variables: twitch:message-id (type: String): delete the message with its id (returned by other Twitch blocks).

### Twitch - Emote Only

| Make chat not accept anything other than emotes, or react when changing this option. State: On: activate emote only mode. Both: reacts as much to activation as to deactivation. Off: deactivate emote only mode. This block returns the following variables: twitch:emote-only:enabled (scope: Next, type: Boolean): whether the option is enabled or not.

### Twitch - First Message

| Know when the first message occurs after the launch of the live, or at the first message of each user. Type: Command: name of the command to capture, do not put the exclamation mark before (if left blank, reacts to all messages). Message: message sent for orange block, or message received from a user for green block (if left blank, reacts to all messages). Case sensitive (in message type): must have the same upper and lower case if the box is checked, otherwise `GooD` and `good` are considered identical. Contains sentence (in message type): the word can be anywhere in the message if the box is checked, otherwise the message must be exactly as entered. Type of viewer: check the boxes corresponding to the types of viewers who can operate the block. This block returns the following variables: twitch:users[i] (scope: Global, type: Array): checks for users who have already spoken (reset by setting the variable to `false` with the Variable Setter block). twitch:message (scope: Next, type: String): message sent by the user on the chat. twitch:message:id (scope: Next, type: String): identifier of the received message. twitch:message:date and twitch:message:time: date message received (refer to date and time variables which are presented in the same way). twitch:message:type (scope: Next, type: String): returns `Message` in this case. twitch:user:id (scope: Next, type: String): unique user identifier. twitch:user:type (scope: Next, type: String): the type of the user (possible values are undefined, 'mod', 'global_mod', 'admin' and 'staff'). twitch:user:name (scope: Next, type: String): lowercase username. twitch:user:display (scope: Next, type: String): user name including the capitals chosen by the user. twitch:user:color (scope: Next, type: String): username color displayed in chat. twitch:flags:broadcaster (scope: Next, type: Boolean): if the message comes from the streamer (the one who owns the chain, so you). twitch:flags:founder (scope: Next, type: Boolean): the first participants in the chain once the affiliation is activated. twitch:flags:moderator (scope: Next, type: Boolean): if the message comes from a channel moderator. twitch:flags:subscriber (scope: Next, type: Boolean): if the user is currently subscribed to the channel. twitch:flags:vip (scope: Next, type: Boolean): if you have given the role of VIP to this user. twitch:flags:follower (scope: Next, type: Boolean): lets you know if the user is following the channel. This block receives the following variables: twitch:users[i] (type: Array): list of all users who spoke, i must be replaced by the block ID (displayed when hovering over its title).

### Twitch - Follow

| When a user starts following your channel. This block returns the following variables: twitch:all:user:id and twitch:follow:user:id (scope: Next, type: String): number representing the Twitch user (does not change on name change). twitch:user:type (scope: Next, type: String): the type of the user (possible values are undefined, 'mod', 'global_mod', 'admin' and 'staff'). twitch:all:user:name and twitch:follow:user:name (scope: Next, type: String): username (like the one shown but all lowercase). twitch:all:user:display and twitch:follow:user:display (scope: Next, type: String): username as displayed in chat. twitch:user:color (scope: Next, type: String): username color displayed in chat. twitch:flags:broadcaster (scope: Next, type: Boolean): if the message comes from the streamer (the one who owns the chain, so you). twitch:flags:founder (scope: Next, type: Boolean): the first participants in the chain once the affiliation is activated. twitch:flags:moderator (scope: Next, type: Boolean): if the message comes from a channel moderator. twitch:flags:subscriber (scope: Next, type: Boolean): if the user is currently subscribed to the channel. twitch:flags:vip (scope: Next, type: Boolean): if you have given the role of VIP to this user. twitch:flags:follower (scope: Next, type: Boolean): lets you know if the user is following the channel.

### Twitch - Followers Only

| Make sure that only people who follow the channel can talk in the chat, or react when changing this option. State: On: activate followers only mode. Both: reacts as much to activation as to deactivation. Off: deactivate followers only mode. This block returns the following variables: twitch:follower-only:enabled (scope: Next, type: Boolean): whether the option is enabled or not.

### Twitch - Game

| Searches for information about the game or category. Game: game or category for which information will be retrieved. This block returns the following variables: twitch:game:id (scope: Next, type: String): unique number representing the game or category. twitch:game:name (scope: Next, type: String): name written as featured by Twitch. twitch:game:image (scope: Next, type: String): game or category image (includes two values to replace `{width}` and `{height}`).

### Twitch - Gift Paid Upgrade

| Fires when a user upgrades their gift subscription to a paid subscription in a channel. This block returns the following variables: twitch:all:user:id and twitch:gift-paid-upgrade:user:id (scope: Next, type: String): number representing the Twitch user (does not change on name change). twitch:user:type (scope: Next, type: String): the type of the user (possible values are undefined, 'mod', 'global_mod', 'admin' and 'staff'). twitch:all:user:name and twitch:gift-paid-upgrade:user:name (scope: Next, type: String): username (like the one shown but all lowercase). twitch:all:user:display and twitch:gift-paid-upgrade:user:display (scope: Next, type: String): username as displayed in chat. twitch:user:color (scope: Next, type: String): username color displayed in chat. twitch:flags:broadcaster (scope: Next, type: Boolean): if the message comes from the streamer (the one who owns the chain, so you). twitch:flags:founder (scope: Next, type: Boolean): the first participants in the chain once the affiliation is activated. twitch:flags:moderator (scope: Next, type: Boolean): if the message comes from a channel moderator. twitch:flags:subscriber (scope: Next, type: Boolean): if the user is currently subscribed to the channel. twitch:flags:vip (scope: Next, type: Boolean): if you have given the role of VIP to this user. twitch:flags:follower (scope: Next, type: Boolean): lets you know if the user is following the channel. twitch:gift-paid-upgrade:original:name (scope: Next, type: String): the name of the user that gifted the original subscription. twitch:gift-paid-upgrade:original:display (scope: Next, type: String): the display name of the user that gifted the original subscription.

### Twitch - Info

| Triggers when channel information changes, retrieves channel information, or changes channel information. Status *: channel live title. Game *: game or category of live. Channel *: twitch channel for which to retrieve the information. This block returns the following variables: twitch:channel:name (scope: Next, type: String): username (like the one shown but all lowercase). twitch:channel:display (scope: Next, type: String): username as displayed in chat. twitch:channel:title (scope: Next, type: String): channel live title. twitch:channel:lang (scope: Next, type: String): channel language. twitch:channel:game:id (scope: Next, type: String): unique number representing the game or category. twitch:channel:game:name (scope: Next, type: String): name written as featured by Twitch. twitch:channel:game:image (scope: Next, type: String): game or category image (includes two values to replace `{width}` and `{height}`).

### Twitch - Message

| Send a message on the chat or react to these messages. Message *: message sent for orange block, or message received from a user for green block (if left blank, reacts to all messages). Account: type of account to use for this action (if `Bot` account is not configured, `Broadcaster` account will be used). Case sensitive: must have the same upper and lower case if the box is checked, otherwise `GooD` and `good` are considered identical. Contains sentence: the word can be anywhere in the message if the box is checked, otherwise the message must be exactly as entered. Type of viewer: check the boxes corresponding to the types of viewers who can operate the block. This block returns the following variables: twitch:message (scope: Next, type: String): message sent by the user on the chat. twitch:message:id (scope: Next, type: String): identifier of the received message. twitch:message:date and twitch:message:time: date message received (refer to date and time variables which are presented in the same way). twitch:message:type (scope: Next, type: String): returns `Message` in this case. twitch:user:id (scope: Next, type: String): unique user identifier. twitch:user:type (scope: Next, type: String): the type of the user (possible values are undefined, 'mod', 'global_mod', 'admin' and 'staff'). twitch:user:name (scope: Next, type: String): lowercase username. twitch:user:display (scope: Next, type: String): user name including the capitals chosen by the user. twitch:user:color (scope: Next, type: String): username color displayed in chat. twitch:flags:broadcaster (scope: Next, type: Boolean): if the message comes from the streamer (the one who owns the chain, so you). twitch:flags:founder (scope: Next, type: Boolean): the first participants in the chain once the affiliation is activated. twitch:flags:moderator (scope: Next, type: Boolean): if the message comes from a channel moderator. twitch:flags:subscriber (scope: Next, type: Boolean): if the user is currently subscribed to the channel. twitch:flags:vip (scope: Next, type: Boolean): if you have given the role of VIP to this user. twitch:flags:follower (scope: Next, type: Boolean): lets you know if the user is following the channel.

### Twitch - Message Delay

| Configures the chat message delay, which allows messages to be moderated before they appear for viewers (does not affect moderators). Delay: duration before the message is visible to everyone (in seconds). State: On: activate message delay. Off: deactivate message delay.

### Twitch - Message Remove

| Fires when a single message is removed from a channel. Message: message sent for orange block, or message received from a user for green block (if left blank, reacts to all messages). Case sensitive: must have the same upper and lower case if the box is checked, otherwise `GooD` and `good` are considered identical. Contains sentence: the word can be anywhere in the message if the box is checked, otherwise the message must be exactly as entered. Type of viewer: check the boxes corresponding to the types of viewers who can operate the block. This block returns the following variables: twitch:message (scope: Next, type: String): message sent by the user on the chat. twitch:message:id (scope: Next, type: String): identifier of the received message. twitch:message:date and twitch:message:time: date the message was deleted (refer to date and time variables which are presented in the same way). twitch:message:type (scope: Next, type: String): returns `MessageRemove` in this case. twitch:user:type (scope: Next, type: String): the type of the user (possible values are undefined, 'mod', 'global_mod', 'admin' and 'staff'). twitch:user:name (scope: Next, type: String): lowercase username.

### Twitch - Prime Community Gift

| Fires when a user gifts a Twitch Prime benefit to the channel. This block returns the following variables: twitch:all:user:id and twitch:prime-community-gift:user:id (scope: Next, type: String): number representing the Twitch user (does not change on name change). twitch:user:type (scope: Next, type: String): the type of the user (possible values are undefined, 'mod', 'global_mod', 'admin' and 'staff'). twitch:all:user:name and twitch:prime-community-gift:user:name (scope: Next, type: String): username (like the one shown but all lowercase). twitch:all:user:display and twitch:prime-community-gift:user:display (scope: Next, type: String): username as displayed in chat. twitch:user:color (scope: Next, type: String): username color displayed in chat. twitch:flags:broadcaster (scope: Next, type: Boolean): if the message comes from the streamer (the one who owns the chain, so you). twitch:flags:founder (scope: Next, type: Boolean): the first participants in the chain once the affiliation is activated. twitch:flags:moderator (scope: Next, type: Boolean): if the message comes from a channel moderator. twitch:flags:subscriber (scope: Next, type: Boolean): if the user is currently subscribed to the channel. twitch:flags:vip (scope: Next, type: Boolean): if you have given the role of VIP to this user. twitch:flags:follower (scope: Next, type: Boolean): lets you know if the user is following the channel.

### Twitch - Prime Paid Upgrade

| Fires when a user upgrades their Prime subscription to a paid subscription in a channel. This block returns the following variables: twitch:all:user:id and twitch:prime-paid-upgrade:user:id (scope: Next, type: String): number representing the Twitch user (does not change on name change). twitch:all:user:name and twitch:prime-paid-upgrade:user:name (scope: Next, type: String): username (like the one shown but all lowercase). twitch:all:user:display and twitch:prime-paid-upgrade:user:display (scope: Next, type: String): username as displayed in chat. twitch:prime-paid-upgrade:plan:id (scope: Next, type: String): the plan ID of the subscription.

### Twitch - Raid

| Allows you to raid (which brings viewers to another channel), or reacts when another channel sends their viewers to your channel. Channel *: name of the channel to take into account (if left blank, reacts to all channels). This block returns the following variables: twitch:raid:channel (scope: Next, type: String): name of the channel to take into account. twitch:raid:count (scope: Next, type: Number): number of users viewing this share. twitch:user:id (scope: Next, type: String): unique user identifier. twitch:user:type (scope: Next, type: String): the type of the user (possible values are undefined, 'mod', 'global_mod', 'admin' and 'staff'). twitch:user:name (scope: Next, type: String): lowercase username. twitch:user:display (scope: Next, type: String): user name including the capitals chosen by the user. twitch:user:color (scope: Next, type: String): username color displayed in chat. twitch:flags:broadcaster (scope: Next, type: Boolean): if the message comes from the streamer (the one who owns the chain, so you). twitch:flags:founder (scope: Next, type: Boolean): the first participants in the chain once the affiliation is activated. twitch:flags:moderator (scope: Next, type: Boolean): if the message comes from a channel moderator. twitch:flags:subscriber (scope: Next, type: Boolean): if the user is currently subscribed to the channel. twitch:flags:vip (scope: Next, type: Boolean): if you have given the role of VIP to this user. twitch:flags:follower (scope: Next, type: Boolean): lets you know if the user is following the channel.

### Twitch - Raid Cancel

| Triggers when the raid in progress is canceled before the countdown ends.

### Twitch - Redemption

| Triggers when a viewer activates a reward using their channel points. Reward: relevant reward (if left blank, reacts to all rewards). This block returns the following variables: twitch:all:user:id and twitch:redemption:user:id (scope: Next, type: String): number representing the Twitch user (does not change on name change). twitch:user:type (scope: Next, type: String): the type of the user (possible values are undefined, 'mod', 'global_mod', 'admin' and 'staff'). twitch:all:user:name and twitch:redemption:user:name (scope: Next, type: String): username (like the one shown but all lowercase). twitch:all:user:display and twitch:redemption:user:display (scope: Next, type: String): username as displayed in chat. twitch:message (scope: Next, type: String): message sent by the user (if requested). twitch:redemption:id (scope: Next, type: String): unique reward identifier. twitch:redemption:title (scope: Next, type: String): reward title. twitch:redemption:prompt (scope: Next, type: String): reward comment. twitch:redemption:cost (scope: Next, type: Number): how many points the reward costs. twitch:redemption:queued (scope: Next, type: Boolean): whether the reward gets added to the request queue. twitch:redemption:images:1x (scope: Next, type: String): web address of the reduced size image. twitch:redemption:images:2x (scope: Next, type: String): web address of the medium size image. twitch:redemption:images:4x (scope: Next, type: String): web address of the large image.

### Twitch - Reward Gift

| Fires when a user gifts rewards during a special event. This block returns the following variables: twitch:all:user:id and twitch:reward:user:id (scope: Next, type: String): number representing the Twitch user (does not change on name change). twitch:user:type (scope: Next, type: String): the type of the user (possible values are undefined, 'mod', 'global_mod', 'admin' and 'staff'). twitch:all:user:name and twitch:reward:user:name (scope: Next, type: String): username (like the one shown but all lowercase). twitch:all:user:display and twitch:reward:user:display (scope: Next, type: String): username as displayed in chat. twitch:reward:original:id (scope: Next, type: String): the user ID of the gifter. twitch:reward:original:name (scope: Next, type: String): the name of the gifter. twitch:reward:original:display (scope: Next, type: String): the display name of the gifter. twitch:reward:count (scope: Next, type: Number): the amount of rewards that were shared. twitch:reward:domain (scope: Next, type: String): the domain of the reward, i.e. an identifier of the special event that caused these rewards. twitch:reward:shared (scope: Next, type: Number): the amount of total rewards the user shared.

### Twitch - Ritual

| Fires when a user performs a "ritual" in a channel (new user). This block returns the following variables: twitch:ritual:name (scope: Next, type: String): ritual name (here `new_chatter`). twitch:ritual:message (scope: Next, type: String): ritual message. twitch:all:user:id and twitch:ritual:user:id (scope: Next, type: String): number representing the Twitch user (does not change on name change). twitch:user:type (scope: Next, type: String): the type of the user (possible values are undefined, 'mod', 'global_mod', 'admin' and 'staff'). twitch:all:user:name and twitch:ritual:user:name (scope: Next, type: String): username (like the one shown but all lowercase). twitch:all:user:display and twitch:ritual:user:display (scope: Next, type: String): username as displayed in chat. twitch:user:color (scope: Next, type: String): username color displayed in chat. twitch:flags:broadcaster (scope: Next, type: Boolean): if the message comes from the streamer (the one who owns the chain, so you). twitch:flags:founder (scope: Next, type: Boolean): the first participants in the chain once the affiliation is activated. twitch:flags:moderator (scope: Next, type: Boolean): if the message comes from a channel moderator. twitch:flags:subscriber (scope: Next, type: Boolean): if the user is currently subscribed to the channel. twitch:flags:vip (scope: Next, type: Boolean): if you have given the role of VIP to this user. twitch:flags:follower (scope: Next, type: Boolean): lets you know if the user is following the channel.

### Twitch - Shoutout

| Send a dedication from another channel in a pinned message (when you are streaming only). User *: targeted user.

### Twitch - Slow Mode

| Adds a delay between each message from the same viewer, giving you more time to read, or react when changing this option. Delay: time between each message (in seconds). State: On: activate slow mode. Both: reacts as much to activation as to deactivation. Off: deactivate slow mode.

### Twitch - Standard Pay Forward

| Fires when a user pays forward a subscription that was gifted to them to a specific user.

### Twitch - Subscribe

| Fires when a user subscribes to a channel.

### Twitch - Subscribe Again

| Fires when a user resubscribes to a channel. This block returns the following variables: twitch:all:user:id and twitch:subscribe:user:id (scope: Next, type: String): number representing the Twitch user (does not change on name change). twitch:user:type (scope: Next, type: String): the type of the user (possible values are undefined, 'mod', 'global_mod', 'admin' and 'staff'). twitch:all:user:name and twitch:subscribe:user:name (scope: Next, type: String): username (like the one shown but all lowercase). twitch:all:user:display and twitch:subscribe:user:display (scope: Next, type: String): username as displayed in chat. twitch:user:color (scope: Next, type: String): username color displayed in chat. twitch:flags:broadcaster (scope: Next, type: Boolean): if the message comes from the streamer (the one who owns the chain, so you). twitch:flags:founder (scope: Next, type: Boolean): the first participants in the chain once the affiliation is activated. twitch:flags:moderator (scope: Next, type: Boolean): if the message comes from a channel moderator. twitch:flags:subscriber (scope: Next, type: Boolean): if the user is currently subscribed to the channel. twitch:flags:vip (scope: Next, type: Boolean): if you have given the role of VIP to this user. twitch:flags:follower (scope: Next, type: Boolean): lets you know if the user is following the channel. twitch:subscribe:message (scope: Next, type: String): message sent with this subscription notification. twitch:subscribe:months (scope: Next, type: Number): the number of total months of subscriptions for the channel. twitch:subscribe:plan:id (scope: Next, type: String): the plan ID of the subscription. twitch:subscribe:plan:name (scope: Next, type: String): the plan name of the subscription. twitch:subscribe:streak (scope: Next, type: Number): the number of consecutive months of subscriptions for the channel. twitch:subscribe:prime (scope: Next, type: Boolean): whether the subscription was "paid" for with Twitch Prime.

### Twitch - Subscribe Extend

| Fires when a user extends their subscription using a Sub Token. This block returns the following variables: twitch:all:user:id and twitch:subscribe:user:id (scope: Next, type: String): number representing the Twitch user (does not change on name change). twitch:user:type (scope: Next, type: String): the type of the user (possible values are undefined, 'mod', 'global_mod', 'admin' and 'staff'). twitch:all:user:name and twitch:subscribe:user:name (scope: Next, type: String): username (like the one shown but all lowercase). twitch:all:user:display and twitch:subscribe:user:display (scope: Next, type: String): username as displayed in chat. twitch:user:color (scope: Next, type: String): username color displayed in chat. twitch:flags:broadcaster (scope: Next, type: Boolean): if the message comes from the streamer (the one who owns the chain, so you). twitch:flags:founder (scope: Next, type: Boolean): the first participants in the chain once the affiliation is activated. twitch:flags:moderator (scope: Next, type: Boolean): if the message comes from a channel moderator. twitch:flags:subscriber (scope: Next, type: Boolean): if the user is currently subscribed to the channel. twitch:flags:vip (scope: Next, type: Boolean): if you have given the role of VIP to this user. twitch:flags:follower (scope: Next, type: Boolean): lets you know if the user is following the channel. twitch:subscribe:message (scope: Next, type: String): message sent with this subscription notification. twitch:subscribe:months (scope: Next, type: Number): the number of total months of subscriptions for the channel. twitch:subscribe:months:end (scope: Next, type: Number): subscription extension end month (1 is january and 12 is december). twitch:subscribe:plan:id (scope: Next, type: String): the plan ID of the subscription.

### Twitch - Subscribe Gift

| Fires when a user gifts a subscription to a channel to another user. This block returns the following variables: twitch:all:user:id and twitch:subscribe:user:id (scope: Next, type: String): number representing the Twitch user (does not change on name change). twitch:user:type (scope: Next, type: String): the type of the user (possible values are undefined, 'mod', 'global_mod', 'admin' and 'staff'). twitch:all:user:name and twitch:subscribe:user:name (scope: Next, type: String): username (like the one shown but all lowercase). twitch:all:user:display and twitch:subscribe:user:display (scope: Next, type: String): username as displayed in chat. twitch:user:color (scope: Next, type: String): username color displayed in chat. twitch:flags:broadcaster (scope: Next, type: Boolean): if the message comes from the streamer (the one who owns the chain, so you). twitch:flags:founder (scope: Next, type: Boolean): the first participants in the chain once the affiliation is activated. twitch:flags:moderator (scope: Next, type: Boolean): if the message comes from a channel moderator. twitch:flags:subscriber (scope: Next, type: Boolean): if the user is currently subscribed to the channel. twitch:flags:vip (scope: Next, type: Boolean): if you have given the role of VIP to this user. twitch:flags:follower (scope: Next, type: Boolean): lets you know if the user is following the channel. twitch:subscribe:gifter:id (scope: Next, type: String): unique identifier of the user receiving the gift. twitch:subscribe:gifter:name (scope: Next, type: String): name of the user who receives the gift in lowercase. twitch:subscribe:gifter:display (scope: Next, type: String): name of the user who receives the gift including the capital letters chosen by the user. twitch:subscribe:message (scope: Next, type: String): message sent with this subscription notification. twitch:subscribe:duration (scope: Next, type: Number): the duration of the gifted subscription, in months.. twitch:subscribe:count (scope: Next, type: Number): the number of subscriptions the gifting user has already gifted in total.. twitch:subscribe:months (scope: Next, type: Number): the number of total months of subscriptions for the channel. twitch:subscribe:plan:id (scope: Next, type: String): the plan ID of the subscription. twitch:subscribe:plan:name (scope: Next, type: String): the plan name of the subscription. twitch:subscribe:streak (scope: Next, type: Number): the number of consecutive months of subscriptions for the channel. twitch:subscribe:prime (scope: Next, type: Boolean): whether the subscription was "paid" for with Twitch Prime.

### Twitch - Subscribers Only

| Make sure that only people who are subscribed to the channel can talk in the chat, or react when changing this option. State: On: activate subscribers only mode. Both: reacts as much to activation as to deactivation. Off: deactivate subscribers only mode.

### Twitch - Timeout

| Temporarily ban a user or react to a temporary ban. User *: targeted user. Reason *: the reason the temporary ban occurred. Duration: duration after which the ban will end automatically (in seconds). This block returns the following variables: twitch:timeout:user:id (scope: Next, type: String): number representing the Twitch user (does not change on name change). twitch:timeout:user:name (scope: Next, type: String): username (like the one shown but all lowercase). twitch:timeout:user:display (scope: Next, type: String): username as displayed in chat. twitch:timeout:reason (scope: Next, type: String): the reason the temporary ban occurred. twitch:timeout:start:date and twitch:timeout:start:time: start date of the temporary ban (refer to date and time variables which are presented in the same way). twitch:timeout:end:date and twitch:timeout:end:time: end date of the temporary ban (refer to date and time variables which are presented in the same way).

### Twitch - Unique Message

| Enables/disables the fact that a user cannot send the same message twice, or react when changing this option. State: On: activate unique message mode. Both: reacts as much to activation as to deactivation. Off: deactivate unique message mode.

### Twitch - Whisper

| Reacts when a private message is received. User *: targeted user. Message *: message sent for orange block, or message received from a user for green block (if left blank, reacts to all messages). Case sensitive: must have the same upper and lower case if the box is checked, otherwise `GooD` and `good` are considered identical. Contains sentence: the word can be anywhere in the message if the box is checked, otherwise the message must be exactly as entered. This block returns the following variables: twitch:message (scope: Next, type: String): message sent by the user on the chat. twitch:message:date and twitch:message:time: date message received (refer to date and time variables which are presented in the same way). twitch:message:type (scope: Next, type: String): returns `Whisper` in this case. twitch:user:id (scope: Next, type: String): unique user identifier. twitch:user:name (scope: Next, type: String): lowercase username. twitch:user:display (scope: Next, type: String): user name including the capitals chosen by the user.