2023-08-14 13:44:23 +00:00
---
title: "Available Actions"
---
{{< lead > }}
All these actions can be executed by your bot as soon as you add them to rules. Read their documentation to learn how to master them.
{{< / lead > }}
2021-09-22 13:36:45 +00:00
2023-02-20 18:41:03 +00:00
## Add Fields to Event
Add custom fields to the event to be used as template variables later on
```yaml
- type: eventmod
attributes:
# Fields to set in the event (must produce valid JSON: `map[string]any` )
# Optional: false
# Type: string (Supports Templating)
fields: ""
```
2022-12-05 17:58:49 +00:00
## Add VIP
Add VIP for the given channel
```yaml
- type: vip
attributes:
# Channel to add the VIP to
# Optional: false
# Type: string (Supports Templating)
channel: ""
# User to add as VIP
# Optional: false
# Type: string (Supports Templating)
user: ""
```
2021-09-22 13:36:45 +00:00
## Ban User
Ban user from chat
```yaml
- type: ban
attributes:
# Reason why the user was banned
2022-10-29 13:17:43 +00:00
# Optional: false
2022-02-10 01:02:25 +00:00
# Type: string (Supports Templating)
2021-09-22 13:36:45 +00:00
reason: ""
```
2023-03-14 14:34:08 +00:00
## Commercial
Start Commercial
```yaml
- type: commercial
attributes:
# Duration of the commercial (must not be longer than 180s and must yield an integer)
# Optional: false
# Type: string (Supports Templating)
duration: ""
```
2023-08-14 00:52:51 +00:00
## Create Clip
Triggers the creation of a Clip from the given channel owned by the creator (subsequent actions can use variables `create_clip_slug` and `create_clip_edit_url` )
```yaml
- type: clip
attributes:
# Channel to create the clip from, defaults to the channel of the event / message
# Optional: true
# Type: string (Supports Templating)
channel: ""
# User which should trigger and therefore own the clip (must have given clips:edit permission to the bot in extended permissions!), defaults to the value of `channel`
# Optional: true
# Type: string (Supports Templating)
creator: ""
# Whether to add an artificial delay before creating the clip
# Optional: true
# Type: bool
add_delay: false
```
2024-09-03 21:27:01 +00:00
## Create Marker
2024-09-11 12:23:42 +00:00
Creates a marker on the currently running stream of the given channel. The marker will be created on behalf of the channel owner and requires matching scope. (Subsequent actions can use variable `marker` to access marker details.)
2024-09-03 21:27:01 +00:00
```yaml
- type: marker
attributes:
# Channel to create the marker in, defaults to the channel of the event / message
# Optional: true
# Type: string (Supports Templating)
channel: ""
# Description of the marker to create (up to 140 chars)
# Optional: true
# Type: string (Supports Templating)
description: ""
```
2022-04-17 14:54:56 +00:00
## Custom Event
Create a custom event
```yaml
- type: customevent
attributes:
# JSON representation of fields in the event (`map[string]any`)
# Optional: false
# Type: string (Supports Templating)
fields: "{}"
2022-10-31 14:20:41 +00:00
# Time until the event is triggered (must be valid duration like 1h, 1h1m, 10s, ...)
# Optional: true
# Type: string (Supports Templating)
schedule_in: ""
2022-04-17 14:54:56 +00:00
```
2021-09-22 13:36:45 +00:00
## Delay
Delay next action
```yaml
- type: delay
attributes:
# Static delay to wait
# Optional: true
# Type: duration
delay: 0s
# Dynamic jitter to add to the static delay (the added extra delay will be between 0 and this value)
# Optional: true
# Type: duration
jitter: 0s
```
## Delete Message
Delete message which caused the rule to be executed
```yaml
- type: delete
# Does not have configuration attributes
```
2023-08-14 20:57:33 +00:00
## Discord Message-Webhook
Sends a message to a Discord Web-hook
```yaml
- type: discordhook
attributes:
# URL to send the POST request to
# Optional: false
# Type: string
hook_url: ""
# Overwrites the username set in the webhook configuration
# Optional: true
# Type: string (Supports Templating)
username: ""
# Overwrites the avatar set in the webhook configuration
# Optional: true
# Type: string (Supports Templating)
avatar_url: ""
# Message content to send to the web-hook (this must be set if embed is disabled)
# Optional: true
# Type: string (Supports Templating)
content: ""
# Whether to include the embed in the post
# Optional: true
# Type: bool
add_embed: false
# Title of the embed
# Optional: true
# Type: string (Supports Templating)
embed_title: ""
# Description of the embed
# Optional: true
# Type: string (Supports Templating)
embed_description: ""
# URL the title should link to
# Optional: true
# Type: string (Supports Templating)
embed_url: ""
# URL of the big image displayed in the embed
# Optional: true
# Type: string (Supports Templating)
embed_image: ""
# URL of the small image displayed in the embed
# Optional: true
# Type: string (Supports Templating)
embed_thumbnail: ""
# Name of the post author (if empty all other author-fields are ignored)
# Optional: true
# Type: string (Supports Templating)
embed_author_name: ""
# URL the author name should link to
# Optional: true
# Type: string (Supports Templating)
embed_author_url: ""
# URL of the author avatar
# Optional: true
# Type: string (Supports Templating)
embed_author_icon_url: ""
# Fields to display in the embed (must yield valid JSON: `[{"name": "", "value": "", "inline": false}]` )
# Optional: true
# Type: string (Supports Templating)
embed_fields: ""
```
2023-04-07 22:41:00 +00:00
## Enforce Link-Protection
Uses link- and clip-scanner to detect links / clips and applies link protection as defined
```yaml
- type: linkprotect
attributes:
# Allowed links (if any is specified all non matching links will cause enforcement action, link must contain any of these strings)
# Optional: true
# Type: array of strings
allowed_links: []
# Disallowed links (if any is specified all non matching links will not cause enforcement action, link must contain any of these strings)
# Optional: true
# Type: array of strings
disallowed_links: []
# Allowed clip channels (if any is specified clips of all other channels will cause enforcement action, clip-links will be ignored in link-protection when this is used)
# Optional: true
# Type: array of strings
allowed_clip_channels: []
# Disallowed clip channels (if any is specified clips of all other channels will not cause enforcement action, clip-links will be ignored in link-protection when this is used)
# Optional: true
# Type: array of strings
disallowed_clip_channels: []
# Enforcement action to take when disallowed link / clip is detected (ban, delete, duration-value i.e. 1m)
# Optional: false
# Type: string
action: ""
# Reason why the enforcement action was taken
# Optional: false
# Type: string
reason: ""
# Stop rule execution when action is applied (i.e. not to post a message after a ban for spam links)
# Optional: true
# Type: bool
stop_on_action: false
# Stop rule execution when no action is applied (i.e. not to post a message when no enforcement action is taken)
# Optional: true
# Type: bool
stop_on_no_action: false
```
2023-12-03 14:57:23 +00:00
## Enter User to Raffle
Enter user to raffle through channelpoints
```yaml
- type: enter-raffle
attributes:
# The keyword for the active raffle to enter the user into
# Optional: false
# Type: string
keyword: ""
```
2021-09-22 13:36:45 +00:00
## Execute Script / Command
Execute external script / command
```yaml
- type: script
attributes:
# Command to execute
# Optional: false
2021-10-18 22:22:05 +00:00
# Type: array of strings (Supports Templating in each string)
2021-09-22 13:36:45 +00:00
command: []
# Do not activate cooldown for route when command exits non-zero
# Optional: true
# Type: bool
skip_cooldown_on_error: false
```
2022-03-04 22:34:59 +00:00
## FileSay
Takes the content of an URL and pastes it to the current channel
```yaml
- type: filesay
attributes:
# Source of the content to post
# Optional: false
# Type: string (Supports Templating)
source: ""
```
2023-01-01 13:41:57 +00:00
## Log output
Print info log-line to bot log
```yaml
- type: log
attributes:
# Messsage to log into bot-log
# Optional: false
# Type: string (Supports Templating)
message: ""
```
2021-09-22 13:36:45 +00:00
## Modify Counter
Update counter values
```yaml
- type: counter
attributes:
# Name of the counter to update
# Optional: false
2021-10-18 22:22:05 +00:00
# Type: string (Supports Templating)
2021-09-22 13:36:45 +00:00
counter: ""
# Value to add to the counter
# Optional: true
2022-02-10 01:02:25 +00:00
# Type: string (Supports Templating)
counter_step: "1"
2021-09-22 13:36:45 +00:00
# Value to set the counter to
# Optional: true
2021-10-18 22:22:05 +00:00
# Type: string (Supports Templating)
2021-09-22 13:36:45 +00:00
counter_set: ""
```
## Modify Stream
Update stream information
```yaml
- type: modchannel
attributes:
# Channel to update
# Optional: false
2021-10-18 22:22:05 +00:00
# Type: string (Supports Templating)
2021-09-22 13:36:45 +00:00
channel: ""
2022-10-29 13:17:43 +00:00
# Category / Game to set (use `@1234` format to pass an explicit ID)
2021-09-22 13:36:45 +00:00
# Optional: true
2021-10-18 22:22:05 +00:00
# Type: string (Supports Templating)
2021-09-22 13:36:45 +00:00
game: ""
# Stream title to set
# Optional: true
2021-10-18 22:22:05 +00:00
# Type: string (Supports Templating)
2021-09-22 13:36:45 +00:00
title: ""
```
## Modify Variable
Modify variable contents
```yaml
- type: setvariable
attributes:
# Name of the variable to update
# Optional: false
2021-10-18 22:22:05 +00:00
# Type: string (Supports Templating)
2021-09-22 13:36:45 +00:00
variable: ""
# Clear variable content and unset the variable
# Optional: true
# Type: bool
clear: false
# Value to set the variable to
# Optional: true
2021-10-18 22:22:05 +00:00
# Type: string (Supports Templating)
2021-09-22 13:36:45 +00:00
set: ""
```
2021-10-25 21:21:52 +00:00
## Nuke Chat
Mass ban, delete, or timeout messages based on regex. Be sure you REALLY know what you do before using this! Used wrongly this will cause a lot of damage!
```yaml
- type: nuke
attributes:
# How long to scan into the past, template must yield a duration (max 10m)
# Optional: true
# Type: string (Supports Templating)
scan: "10m"
# What action to take when message matches (delete / ban / < timeout duration > )
# Optional: true
# Type: string (Supports Templating)
action: "delete"
# Regular expression (RE2) to select matching messages
# Optional: false
# Type: string (Supports Templating)
match: ""
```
2021-10-03 13:35:58 +00:00
## Punish User
Apply increasing punishments to user
```yaml
- type: punish
attributes:
# When to lower the punishment level after the last punishment
# Optional: true
# Type: duration
cooldown: 168h
# Actions for each punishment level (ban, delete, duration-value i.e. 1m)
# Optional: false
# Type: array of strings
levels: []
# Reason why the user was banned / timeouted
# Optional: true
# Type: string
reason: ""
# User to apply the action to
# Optional: false
2021-10-18 22:22:05 +00:00
# Type: string (Supports Templating)
2021-10-03 13:35:58 +00:00
user: ""
# Unique identifier for this punishment to differentiate between punishments in the same channel
# Optional: true
# Type: string
uuid: ""
```
2021-10-18 22:22:05 +00:00
## Quote Database
Manage a database of quotes in your channel
```yaml
- type: quotedb
attributes:
# Action to execute (one of: add, del, get)
# Optional: false
# Type: string
action: ""
# Index of the quote to work with, must yield a number (required on 'del', optional on 'get')
# Optional: true
# Type: string (Supports Templating)
index: "0"
# Quote to add: Format like you like your quote, nothing is added (required on: add)
# Optional: true
# Type: string (Supports Templating)
quote: ""
# Format to use when posting a quote (required on: get)
# Optional: true
# Type: string (Supports Templating)
format: "Quote #{{ .index }}: {{ .quote }}"
```
2022-12-05 17:58:49 +00:00
## Remove VIP
Remove VIP for the given channel
```yaml
- type: unvip
attributes:
# Channel to remove the VIP from
# Optional: false
# Type: string (Supports Templating)
channel: ""
# User to remove as VIP
# Optional: false
# Type: string (Supports Templating)
user: ""
```
2021-10-03 13:35:58 +00:00
## Reset User Punishment
Reset punishment level for user
```yaml
- type: reset-punish
attributes:
# User to reset the level for
# Optional: false
2021-10-18 22:22:05 +00:00
# Type: string (Supports Templating)
2021-10-03 13:35:58 +00:00
user: ""
# Unique identifier for this punishment to differentiate between punishments in the same channel
# Optional: true
# Type: string
uuid: ""
```
2021-09-22 13:36:45 +00:00
## Respond to Message
Respond to message with a new message
```yaml
- type: respond
attributes:
# Message text to send
# Optional: false
2021-10-18 22:22:05 +00:00
# Type: string (Supports Templating)
2021-09-22 13:36:45 +00:00
message: ""
# Fallback message text to send if message cannot be generated
# Optional: true
2021-10-18 22:22:05 +00:00
# Type: string (Supports Templating)
2021-09-22 13:36:45 +00:00
fallback: ""
# Send message as a native Twitch-reply to the original message
# Optional: true
# Type: bool
as_reply: false
# Send message to a different channel than the original message
# Optional: true
# Type: string
to_channel: ""
```
2023-04-07 22:41:00 +00:00
## Scan for Clips
Scans for clip-links in the message and adds the "clips" field to the event data
```yaml
- type: clipdetector
# Does not have configuration attributes
```
## Scan for Links
Scans for links in the message and adds the "links" field to the event data
```yaml
- type: linkdetector
2023-08-14 13:44:23 +00:00
attributes:
2023-12-25 12:29:16 +00:00
# Enable heuristic scans to find links with spaces or other means of obfuscation in them (quite slow and will detect MANY false-positive links, only use for blacklisting links!)
2023-08-14 13:44:23 +00:00
# Optional: true
# Type: bool
heuristic: false
2023-04-07 22:41:00 +00:00
```
2021-09-22 13:36:45 +00:00
## Send RAW Message
Send raw IRC message
```yaml
- type: raw
attributes:
# Raw message to send (must be a valid IRC protocol message)
# Optional: false
2021-10-18 22:22:05 +00:00
# Type: string (Supports Templating)
2021-09-22 13:36:45 +00:00
message: ""
```
## Send Whisper
2024-04-17 22:26:14 +00:00
Send a whisper
2021-09-22 13:36:45 +00:00
```yaml
- type: whisper
attributes:
# Message to whisper to the user
# Optional: false
2021-10-18 22:22:05 +00:00
# Type: string (Supports Templating)
2021-09-22 13:36:45 +00:00
message: ""
# User to send the message to
# Optional: false
2021-10-18 22:22:05 +00:00
# Type: string (Supports Templating)
2021-09-22 13:36:45 +00:00
to: ""
```
2023-02-04 12:59:18 +00:00
## Shoutout
Perform a Twitch-native shoutout
```yaml
- type: shoutout
attributes:
# User to give the shoutout to
# Optional: false
# Type: string (Supports Templating)
user: ""
```
2023-08-14 20:57:33 +00:00
## Slack Message-Webhook
Sends a message to a Slack(-compatible) Web-hook
```yaml
- type: slackhook
attributes:
# URL to send the POST request to
# Optional: false
# Type: string
hook_url: ""
# Text to send to the web-hook
# Optional: false
# Type: string (Supports Templating)
text: ""
```
2023-02-05 15:08:22 +00:00
## Stop Execution
Stop Rule Execution on Condition
```yaml
- type: stopexec
attributes:
# Condition when to stop execution (must evaluate to "true" to stop execution)
# Optional: false
# Type: string (Supports Templating)
when: ""
```
2021-09-22 13:36:45 +00:00
## Timeout User
Timeout user from chat
```yaml
- type: timeout
attributes:
# Duration of the timeout
# Optional: false
# Type: duration
duration: 0s
2022-02-10 01:02:25 +00:00
# Reason why the user was timed out
2022-10-29 13:17:43 +00:00
# Optional: false
2022-02-10 01:02:25 +00:00
# Type: string (Supports Templating)
reason: ""
2021-09-22 13:36:45 +00:00
```
2023-02-04 12:59:18 +00:00
## Update Shield Mode
Update shield mode for the given channel
```yaml
- type: shield
attributes:
# Whether the shield-mode should be enabled or disabled
# Optional: false
# Type: bool
enable: false
```