From 143b51b5c5d8e985566a562bc888a3b8a30a3556 Mon Sep 17 00:00:00 2001 From: tduva Date: Tue, 9 May 2023 01:08:29 +0200 Subject: [PATCH] v0.24 files --- help/help-builtin_commands.html | 567 ++++++++++++++++++++++++++++++++ help/help-custom_commands.html | 51 ++- help/help-getting-started.html | 2 +- help/help-guide_folders.html | 2 +- help/help-local_subonly.html | 2 +- help/help-releases.html | 48 ++- help/help-settings.html | 10 +- help/help.html | 529 +---------------------------- index.html | 18 +- 9 files changed, 682 insertions(+), 547 deletions(-) create mode 100644 help/help-builtin_commands.html diff --git a/help/help-builtin_commands.html b/help/help-builtin_commands.html new file mode 100644 index 0000000..b5a9c43 --- /dev/null +++ b/help/help-builtin_commands.html @@ -0,0 +1,567 @@ + + + Chatty - Custom Commands / Context Menus + + + +

Built-in Commands

+

This list of commands is built into Chatty and can't be changed. You can + however create your own Custom Commands & Customized Context Menus.

+ +
+
All command names are case-insensitive
+
Example: Both /me and /ME are the same command
+ +
<parameter> represents a required parameter
+
Example: For /me <message> you need to enter a + message: /me likes cheese!
+ +
[parameter] represents an optional parameter
+
Example: For /ban <username> [reason] you don't need + to give a reason, but you can: /ban abc spam
+
+ +

Tip: You can also use TAB Completion for many commands. Enter + the beginning of a command name (e.g. /sub) and then press + TAB to find matching commands (e.g. /subscribers, which + allows moderators to turn on sub-only mode).

+ + + +

Chat / Twitch Commands

+ + +

Moderation

+ + + +

Other Twitch Commands

+ + +

Settings / Customization Commands

+ + +

GUI Commands

+ +

Manipulate the GUI

+ + +

Open windows in Chatty

+ + +

System Commands

+

Open / affect things outside of Chatty

+ + +

Learn things about Chatty

+ + +

Housekeeping Commands

+ + +

Test Commands

+ + +

Advanced commands

+ + +

Execute several commands

+

The /chain command allows you to run several commands at the + same time. Each part separated by a | is basicially + entered into the inputbox again.

+ +
+
/chain [command1] | [command2] | [command3]
+
Runs command1, then command2, then command3. This can be repeated + further by adding more parts separated by |.
+
Whitespace around each command is trimmed.
+
Note: A | character in a command would be + interpreted as a command separator. Escape | with + itself to use the character without special meaning (||). + If used in a Custom Command, the function $cs() (as in + chain safe) can be used around replacements for + escaping (e.g. $cs($1-)).
+
+ +

Examples:

+
+
/chain /echo a | /echo b
+
Outputs a and b
+ +
/chain /echo a | /echo ||b||
+
Outputs a and |b|
+
+ +

When using /chain with Custom Command + replacements, consider the following:

+ +
+
/chain /echo $cs($(msg)) | /echo abc
+
All replacements are performed before the /chain + command is executed, so anything in $(msg) is put in + first. If $(msg) contained Hello World!:
+ /chain /echo Hello World! | /echo abc
+
/chain /echo $(msg) | /echo abc
+
Assuming no escaping were to take place: If $(msg) + would contain Hello | World! then the | + in it would be interpreted as a command separator and thus World! + would be separately entered into the inputbox (so it would output + two /echo info messages and send World! to + chat):
+ /chain /echo Hello | World! | /echo abc
+
This could cause serious issues, so it is recommended to always + make sure text is safe to be used in the /chain command: +
    +
  • Wrap replacements in the $cs() function (as in chain safe) + when used in a /chain command to escape + | characters: $cs($(msg))
  • +
  • In addition, any top-level replacement will escape + | characters automatically if the Custom Command + begins with /chain (so the above + example should normally not cause issues). However it is + good practice to always use the $cs() function + anyway (it won't be escaped twice) in case something changes + in the future so that the Custom Command doesn't begin with + /chain anymore.
    + You can prevent this automatic escaping (if you are + absolutely sure that you want replacements to be able to + insert any command) by adding a backslash in front (this + doesn't work when you enter the /chain command + directly into the inputbox):
    + \/chain /echo Hello | World! | /echo abc
  • +
+ When properly escaped, it will turn into this (which outputs + Hello | World! and abc):
+ /chain /echo Hello || World! | /echo abc +
+ +
/chain /echo abc $(chain-test)
+
You can test this by using the $(chain-test) replacement. + This should (if e.g. added in the body of a Custom Command) output the following info message:
+ abc | /echo Test || Message
+
If you add a backslash in front, it will output two info messages:
+ abc
+ Test | Message
+
+ +

Execute the same command for each entry in a list

+

The /foreach command allows you to run the same command for + each entry of a space separated list. The command section is run as a + Custom Command, with the $1 replacement containing a single + list entry.

+ +
+
/foreach [list] > [command]
+
The command consist of the comma-separated list, the > + character and the command to execute (whereas the command is run as + it's own Custom Command with the $1 replacement).
+
List and command are trimmed for leading and trailing whitespace.
+
Note: Everything after the first > + character is interpreted as the command. If you want to use a + > in the list section you have to escape it with + itself for it to be treated literally (>>). Both the + list and command section will consume a single > only + if they are repeated (>> to >, but + > unmodified).
+
If you use a Custom Command replacement in the [list] + section, make sure the text is safe to use: +
    +
  • Wrap replacements in the $fs() function (as in foreach safe) + to escape > characters: $fs($1-)
  • +
  • In addition, any top-level replacements will escape > + characters automatically if the Custom Command begins with + /foreach . However it is good practice to + always use the $fs() function anyway (it won't + be escaped twice) in case something changes in the future so + that the Custom Command doesn't begin with /foreach + anymore.
  • +
+
+
+

Examples:

+
+
/foreach a b c > /echo $1
+
Outputs a, b and c when + entered into the chat inputbox.
+ +
//foreach a b c > /echo \$1
+
Outputs a, b and c when + entered into the chat inputbox. Note that the double slash at the + start runs this as a Custom Command, so the $1 needs to + be escaped, so it is only replaced when the /echo is + run for each list entry.
+ +
/foreach a <b>> c > /echo $1
+
Outputs a, <b> and c + when entered into the chat inputbox. Note the escaped > + in the list entry.
+ +
Open Streams=/foreach $fs($1-) > /openUrl https://twitch.tv/\$1 (added as a Streams Context menu entry)
+
When several channels are selected and the command run, it will + replace $1- with the list of selected streams and then + open the URL for each one of them. Note that the $1 in + the /openUrl command is escaped.
+
+ +

Detailed Explanation Example:

+
+
/foreachtest /foreach a b c > /echo \$1 (added to the Custom Commands list)
+
Outputs a, b and c when + /foreachtest is entered into the chat inputbox.
+
Note the \$1 with the escape character in front, which + preserves it for replacement when the /echo is run. +

This is what happens when you enter /foreachtest:

+
    +
  1. Replacements are performed on the Custom Command + /foreach a b c > /echo \$1. Since the $1 + is escaped it is treated as plain text and not replaced (the + \ is consumed).
  2. +
  3. The result /foreach a b c > /echo $1 is run + and the /foreach command will use everything + after the > as the Custom Command to run (and + trim whitespace).
  4. +
  5. The Custom Command /echo $1 is run with a + as parameter, which results in /echo a being + run. The same is repeated for b and c.
  6. +
+ +

If the $1 is not escaped:

+
    +
  1. Replacements are performed on the Custom Command + /foreach a b c > /echo $1. The $1 + is replaced with an empty string (no argument given with the + /foreachtest command).
  2. +
  3. The result /foreach a b c > /echo is run + and the /foreach command will use everything + after the > as the Custom Command to run (and + trim whitespace).
  4. +
  5. The Custom Command /echo is run with a + as parameter (although there is no replacement to make use + of it), which results in /echo being run, + resulting in an error message. The same is repeated for + b and c.
  6. +
+

If the $1 is not escaped, but you provide a command + argument, e.g. /foreachtest 123, then it will + replace the $1 with 123 in the first + step, so /echo 123 will be run three times.

+
+
+ +

Run a command in a specific open channel

+

The /runin command runs a command in the context of a + specific open channel, as if you had entered it into the channel's + inputbox. Without this, commands usually run in the context of the + currently active channel.

+ +
+
/runin [channel] [command]
+
The channel must be a regular channel with or without leading "#" (#channelname) + or a whisper channel ($username).
+
The command can be anything you could enter into a chat inputbox.
+
+ +

Examples:

+
+
/runin #chan2 /echo abc
+
Outputs the info message "abc" in the channel "#chan2" (if it is + open in Chatty).
+ +
//runin #chan2 //echo Channel context: \\$(chan) -> \$(chan)
+
This example is entered directly into a chat inputbox and outputs + an info message about the changed channel context in "#chan2". Let's say the + command is entered in the channel "#chan1".
+
The command begins with two slashes (//), so it is + interpreted as an anonymous Custom Command: +
    +
  • \\$(chan) turns into \#chan1 (the \\ escaped + the backslash itself, not the $, so the replacement is performed)
  • +
  • \$(chan) turns into $(chan) (this \ actually escapes the + $, so the replacement is not performed here)
  • +
+ The result /runin #chan2 //echo Channel context: \#chan1 -> $(chan) + is run, which runs //echo Channel context: \#chan1 -> $(chan) + in "#chan2".
+
Yet again, the command begins with two slashes (//) and + is interpreted as an anonymous Custom Command: +
    +
  • \#chan1 turns into #chan1 (the + backslash removes any special meaning from the following + characters, which in this case is not necessary, but it you + had entered this in a whisper channel $user1 + then the $ would have had to be escaped)
  • +
  • $(chan) turns into #chan2 (this + Custom Command is run in the new channel context, so it + turns into the target channel, which does not need to be + escaped further, even if it were $user2, since + it doesn't get interpreted as a Custom Command after this)
  • +
+ The resulting command /echo Channel context: #chan1 -> #chan2 + is then run and outputs an info message. +
+
+ +

Execute a command on a delay

+

The /timer command allows you to run a delayed command after + a duration or at a certain time. The timed command is run as if it was + entered into the inputbox of the same channel that the /timer + command was entered in (the command is not run at all if the channel is + not a regular channel or not open anymore, unless the -a + option is used).

+ +

Certain restrictions apply:

+ + +
+
/timer [-options] [:id] <duration|time|'list'|'stop'> <timed command>
+
Optionally one or several options (-rs) can be specified: +
    +
  • -r (Keeps the timer through a restart of Chatty + if it hasn't run yet. The timer is saved in the settings and + restored with the same target time, channel and timed + command. If the target time has already been passed when + Chatty is started again it will immediately run the timed + command.)
  • +
  • -o (If a timer of the same id already exists, + overwrite it, without this option the new timer would not be + started in such a case.)
  • +
  • -s (Silent, starting the timer successfully + doesn't output a message.)
  • +
  • -a (Always run the command, even if the channel + the timer was started in is not open anymore or not valid, + which can make sense if the command being run is not + channel-specific, such as modifying the Addressbook. If the + channel is not open anymore the currently active channel is + used, in which case sending messages it not allowed.)
  • +
  • Full example: /timer -rs 10m /echo hello + (Outputs "hello" in 10 minutes, keeps it when Chatty is + restarted within that time and doesn't output a timer + started message.)
  • +
+
+
The id is used to identify a timer after it has been started (e.g. + to stop it). Can be anything (no spaces), if it ends with * + an automatically generated number will be appended to make the id + unique if used more than once. If no id is specified an + automatically generated number without prefix will be used. +
    +
  • :abc (the id is "abc")
  • +
  • :abc* (the id might be "abc1", "abc2", "abc3", ...)
  • +
  • Not specified (the id is an automatically generated number)
  • +
  • Full example: /timer :abc 10m /echo hello + (outputs "hello" in 10 minutes, with the timer id "abc")
  • +
+
+
The duration is in seconds by default, but you can also append a + time unit and several durations that get added up (no spaces): +
    +
  • 5ms (milliseconds)
  • +
  • 5s (seconds)
  • +
  • 5m (minutes)
  • +
  • 5h (hours)
  • +
  • 5h10m (5 hours 10 minutes)
  • +
  • 5h10 (5 hours 10 minutes)
  • +
  • 5h10m30 (5 hours 10 minutes 30 seconds)
  • +
  • Full example: /timer 5h /echo hello (outputs "hello" in 5 hours)
  • +
+
+
An absolute time is written like a digital clock in 24hr format, a + date can be added in front, in which case it has to be enclosed in + [ ]. With no date specified the next occurence of the + time is used, so e.g. if it's already in the evening a time of 5 in + the morning would be on the next day: +
    +
  • 5:30 (5:30 in the morning)
  • +
  • 17:30 (5:30 in the afternoon)
  • +
  • 5:30:50 (5:30 and 50 seconds in the morning)
  • +
  • [05:20:00] (the time can also be enclosed in + [ ])
  • +
  • [2022-01-10 5:30] (when including the date the + [ ] is required and the date has to always be + the full date in the format YYYY-MM-DD)
  • +
  • Full example: /timer 16:30 /echo hello (outputs + the info message "hello" at 4:30 PM)
  • +
+
+
Output info about currently active timers: +
    +
  • list (Lists all timers, soonest to run first.)
  • +
  • -q list (Same as above, but the list is in timer start order.)
  • +
  • :a* list (Outputs information about timers with ids that begin with "a".)
  • +
  • list a* (Same as above, but id in place of the timed command.)
  • +
  • Full example: /timer list a* (Shows all active timers with ids that begin with "a".)
  • +
+
+
Stop active timers: +
    +
  • :abc1 stop (Stops a timer with the id "abc1".)
  • +
  • stop abc1 (Same as above, but id in place of the timed command.)
  • +
  • :abc* stop (Stops all timers with ids that begin with "abc".)
  • +
  • :* stop (Stops all active timers.)
  • +
  • Full example: /timer stop * (Stops all active timers.)
  • +
+
+
+ + \ No newline at end of file diff --git a/help/help-custom_commands.html b/help/help-custom_commands.html index 9e99d65..e397220 100644 --- a/help/help-custom_commands.html +++ b/help/help-custom_commands.html @@ -109,16 +109,16 @@

Chaining Commands

Executing several commands in a row is not a feature of Custom Commands, - although the /chain command can + although the /chain command can be used to achieve something like that.

Foreach

-

The /foreach command can be used +

The /foreach command can be used to run the same command for each entry of a space-separated list, for example a list of channels from the $1- replacement.

Run command in specific channel

-

The /runin command can be used +

The /runin command can be used to run a command in a specific open channel.

Replacements

@@ -678,7 +678,7 @@
$json(<input>,<output>)
Parse the JSON in <input> and use in <output>, - where $j(<path>,[default]) can be used to access specific values. + where $j(<path>,[default],[sub],...) can be used to access specific values. The JSON input could e.g. come from the $request() function.
If the path isn't formatted correctly or the JSON is invalid the @@ -695,22 +695,34 @@
-
Examples with the following JSON as input: +
The optional [sub] values can contain additional $j() + replacements, which are applied to the result of the path or previous [sub] + parameter. If prefixed with each: it will be applied + to each element on an array/object and the result collected into + an array (for objects the $(key) replacement and + for arrays the $(index) replacement is available).
+

Examples with the following JSON as input:
     {
         "books":[
@@ -719,6 +731,10 @@
             {"title":"book3", "author":"author2", "tags":["tag1", "tag3"]},
             {"title":"book4", "author":"author2"}
         ],
+        "authors":{
+            "author1":{"name":"name1", "age":24},
+            "author2":{"name":"name2", "age":62}
+        },
         "numBooks": 4,
         "numAuthors": 2
     }
@@ -751,6 +767,25 @@
$json($get(var,j),Tags of author2: $j(books[filter:author=author2][combine:tags][unique][join]))
Tags of author2: tag1, tag3
+ +
$json($get(var,j),$j(authors[collect:name][sort][join]))
+
name1, name2
+ +
$json($get(var,j),$j(authors,,each:$(key): $j(name) \(age $j(age)\),$j([sort][join])))
+
author1: name1 (age 24), author2: name2 (age 62)
+
The [sub] parameters of $j() are used here: +
+$j(
+    // Path to "authors" JSON object
+    authors,
+    // Skip the optional "[default]" parameter
+    ,
+    // Apply to each entry of "authors" and collect result in an array
+    each:$(key): $j(name) \(age $j(age)\),
+    // Sort and join array created from previous parameter
+    $j([sort][join])
+)
+
You can test these examples yourself if you store the JSON in the variable "j" using the command /set var j copyJSONfromabove diff --git a/help/help-getting-started.html b/help/help-getting-started.html index 9c9360b..6be839d 100644 --- a/help/help-getting-started.html +++ b/help/help-getting-started.html @@ -78,7 +78,7 @@

Moderating

  • blacklist: to specify one or more text patterns @@ -1155,6 +1158,11 @@ In the Highlight settings you can also enable this for all Highlight items, without having to apply this prefix to each one.
  • +
  • config:hide - Don't add the message to the + Highlighted/Ignored Messages panel
  • +
  • config:!log - Don't log the message to the + separate highlighted/ignored log file (may still be logged + to the channel log file)
  • n: to provide a note that is ignored for matching. diff --git a/help/help.html b/help/help.html index 1157960..be951c4 100644 --- a/help/help.html +++ b/help/help.html @@ -5,7 +5,7 @@ -

    Chatty (Version: 0.23)

    +

    Chatty (Version: 0.24)

    @@ -194,7 +194,7 @@ function getDownloads(tag) {
    @@ -14,7 +14,7 @@
  • Title and Tabs
  • Layouts and Tabs
  • Hotkeys
  • -
  • Commands
  • +
  • Commands
  • Twitch Login
  • @@ -249,528 +249,7 @@ Commands [back to menu] -

    All command names are case-insensitive. Something like <parameter> - represents a required parameter which must be entered for the command to - work properly (you don't enter the surrounding < >, - they are just there to show it's a parameter). Equivalently [parameter] - represents an optional parameter.

    - -

    You can also create your own Custom Commands & Customized Context Menus.

    - -

    Tip: You can also use TAB Completion for many commands.

    - -

    Chat commands:

    -
      -
    • /say <message> - Send a regular chat message, alternative to just entering the text (it being a command can be useful in some cases, e.g. if you want to ensure that a message starting with a replacement can't trigger another command or to use an Anonymous Custom Command using //say)
    • -
    • /me <message> - Send an action message (* nickname says something)
    • -
    • /msgreply <message> - Send a reply to a specific message, only works when added to the User Context Menu or User Dialog - in the Commands settings (e.g. Reply=/msgreply $$input(Reply to $(nick)))
    • -
    • /to <nick> [time] [reason] - Timeout the user with the given nickname for "time" seconds (time is optional)
    • -
    • /timeout, /ban, /unban, - /slow, /slowoff, - /subscribers, /subscribersoff, - /shieldMode, /shieldModeOff, - /clear, /mods, - /raid, /unraid, - /color - just like in normal Twitch Chat
    • -
    • /join <channel> - Joins the given channels, see Joining Channels for more information
    • -
    • /part or /close - Leaves the current channel
    • -
    • /rejoin - Rejoins the channel (without clearing users or chat)
    • -
    • /reconnect - Disconnects and reconnects
    • -
    • /clearchat - Clears the current chat window of all text (only locally)
    • -
    • /connection - Show info about the current connection
    • -
    - -

    Tip: You can circumvent Chatty commands and send Twitch Chat commands - directly by prepending them with a dot . instead of a slash, - for example: .mods.

    - -

    Other Twitch Commands

    - - -

    Special Commands

    -

    These commands change how other commands are run.

    -
      -
    • /chain to run several commands at once
    • -
    • /foreach to run a command for each value in a list
    • -
    • /runin to run a command in a specific channel context
    • -
    • /timer to run a command on a delay
    • -
    - -

    Settings / Customization commands:

    -
      -
    • Setting commands
    • -
    • /setcolor <name> - Opens the usercolor settings - for the given name
    • -
    • Addressbook commands
    • -
    • Stream Chat commands
    • -
    • /favorite [channel], /unfavorite [channel] - - Edit the Channel Favorites list (defaults to current channel if - none is given)
    • -
    • /ignore <user>, /unignore <user> - - Add/remove a user from "Settings - Ignore - Ignored Users" (chat - and whisper, only takes effect locally in Chatty), - /ignoreChat, /unignoreChat, - /ignoreWhisper, /unignoreWhisper to do the - same, except it only affects one type of message
    • -
    - -

    GUI commands:

    -
      -
    • /popoutchannel - Opens current the channel in a popout
    • -
    • /echo <text> - Outputs the given text as a info message
    • -
    • /copy - Copies the given text to the clipboard
    • -
    • /settings, /livestreams, /channeladmin, - /channelinfo, /search, /openFollowers, - /openSubscribers - Opens the according dialog
    • -
    • /userinfo <username> - To open the User Info Dialog - on a specific user of the current channel (if available)
    • -
    • /insert <text> - Inserts the given text into the input box at - the current caret position (can be useful for Custom Commands put - in a menu)
    • -
    • /insertword <text> - Same as /insert, - but adds spaces so it's separated from text before and after (if present)
    • -
    • /openUrl <url> - Opens the given url (see Open URL Command settings)
    • -
    • /openUrlPrompt <url> - Opens the given url after - showing a prompt for confirmation
    • -
    • /openFile <path> - Opens the given path in the default application
    • -
    • /openFilePrompt <path> - Opens the given path in the default application (with prompt asking for confirmation)
    • -
    • /setSize <width> <height> - Sets the main window size
    • -
    • /triggerNotification [-hmt] <text> - Triggers a - command notification event that was added in the Notification Settings - (if none is added, this won't do anything), -h to hide - notification popup, -m to don't play sound, -t - to specify the title of the notification popup (e.g. - /triggerNotification -mt "This is the title" This is the text)
    • -
    • Save and load layouts
    • -
    - -

    Housekeeping/System commands:

    -
      -
    • /uptime - Shows how long Chatty has been running
    • -
    • /appinfo - Shows Chatty version, uptime, current memory usage, system info and connection status
    • -
    • /dir / /openDir - Show/open the settings directory
    • -
    • /wdir / /openWdir - Show/open the current working directory
    • -
    • /showBackupDir / /openBackupDir - Show/open the backup directory
    • -
    • /showDebugDir / /openDebugDir - Show/open the debug log directory
    • -
    • /showLogDir / /openLogDir - Show/open the chat log directory
    • -
    • /showJavaDir / /openJavaDir - Show/open the directory of the JRE used by Chatty
    • -
    • /showFallbackFontDir / /openFallbackFontDir - Show/open the directory where Java looks for fallback fonts
    • -
    • /showTempDir / /openTempDir - Show/open the system's temp directory
    • -
    • /exportText [-sna] <fileName> <text> - Write the text to a file in the "exported" directory in the settings directory (UTF-8) -
        -
      • -s - no info message when writing successfully
      • -
      • -n - replace "\n" in the text with a newline
      • -
      • -a - append to the file (instead of overwriting it)
      • -
      • -A - append to the file and append a newline character
      • -
      • -L - append to the file on a new line (prepend a newline character)
      • -
      - (Example: /exportText -n abc.txt one\ntwo - Writes "one" and "two" as separate lines)
    • -
    • /refresh <emoticons/badges/ffz/ffzglobal/bttvemotes> - - Refresh the given data from it's respective API: -
        -
      • emoticons: Twitch Emotes
      • -
      • badges: Twitch Badges (current channel)
      • -
      • ffz: FFZ Emotes (current channel)
      • -
      • ffzglobal: Global FFZ Emotes
      • -
      • bttvemotes: BTTV Emotes (global and current channel)
      • -
      - This downloads the lists from the Internet, which may be useful - if new emotes have been added (it's basicially like pressing - reload in your browser, but only for some select stuff per command).
    • -
    • /releaseinfo - Opens the help with the release information
    • -
    • /ffz - Shows the FFZ channel emote codes for the current channel
    • -
    • /clearUserMessages [-an] - - Clears the message history in the User Dialog for all users in the - current channel, -a for all channels, -n - to only clear the number of messages (e.g. so the config:firstmsg - Highlight prefix matches again)
    • -
    - -

    Test commands:

    -
      -
    • /testNotification [channel] - Display a test notification (optionally with channel, - which means right-clicking on the notification will join that channel)
    • -
    • /debug simulate <type> - Simulates a chat message - for testing. See the Chatty source code for possible values. -
    • -
    • /debug allows for a number of debug commands to be run, - but those may produce errors and strange behaviour, so you usually - shouldn't mess around with it.
    • -
    - -

    Advanced commands (be careful with these):

    -
      -
    • /server <host>[:port] - Connect to a custom server
    • -
    • /raw <command> - Send a raw command to the server
    • -
    • /changetoken <token> - Checks if the given token - is valid and sets it as new token if it is
    • -
    • /proc - Execute a system process
    • -
    - -

    Execute several commands

    -

    The /chain command allows you to run several commands at the - same time. Each part separated by a | is basicially - entered into the inputbox again.

    - -
    -
    /chain [command1] | [command2] | [command3]
    -
    Runs command1, then command2, then command3. This can be repeated - further by adding more parts separated by |.
    -
    Whitespace around each command is trimmed.
    -
    Note: A | character in a command would be - interpreted as a command separator. Escape | with - itself to use the character without special meaning (||). - If used in a Custom Command, the function $cs() (as in - chain safe) can be used around replacements for - escaping (e.g. $cs($1-)).
    -
    - -

    Examples:

    -
    -
    /chain /echo a | /echo b
    -
    Outputs a and b
    - -
    /chain /echo a | /echo ||b||
    -
    Outputs a and |b|
    -
    - -

    When using /chain with Custom Command - replacements, consider the following:

    - -
    -
    /chain /echo $cs($(msg)) | /echo abc
    -
    All replacements are performed before the /chain - command is executed, so anything in $(msg) is put in - first. If $(msg) contained Hello World!:
    - /chain /echo Hello World! | /echo abc
    -
    /chain /echo $(msg) | /echo abc
    -
    Assuming no escaping were to take place: If $(msg) - would contain Hello | World! then the | - in it would be interpreted as a command separator and thus World! - would be separately entered into the inputbox (so it would output - two /echo info messages and send World! to - chat):
    - /chain /echo Hello | World! | /echo abc
    -
    This could cause serious issues, so it is recommended to always - make sure text is safe to be used in the /chain command: -
      -
    • Wrap replacements in the $cs() function (as in chain safe) - when used in a /chain command to escape - | characters: $cs($(msg))
    • -
    • In addition, any top-level replacement will escape - | characters automatically if the Custom Command - begins with /chain (so the above - example should normally not cause issues). However it is - good practice to always use the $cs() function - anyway (it won't be escaped twice) in case something changes - in the future so that the Custom Command doesn't begin with - /chain anymore.
      - You can prevent this automatic escaping (if you are - absolutely sure that you want replacements to be able to - insert any command) by adding a backslash in front (this - doesn't work when you enter the /chain command - directly into the inputbox):
      - \/chain /echo Hello | World! | /echo abc
    • -
    - When properly escaped, it will turn into this (which outputs - Hello | World! and abc):
    - /chain /echo Hello || World! | /echo abc -
    - -
    /chain /echo abc $(chain-test)
    -
    You can test this by using the $(chain-test) replacement. - This should (if e.g. added in the body of a Custom Command) output the following info message:
    - abc | /echo Test || Message
    -
    If you add a backslash in front, it will output two info messages:
    - abc
    - Test | Message
    -
    - -

    Execute the same command for each entry in a list

    -

    The /foreach command allows you to run the same command for - each entry of a space separated list. The command section is run as a - Custom Command, with the $1 replacement containing a single - list entry.

    - -
    -
    /foreach [list] > [command]
    -
    The command consist of the comma-separated list, the > - character and the command to execute (whereas the command is run as - it's own Custom Command with the $1 replacement).
    -
    List and command are trimmed for leading and trailing whitespace.
    -
    Note: Everything after the first > - character is interpreted as the command. If you want to use a - > in the list section you have to escape it with - itself for it to be treated literally (>>). Both the - list and command section will consume a single > only - if they are repeated (>> to >, but - > unmodified).
    -
    If you use a Custom Command replacement in the [list] - section, make sure the text is safe to use: -
      -
    • Wrap replacements in the $fs() function (as in foreach safe) - to escape > characters: $fs($1-)
    • -
    • In addition, any top-level replacements will escape > - characters automatically if the Custom Command begins with - /foreach . However it is good practice to - always use the $fs() function anyway (it won't - be escaped twice) in case something changes in the future so - that the Custom Command doesn't begin with /foreach - anymore.
    • -
    -
    -
    -

    Examples:

    -
    -
    /foreach a b c > /echo $1
    -
    Outputs a, b and c when - entered into the chat inputbox.
    - -
    //foreach a b c > /echo \$1
    -
    Outputs a, b and c when - entered into the chat inputbox. Note that the double slash at the - start runs this as a Custom Command, so the $1 needs to - be escaped, so it is only replaced when the /echo is - run for each list entry.
    - -
    /foreach a <b>> c > /echo $1
    -
    Outputs a, <b> and c - when entered into the chat inputbox. Note the escaped > - in the list entry.
    - -
    Open Streams=/foreach $fs($1-) > /openUrl https://twitch.tv/\$1 (added as a Streams Context menu entry)
    -
    When several channels are selected and the command run, it will - replace $1- with the list of selected streams and then - open the URL for each one of them. Note that the $1 in - the /openUrl command is escaped.
    -
    - -

    Detailed Explanation Example:

    -
    -
    /foreachtest /foreach a b c > /echo \$1 (added to the Custom Commands list)
    -
    Outputs a, b and c when - /foreachtest is entered into the chat inputbox.
    -
    Note the \$1 with the escape character in front, which - preserves it for replacement when the /echo is run. -

    This is what happens when you enter /foreachtest:

    -
      -
    1. Replacements are performed on the Custom Command - /foreach a b c > /echo \$1. Since the $1 - is escaped it is treated as plain text and not replaced (the - \ is consumed).
    2. -
    3. The result /foreach a b c > /echo $1 is run - and the /foreach command will use everything - after the > as the Custom Command to run (and - trim whitespace).
    4. -
    5. The Custom Command /echo $1 is run with a - as parameter, which results in /echo a being - run. The same is repeated for b and c.
    6. -
    - -

    If the $1 is not escaped:

    -
      -
    1. Replacements are performed on the Custom Command - /foreach a b c > /echo $1. The $1 - is replaced with an empty string (no argument given with the - /foreachtest command).
    2. -
    3. The result /foreach a b c > /echo is run - and the /foreach command will use everything - after the > as the Custom Command to run (and - trim whitespace).
    4. -
    5. The Custom Command /echo is run with a - as parameter (although there is no replacement to make use - of it), which results in /echo being run, - resulting in an error message. The same is repeated for - b and c.
    6. -
    -

    If the $1 is not escaped, but you provide a command - argument, e.g. /foreachtest 123, then it will - replace the $1 with 123 in the first - step, so /echo 123 will be run three times.

    -
    -
    - -

    Run a command in a specific open channel

    -

    The /runin command runs a command in the context of a - specific open channel, as if you had entered it into the channel's - inputbox. Without this, commands usually run in the context of the - currently active channel.

    - -
    -
    /runin [channel] [command]
    -
    The channel must be a regular channel with or without leading "#" (#channelname) - or a whisper channel ($username).
    -
    The command can be anything you could enter into a chat inputbox.
    -
    - -

    Examples:

    -
    -
    /runin #chan2 /echo abc
    -
    Outputs the info message "abc" in the channel "#chan2" (if it is - open in Chatty).
    - -
    //runin #chan2 //echo Channel context: \\$(chan) -> \$(chan)
    -
    This example is entered directly into a chat inputbox and outputs - an info message about the changed channel context in "#chan2". Let's say the - command is entered in the channel "#chan1".
    -
    The command begins with two slashes (//), so it is - interpreted as an anonymous Custom Command: -
      -
    • \\$(chan) turns into \#chan1 (the \\ escaped - the backslash itself, not the $, so the replacement is performed)
    • -
    • \$(chan) turns into $(chan) (this \ actually escapes the - $, so the replacement is not performed here)
    • -
    - The result /runin #chan2 //echo Channel context: \#chan1 -> $(chan) - is run, which runs //echo Channel context: \#chan1 -> $(chan) - in "#chan2".
    -
    Yet again, the command begins with two slashes (//) and - is interpreted as an anonymous Custom Command: -
      -
    • \#chan1 turns into #chan1 (the - backslash removes any special meaning from the following - characters, which in this case is not necessary, but it you - had entered this in a whisper channel $user1 - then the $ would have had to be escaped)
    • -
    • $(chan) turns into #chan2 (this - Custom Command is run in the new channel context, so it - turns into the target channel, which does not need to be - escaped further, even if it were $user2, since - it doesn't get interpreted as a Custom Command after this)
    • -
    - The resulting command /echo Channel context: #chan1 -> #chan2 - is then run and outputs an info message. -
    -
    - -

    Execute a command on a delay

    -

    The /timer command allows you to run a delayed command after - a duration or at a certain time. The timed command is run as if it was - entered into the inputbox of the same channel that the /timer - command was entered in (the command is not run at all if the channel is - not a regular channel or not open anymore, unless the -a - option is used).

    - -

    Certain restrictions apply:

    -
      -
    • A timed command can't contain another /timer command as well as some other commands.
    • -
    • A timed message can only be send to regular channels (not whispers) - and only as a moderator of the channel.
    • -
    • Parameters from the context of where /timer is called - do not carry over into the context when the timed command is executed. - Note that in a lot of cases the parameters would already have been - replaced anyway. Consider a button "Test" added to the User Dialog: -
        -
      • In case of Test=/timer 1 /echo $(nick) - replacements are performed on /timer 1 /echo $(nick), - resulting in /timer 1 /echo someusername, resulting in - /echo someusername one second later.
      • -
      • On the other hand Test=/timer 1 //echo \$(nick) - replacements are performed on /timer 1 //echo \$(nick) - (note that \$(nick) is escaped, so it is not - replaced yet), resulting in /timer 1 //echo $(nick), - resulting in //echo $(nick) one second later, which - (because of the double-slash) is parsed as a Custom Command and - replacements are performed, which won't find the "nick" parameter - because it didn't carry over. Normally there is no reason to do it - like this though.
      • -
      -
    - -
    -
    /timer [-options] [:id] <duration|time|'list'|'stop'> <timed command>
    -
    Optionally one or several options (-rs) can be specified: -
      -
    • -r (Keeps the timer through a restart of Chatty - if it hasn't run yet. The timer is saved in the settings and - restored with the same target time, channel and timed - command. If the target time has already been passed when - Chatty is started again it will immediately run the timed - command.)
    • -
    • -o (If a timer of the same id already exists, - overwrite it, without this option the new timer would not be - started in such a case.)
    • -
    • -s (Silent, starting the timer successfully - doesn't output a message.)
    • -
    • -a (Always run the command, even if the channel - the timer was started in is not open anymore or not valid, - which can make sense if the command being run is not - channel-specific, such as modifying the Addressbook. If the - channel is not open anymore the currently active channel is - used, in which case sending messages it not allowed.)
    • -
    • Full example: /timer -rs 10m /echo hello - (Outputs "hello" in 10 minutes, keeps it when Chatty is - restarted within that time and doesn't output a timer - started message.)
    • -
    -
    -
    The id is used to identify a timer after it has been started (e.g. - to stop it). Can be anything (no spaces), if it ends with * - an automatically generated number will be appended to make the id - unique if used more than once. If no id is specified an - automatically generated number without prefix will be used. -
      -
    • :abc (the id is "abc")
    • -
    • :abc* (the id might be "abc1", "abc2", "abc3", ...)
    • -
    • Not specified (the id is an automatically generated number)
    • -
    • Full example: /timer :abc 10m /echo hello - (outputs "hello" in 10 minutes, with the timer id "abc")
    • -
    -
    -
    The duration is in seconds by default, but you can also append a - time unit and several durations that get added up (no spaces): -
      -
    • 5ms (milliseconds)
    • -
    • 5s (seconds)
    • -
    • 5m (minutes)
    • -
    • 5h (hours)
    • -
    • 5h10m (5 hours 10 minutes)
    • -
    • 5h10 (5 hours 10 minutes)
    • -
    • 5h10m30 (5 hours 10 minutes 30 seconds)
    • -
    • Full example: /timer 5h /echo hello (outputs "hello" in 5 hours)
    • -
    -
    -
    An absolute time is written like a digital clock in 24hr format, a - date can be added in front, in which case it has to be enclosed in - [ ]. With no date specified the next occurence of the - time is used, so e.g. if it's already in the evening a time of 5 in - the morning would be on the next day: -
      -
    • 5:30 (5:30 in the morning)
    • -
    • 17:30 (5:30 in the afternoon)
    • -
    • 5:30:50 (5:30 and 50 seconds in the morning)
    • -
    • [05:20:00] (the time can also be enclosed in - [ ])
    • -
    • [2022-01-10 5:30] (when including the date the - [ ] is required and the date has to always be - the full date in the format YYYY-MM-DD)
    • -
    • Full example: /timer 16:30 /echo hello (outputs - the info message "hello" at 4:30 PM)
    • -
    -
    -
    Output info about currently active timers: -
      -
    • list (Lists all timers, soonest to run first.)
    • -
    • -q list (Same as above, but the list is in timer start order.)
    • -
    • :a* list (Outputs information about timers with ids that begin with "a".)
    • -
    • list a* (Same as above, but id in place of the timed command.)
    • -
    • Full example: /timer list a* (Shows all active timers with ids that begin with "a".)
    • -
    -
    -
    Stop active timers: -
      -
    • :abc1 stop (Stops a timer with the id "abc1".)
    • -
    • stop abc1 (Same as above, but id in place of the timed command.)
    • -
    • :abc* stop (Stops all timers with ids that begin with "abc".)
    • -
    • :* stop (Stops all active timers.)
    • -
    • Full example: /timer stop * (Stops all active timers.)
    • -
    -
    -
    +

    This has been moved to it's own page

    Twitch Login @@ -865,7 +344,7 @@
  • The "Main - Connect" dialog when connecting
  • The "Channels - Join Channel" dialog
  • The "Channels - Favorites / History" dialog
  • -
  • The /join command
  • +
  • The /join command
  • The "Channels - Live Channels" dialog context menu or (if configured that way) via double-click or space while a stream is selected
  • Right-clicking a Stream Status Notification
  • diff --git a/index.html b/index.html index fe36b87..09f807d 100644 --- a/index.html +++ b/index.html @@ -16,9 +16,9 @@ function loaded() { { ceiling: null, text: "$years years ago" } ] } - document.getElementById("ago").innerHTML = "Version 0.23 released "+humanized_time_span("2023/02/17", Date(), custom_date_formats)+""; + document.getElementById("ago").innerHTML = "Version 0.24 released "+humanized_time_span("2023/05/09", Date(), custom_date_formats)+""; - getDownloads("v0.23"); + getDownloads("v0.24"); slideshow_init("slideshow"); } @@ -158,7 +158,7 @@ function getDownloads(tag) {

    Download

    -

    Choose one of the following downloads of Chatty Version 0.23. For older versions or betas go to the GitHub Releases. Checksums for release files are available as SHA-256 hashes.

    +

    Choose one of the following downloads of Chatty Version 0.24. For older versions or betas go to the GitHub Releases. Checksums for release files are available as SHA-256 hashes.

    If this is your first time using Chatty check out the Getting Started Guide.

    Windows

    @@ -170,11 +170,11 @@ function getDownloads(tag) {
    -
    Download Windows Standalone (Installer) Recommended
    +
    Download Windows Standalone (Installer) Recommended
    Install into a folder of your choice and start Chatty.exe (or optionally created shortcuts).
    -
    Download Windows Standalone (.zip)
    +
    Download Windows Standalone (.zip)
    Extract the .zip into a folder of your choice and start Chatty.exe.
    @@ -182,11 +182,11 @@ function getDownloads(tag) {
    -
    Download JAR-Version (Installer)
    +
    Download JAR-Version (Installer)
    Install into a folder of your choice and start Chatty.jar (or optionally created shortcuts).
    -
    Download JAR-Version (.zip)
    +
    Download JAR-Version (.zip)
    Extract the .zip into a folder of your choice and start Chatty.jar.

    Non-Windows

    -

    For OS other than Windows (e.g. Linux or MacOS) you will need to download the JAR-Version (.zip) and must have Java 8 or later installed on your system. Extract the .zip into a folder of your choice and start Chatty.jar.

    +

    For OS other than Windows (e.g. Linux or MacOS) you will need to download the JAR-Version (.zip) and must have Java 8 or later installed on your system. Extract the .zip into a folder of your choice and start Chatty.jar.

    Contact

    If you have any feedback or questions feel free to contact me. You can join the Chatty Discord preferred, write me an E-Mail or use Twitter.

    @@ -226,7 +226,7 @@ function getDownloads(tag) {

    If you like Chatty, there are several ways you can show your appreciation or help development, like simply sending a nice message, recommending Chatty to others or showing your involvement by submitting bug reports and feature requests.

    You can also say thanks by supporting me on Patreon (you can get a badge!), which is highly appreciated and helps to ensure continued development.

    - +