Chattler docs
Two things live here: the user guide, which covers everything Chattler does, and the pages below, which are about extending it.
Chattler can be extended in two ways, and both are plain text files you write yourself:
- Themes are colours. A
.themefile says whether it is light or dark and lists a handful of colours. Chattler ships with eight, and every one of them is a file exactly like the one you would write. - Plugins are alerts. A
.chattfile says what to watch for in chat and what to do about it: raise an alert, play a chime, send a desktop notification, keep a count.
Both are written in Chattscript, a small language built for this and nothing else.
What a plugin can do
plugin "Shouty people"
description "Says something when chat goes all caps"
on message do
if event.text = upper(event.text) and length(event.text) > 20 then
alert(event.user + " is SHOUTING in " + event.channel)
end
end
Drop that in your plugins folder, hit Reload in Settings, and it runs.
What a plugin cannot do
This matters, because you will be running other people's scripts next to a chat client that is logged into your Twitch account.
A plugin cannot:
- time anyone out, ban anyone, delete messages or change chat settings
- send messages or whispers as you
- read or use your Twitch login
- reach the internet, read your files, or touch the rest of the app
- run forever, or use enough time to make chat stutter
It is not a matter of a plugin being asked politely not to. The language has no syntax for any of it: no network calls, no file access, no way to name anything in the app. The full list of what a script can reach is on the builtins page, and the limits it runs under are on limits and safety.
Plugins raise alerts. Nothing else.
Where to go next
| I want to | Read |
|---|---|
| Learn what Chattler does | User guide |
| Install a plugin someone sent me | Start here |
| Write my first plugin | Plugins |
| Make Chattler my colours | Themes |
| Know every keyword | Language reference |
| Know what I can react to | Events |
| Know every function | Builtins |
| See working examples | Examples |