mirror of
https://github.com/chatty/chatty.github.io.git
synced 2024-11-08 12:02:28 +01:00
Merge branch 'master' into slashrefresh
This commit is contained in:
commit
096828cc5e
@ -38,6 +38,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.</pre
|
||||
<li><a href="https://github.com/TooTallNate/Java-WebSocket">Java-WebSocket</a> (MIT), <a href="http://www.slf4j.org/">SLF4J</a> (MIT)</li>
|
||||
<li><a href="http://www.jtattoo.net">JTattoo</a> by MH Software-Entwicklung
|
||||
(<a href="http://www.gnu.org/licenses/gpl-3.0.txt">GPLv2 or later</a>)</li>
|
||||
<li><a href="https://www.formdev.com/flatlaf/">FlatLaf</a> by FormDev
|
||||
(<a href="https://github.com/JFormDesigner/FlatLaf/blob/main/LICENSE">Apache License 2.0</a>)</li>
|
||||
<li><a href="https://github.com/rjeschke/txtmark">Txtmark</a>
|
||||
(<a href="http://www.apache.org/licenses/LICENSE-2.0">"Apache License 2.0"</a>)</li>
|
||||
<li><a href="https://hc.apache.org/">Apache HttpComponents Client</a> (<a href="http://www.apache.org/licenses/LICENSE-2.0">"Apache License 2.0"</a>)</li>
|
||||
|
@ -233,7 +233,7 @@
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th rowspan="10"><em>All</em></th>
|
||||
<th rowspan="9"><em>All</em></th>
|
||||
<td><code>chan</code></td>
|
||||
<td>The current channel context (without leading #)</td>
|
||||
</tr>
|
||||
@ -247,10 +247,6 @@
|
||||
<td>All currently open regular channels (separated by spaces,
|
||||
without leading #)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>hostedChan</code></td>
|
||||
<td>The currently hosted channel (if any)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>streamstatus</code></td>
|
||||
<td>Stream Status (Title/Game or Offline)</td>
|
||||
@ -443,15 +439,49 @@
|
||||
replacement:
|
||||
<code>$(1-) -> $<u>join</u>(1-<u>,/</u>)</code></p>
|
||||
|
||||
<p>Functions by topic (ones marked with * are not available in every context):</p>
|
||||
<ul>
|
||||
<li>Decisions:
|
||||
<a href="#func-if">$if()</a>,
|
||||
<a href="#func-ifeq">$ifeq()</a>,
|
||||
<a href="#func-switch">$switch()</a>,
|
||||
<a href="#func-is">$is()</a>*
|
||||
</li>
|
||||
<li>Text:
|
||||
<a href="#func-join">$join()</a>,
|
||||
<a href="#func-lower">$lower()</a>,
|
||||
<a href="#func-upper">$upper()</a>,
|
||||
<a href="#func-trim">$trim()</a>,
|
||||
<a href="#func-replace">$replace()</a>,
|
||||
<a href="#func-rand">$rand()</a>,
|
||||
<a href="#func-sort">$sort()</a>,
|
||||
<a href="#func-input">$input()</a>
|
||||
</li>
|
||||
<li>Numbers:
|
||||
<a href="#func-randnum">$randnum()</a>,
|
||||
<a href="#func-calc">$calc()</a>,
|
||||
<a href="#func-round">$round()</a>
|
||||
</li>
|
||||
<li>Requests/URLs:
|
||||
<a href="#func-request">$request()</a>*,
|
||||
<a href="#func-urlencode">$urlencode()</a>,
|
||||
<a href="#func-json">$json()</a>
|
||||
</li>
|
||||
<li>Other:
|
||||
<a href="#func-datetime">$datetime()</a>,
|
||||
<a href="#func-get">$get()</a>*
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>The following functions are always available:</p>
|
||||
<dl class="defList">
|
||||
<dt><code>$if(<identifier>,<output if exists>,[output if not])</code></dt>
|
||||
<dt><a name="func-if"><code>$if(<identifier>,<output if exists>,[output if not])</code></a></dt>
|
||||
<dd>If the value the identifier refers to exists (non-empty), it will
|
||||
return the first function parameter, the second otherwise.</dd>
|
||||
<dd><em>Example:</em> <code>$if(1,$1,nope)</code> with command parameters <code>cheese cake</code> turns into <code>cheese</code>,
|
||||
with no parameters turns into <code>nope</code>, the optional <code>[output if not]</code> function parameter.</dd>
|
||||
|
||||
<dt><code>$ifeq(<identifier>,<comparison>,<output if equal>,[output if not])</code></dt>
|
||||
<dt><a name="func-ifeq"><code>$ifeq(<identifier>,<comparison>,<output if equal>,[output if not])</code></a></dt>
|
||||
<dd>Similar to <code>$if</code>, but instead of just checking for the
|
||||
existence of a parameter it compares it to a given value
|
||||
(<code><comparison></code>).</dd>
|
||||
@ -460,31 +490,36 @@
|
||||
<code>cheese cake</code> turns into an an empty string, since the
|
||||
optional <code>[output if not]</code> has not been specified.</dd>
|
||||
|
||||
<dt><code>$switch(<identifier>,<case1>:<result1>,..,[casen]:[resultn],[default])</code></dt>
|
||||
<dt><a name="func-switch"><code>$switch(<identifier>,<case1>:<result1>,..,[casen]:[resultn],[default])</code></a></dt>
|
||||
<dd>Similiar to a switch statement in programming, or one or several <code>$ifeq()</code> functions.
|
||||
Compares the value associated with the identifier with the case values and returns the following
|
||||
result if it matches. If none of the case values match, it will return the default, or an empty value.</dd>
|
||||
<dd><em>Example:</em> <code>/set fontSize $switch($get(fontSize),25:50,50:18,25)</code> when added
|
||||
as a Custom Command alternates between font sizes 18, 25 and 50.</dd>
|
||||
|
||||
<dt><code>$join(<identifier>,<separator>)</code></dt>
|
||||
<dt><a name="func-join"><code>$join(<identifier>,<separator>)</code></a></dt>
|
||||
<dd>Joins together the arguments the identifier refers to, using the
|
||||
given separator.</dd>
|
||||
<dd><em>Example:</em> <code>$join(1-,/)</code> with <code>1-</code> referring to
|
||||
<code>flour sugar eggs</code> turns into <code>flour/sugar/eggs</code></dd>
|
||||
<dd>This effectively replaces spaces in the parameters with the separator.</dd>
|
||||
|
||||
<dt><code>$lower(<identifier>)</code></dt>
|
||||
<dt><a name="func-lower"><code>$lower(<identifier>)</code></a></dt>
|
||||
<dd>Makes the given input lowercase.</dd>
|
||||
<dd><em>Example:</em> <code>$lower(1)</code> with <code>1</code>
|
||||
referring to <code>Fremily</code> turns into <code>fremily</code>.</dd>
|
||||
|
||||
<dt><code>$upper(<identifier>)</code></dt>
|
||||
<dt><a name="func-upper"><code>$upper(<identifier>)</code></a></dt>
|
||||
<dd>Makes the given input uppercase.</dd>
|
||||
<dd><em>Example:</em> <code>$upper(1)</code> with <code>1</code>
|
||||
referring to <code>Fremily</code> turns into <code>FREMILY</code>.</dd>
|
||||
|
||||
<dt><code>$replace(<input>,<search>,<replace>,[method])</code>
|
||||
<dt><a name="func-trim"><code>$trim(<input>)</code></a></dt>
|
||||
<dd>Removes leading and trailing space (U+0020 and lower, using the
|
||||
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#trim%28%29">String.trim()</a> method).</dd>
|
||||
<dd><em>Example:</em> <code>$trim( abc )</code> turns into <code>abc</code>.</dd>
|
||||
|
||||
<dt><a name="func-replace"><code>$replace(<input>,<search>,<replace>,[method])</code></a></dt>
|
||||
<dd>Search and replace in text.</dd>
|
||||
<dd>Especially when using Regex, remember
|
||||
escaping <code>\</code> (<code>\\</code>) and <code>$</code> (<code>\$</code>)
|
||||
@ -512,14 +547,14 @@
|
||||
<dd><em>Example:</em> <code>$replace(Was timed out for 30 seconds,.*?(\\d+) seconds,Number of seconds: \$1,regRef)</code> turns into <code>Number of seconds: 30</code></dd>
|
||||
<dd><em>Example:</em> <code>$replace($1-,$"~([a-z]+)~",<span style="text-decoration: underline">$replace($(g1),$"(\w)",$"$1+",regRef)</span>,regCustom)</code> adds <code>+</code> behind every character surrounded by <code>~</code> (the inner <code>$replace()</code> is in the <code>replace</code> parameter and executed for each match)</dd>
|
||||
|
||||
<dt><code>$rand([output1],[output2],[output3],..)</code></dt>
|
||||
<dt><a name="func-rand"><code>$rand([output1],[output2],[output3],..)</code></a></dt>
|
||||
<dd>Randomly chooses one of the outputs.</dd>
|
||||
<dd><em>Example:</em> <code>$rand(cheesecake,strawberry cake,$1-)</code>
|
||||
with <code>1-</code> referring to <code>apple pie</code> turns into
|
||||
either <code>cheesecake</code>, <code>strawberry cake</code> or
|
||||
<code>apple pie</code>.</dd>
|
||||
|
||||
<dt><code>$randnum(<from>,<to>)</code> or <code>$randnum(<to>)</code></dt>
|
||||
<dt><a name="func-randnum"><code>$randnum(<from>,<to>)</code> or <code>$randnum(<to>)</code></a></dt>
|
||||
<dd>Randomly chooses a number in the given range (inclusive). If only
|
||||
one number is given, it the range is 0 to the given number. If the
|
||||
"from" is not a number, it defaults to 0, if the "to" is not a
|
||||
@ -529,7 +564,7 @@
|
||||
<dd><em>Example:</em> <code>$randum($$1)</code> chooses a random number
|
||||
between 0 and what is the first parameter.</dd>
|
||||
|
||||
<dt><code>$calc(<simple math expression>)</code></dt>
|
||||
<dt><a name="func-calc"><code>$calc(<simple math expression>)</code></a></dt>
|
||||
<dd>Limited support for performing calculations, with binary operators
|
||||
(<code>* / % + -</code>) and functions (<code>sqrt() sin() cos() tan()</code>).</dd>
|
||||
<dd><em>Example:</em> <code>//echo $calc(2^3) $calc( (3+4\) / 2)</code>
|
||||
@ -540,7 +575,7 @@
|
||||
(this uses <code>$" "</code> to specify <a href="#escaping">literal text</a>
|
||||
instead of escaping the parenthesis with a backslash).</dd>
|
||||
|
||||
<dt><code>$round(<number>,[numDecimalPlaces],[roundingMode],[minNumDecimalPlaces])</code></dt>
|
||||
<dt><a name="func-round"><code>$round(<number>,[numDecimalPlaces],[roundingMode],[minNumDecimalPlaces])</code></a></dt>
|
||||
<dd>Round a number to the given amount of decimal places,
|
||||
with a <a href="https://docs.oracle.com/javase/7/docs/api/java/math/RoundingMode.html">rounding mode</a>
|
||||
of empty (half-up), <code>ceil</code>, <code>floor</code>,
|
||||
@ -551,13 +586,13 @@
|
||||
<dd><em>Example:</em> <code>//echo $round(345.5,3,floor,3)</code> outputs <code>345.500</code> (fills up to 3 decimal places)</dd>
|
||||
<dd><em>Example:</em> <code>//echo $round(2.565,2,,2)</code> outputs <code>2.57</code> (uses default rounding mode)</dd>
|
||||
|
||||
<dt><code>$urlencode(<input>)</code></dt>
|
||||
<dt><a name="func-urlencode"><code>$urlencode(<input>)</code></a></dt>
|
||||
<dd>Uses <a href="https://docs.oracle.com/javase/8/docs/api/java/net/URLEncoder.html#encode-java.lang.String-java.lang.String-">UrlEncoder.encode()</a>
|
||||
to prepare the input to be used in a URL query parameter.</dd>
|
||||
<dd><em>Example:</em> <code>$urlencode($(msg))</code> in User Dialog
|
||||
encodes the currently selected message.</dd>
|
||||
|
||||
<dt><code>$sort(<input>,[type],[separator])</code></dt>
|
||||
<dt><a name="func-sort"><code>$sort(<input>,[type],[separator])</code></a></dt>
|
||||
<dd>Sorts the given input alphabetically. The sort type can be "abc"
|
||||
(default) for case-insensitive sorting or "Abc" for case-sensitive
|
||||
sorting. The separator is what separates the parts that are sorted,
|
||||
@ -565,18 +600,19 @@
|
||||
<dd><em>Example:</em> <code>$sort(B c a)</code> turns into <code>a B c</code></dd>
|
||||
<dd><em>Example:</em> <code>$sort(B c a,Abc)</code> turns into <code>B a c</code></dd>
|
||||
|
||||
<dt><code>$input([message],[intial],[type])</code></dt>
|
||||
<dt><a name="func-input"><code>$input([message],[intial],[type])</code></a></dt>
|
||||
<dd>Requests text input from the user by showing an input dialog.
|
||||
Execution is paused while the dialog is open. The user may enter an
|
||||
empty value (the result is just empty) or cancel the dialog (the
|
||||
command will not be executed).</dd>
|
||||
<dd>The <code>message</code> is shown in the input dialog, the <code>initial</code>
|
||||
text will already be in the input field when the dialog opens. The
|
||||
<code>type</code> is currently not used and can just be left empty.</dd>
|
||||
<code>type</code> can be set to <code>simple</code> to use the
|
||||
previously default simple input dialog.</dd>
|
||||
<dd><em>Example:</em> <code>$input()</code></dd>
|
||||
<dd><em>Example:</em> <code>$input(Enter a number please)</code></dd>
|
||||
|
||||
<dt><code>$datetime([format],[timezone],[locale],[unix time])</code></dt>
|
||||
<dt><a name="func-datetime"><code>$datetime([format],[timezone],[locale],[unix time])</code></a></dt>
|
||||
<dd>Outputs the current date/time. You can optionally give a format
|
||||
pattern (based on <a href="https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#patterns">DateTimeFormatter</a>),
|
||||
a timezone (based on <a href="https://docs.oracle.com/javase/8/docs/api/java/time/ZoneId.html">ZoneId</a>,
|
||||
@ -634,12 +670,98 @@
|
||||
<dd>(Preset format, with timezone, no locale, with a time
|
||||
specified in milliseconds since 1970-01-01 00:00:00 UTC.)</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
|
||||
<dt><a name="func-json"><code>$json(<input>,<output>)</code></a></dt>
|
||||
<dd>Parse the JSON in <code><input></code> and use in <code><output></code>,
|
||||
where <code>$j(<path>,[default])</code> can be used to access specific values.
|
||||
The JSON input could e.g. come from the <code>$request()</code>
|
||||
function.</dd>
|
||||
<dd>If the path isn't formatted correctly or the JSON is invalid the
|
||||
command may not work. Check out the Debug Log (e.g. Extra - Debug
|
||||
window) to find out what went wrong.</dd>
|
||||
<dd>The <code><path></code> specifies what value to return from
|
||||
the <code>$j(<path>,[default])</code> function, whereas the optional <code>[default]</code>
|
||||
value will be returned if the path is not valid or points to an empty value.</dd>
|
||||
<dd>In the <code><path></code> you specify keys of JSON objects
|
||||
separated by <code>-></code> (e.g. <code>key1->key2->key3</code>) or
|
||||
indices of JSON arrays in brackets <code>[ ]</code> (e.g. <code>key1[0]</code>
|
||||
for the first element of the array key1). Additionally the brackets <code>[ ]</code>
|
||||
can contain:
|
||||
<ul>
|
||||
<li><code>last</code> for the last entry of an array</li>
|
||||
<li><code>size</code> to return the number of elements</li>
|
||||
<li><code>filter:<path>[=regex]</code> to select only
|
||||
certain array items based on whether a path exists or if a
|
||||
regex is provided the value of the path</li>
|
||||
<li><code>collect:<path>[=regex]</code> iterates over an
|
||||
array and for each element resolves the path and combines
|
||||
the resulting values into an array</li>
|
||||
<li><code>combine:<path>[=regex]</code> iterates over an
|
||||
array and for each element resolves the path and for each
|
||||
resulting value that is an array adds all of the array
|
||||
values into a single result array</li>
|
||||
<li><code>unique</code> removes duplicate elements from an array</li>
|
||||
<li><code>join[:delimiter]</code> turns an array into a string
|
||||
by joining all elements together using the given delimiter
|
||||
(or "<code>, </code>" if none is provided)</li>
|
||||
</ul></dd>
|
||||
<dd><em>Examples</em> with the following JSON as input:
|
||||
<pre>
|
||||
{
|
||||
"books":[
|
||||
{"title":"book1", "author":"author1", "tags":["tag1","tag2"]},
|
||||
{"title":"book2", "author":"author2", "tags":["tag1"]},
|
||||
{"title":"book3", "author":"author2", "tags":["tag1", "tag3"]},
|
||||
{"title":"book4", "author":"author2"}
|
||||
],
|
||||
"numBooks": 4,
|
||||
"numAuthors": 2
|
||||
}</pre>
|
||||
<dl>
|
||||
<dt><code>$json($get(var,j),There are $j(numBooks) books of $j(numAuthors) authors.)</code></dt>
|
||||
<dt><code>$json($get(var,j),There are $j(books[size]) books of $j(books->[collect:author][unique][size]) authors.)</code></dt>
|
||||
<dd><code>There are 4 books of 2 authors.</code></dd>
|
||||
<dd>Reading the "num" values provided in the JSON or determining
|
||||
the same information from the "books" array.</dd>
|
||||
|
||||
<dt><code>$json($get(var,j),The last book is called $j(books[last]->title) by $j(books[last]->author).)</code></dt>
|
||||
<dd><code>The last book is called book4 by author2.</code></dd>
|
||||
|
||||
<dt><code>$json($get(var,j),The first book is $j(books[0]))</code></dt>
|
||||
<dd><code>The first book is {"author":"author1","title":"book1","tags":["tag1","tag2"]}</code></dd>
|
||||
<dd>If the end of the specified path is a JSONArray or JSONObject
|
||||
it will be returned as a JSON encoded String.</dd>
|
||||
|
||||
<dt><code>$json($get(var,j),$j(books[10]->title,Book not found))</code></dt>
|
||||
<dd><code>Book not found</code></dd>
|
||||
<dd>Since the index <code>10</code> does not exist, the default
|
||||
value <code>Book not found</code> is returned. If no default
|
||||
value is provided an empty string would be returned.</dd>
|
||||
|
||||
<dt><code>$json($get(var,j),Books of author2: $j(books[filter:author=author2][collect:title]))</code></dt>
|
||||
<dd><code>Books of author2: ["book2","book3","book4"]</code></dd>
|
||||
|
||||
<dt><code>$json($get(var,j),Tags of author2: $j(books[filter:author=author2][combine:tags][unique]))</code></dt>
|
||||
<dd><code>Tags of author2: ["tag1","tag3"]</code></dd>
|
||||
|
||||
<dt><code>$json($get(var,j),Tags of author2: $j(books[filter:author=author2][combine:tags][unique][join]))</code></dt>
|
||||
<dd><code>Tags of author2: tag1, tag3</code></dd>
|
||||
</dl>
|
||||
You can test these examples yourself if you store the JSON in the
|
||||
variable "j" using the command <code>/set var j copyJSONfromabove</code>
|
||||
and then use the <code>//echo $json($get(var,j),...)</code> command
|
||||
in the chat inputbox
|
||||
to output an info message with the result in chat. Pasting the JSON
|
||||
directly into the <code>$json()</code> function would require
|
||||
escaping the <code>,</code> characters to work.
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<p>The following functions are only available in some contexts:</p>
|
||||
|
||||
<dl class="defList">
|
||||
<dt><code>$is(<match input>)</code></dt>
|
||||
<dt><a name="func-is"><code>$is(<match input>)</code></a></dt>
|
||||
<dd>Outputs <code>true</code> if the match succeeds, nothing otherwise.
|
||||
The <code>match input</code> is in the <a href="help-settings.html#Highlight_Matching">Highlight</a>
|
||||
format, although what can actually be matched against depends on
|
||||
@ -649,7 +771,7 @@
|
||||
will output <code>I'm a mod</code> in channels where you are the
|
||||
broadcaster or a moderator, <code>Not a mod</code> otherwise.</dd>
|
||||
|
||||
<dt><code>$get(<settingName>,[key])</code></dt>
|
||||
<dt><a name="func-get"><code>$get(<settingName>,[key])</code></a></dt>
|
||||
<dd>Returns the value of a setting. Different setting types return
|
||||
differently formatted values. There is no comprehensive list of
|
||||
settings, unless you count the <a href="https://github.com/chatty/chatty/blob/master/src/chatty/SettingsManager.java">Chatty source</a>.</dd>
|
||||
@ -662,7 +784,7 @@
|
||||
<dd><em>Example:</em> <code>$if($get(ontop),ONTOP)</code> will return
|
||||
<code>ONTOP</code> only if "View - Always on top" is enabled.</dd>
|
||||
|
||||
<dt><code>$request(<url>,[options])</code></dt>
|
||||
<dt><a name="func-request"><code>$request(<url>,[options])</code></a></dt>
|
||||
<dd>Performs a GET request on the given http/https URL and returns the
|
||||
body of the reponse interpreted as UTF-8 encoded text. If an error
|
||||
occurs the response will be empty.</dd>
|
||||
@ -670,6 +792,11 @@
|
||||
<ul>
|
||||
<li><code>error</code> - A request error will return an error
|
||||
message instead of an empty response.</li>
|
||||
<li><code>trim</code> - Remove leading and trailing space from
|
||||
the request result. This may be useful if a request returns
|
||||
any spaces or linebreak characters that cause issues with
|
||||
what you're using it with. Same as the <a href="#func-trim"><code>$trim()</code></a>
|
||||
function.</li>
|
||||
</ul></dd>
|
||||
<dd><em>Note:</em> Normally Custom Commands are performed instantaneously, however the
|
||||
replacements for any Custom Command that contains the <code>$request()</code>
|
||||
|
@ -17,6 +17,7 @@
|
||||
<h1><a name="top">Release Information</a></h1>
|
||||
|
||||
<p>
|
||||
<a href="#0.22">0.22</a> |
|
||||
<a href="#0.21">0.21</a> |
|
||||
<a href="#0.20">0.20</a> |
|
||||
<a href="#0.19">0.19</a> |
|
||||
@ -70,10 +71,52 @@
|
||||
full list of changes.</p>
|
||||
|
||||
<h2>
|
||||
<a name="0.21">Version 0.21</a> <a name="latest">(This one!)</a> (2022-10-17)
|
||||
<a name="0.22">Version 0.22</a> <a name="latest">(This one!)</a> (2023-01-15)
|
||||
<a href="#top" class="top">[back to top]</a>
|
||||
</h2>
|
||||
<p>Twitch has announced that Twich chat comands will be removed from IRC in
|
||||
<pre>
|
||||
### Twitch Features
|
||||
- Added chat message for outgoing raids with join link (due to API limits only
|
||||
in at most 10 live channels)
|
||||
- Show poll start/end messages (broadcaster only)
|
||||
- Added shield mode commands and display (for moderators)
|
||||
|
||||
### Custom Commands
|
||||
- Added "Anonymous Custom Command" hotkey action, where a Custom Command can be
|
||||
entered directly (instead of a the name of a Custom Command)
|
||||
- Added function `$trim()` to remove leading and trailing whitespace
|
||||
- Added `trim` option to `$request()`
|
||||
- Added function `$json()` to parse JSON and access specific values
|
||||
- Changed `$input()` inputbox to have the same features as the channel inputbox
|
||||
if run in a channel context
|
||||
- Added `/exportText` options `-A` and `-L`
|
||||
|
||||
### Other
|
||||
- Added FlatLaf (new modern Look&Feel, selectable in the "Look" settings)
|
||||
- Added feature to make a popout with one channel transparent
|
||||
- Made AutoMod dialog dockable
|
||||
- Improved Settings Dialog
|
||||
- Removed SRL menu
|
||||
- Removed some hosting related stuff, added raid context menu entries
|
||||
- Added setting whether to hide tab pane when only a single channel is open
|
||||
(hidden by default, as was the previous behaviour)
|
||||
- Added local caching to Pronouns for more reliability and faster display
|
||||
- Added new Chatty icons to img folder
|
||||
- Added context menu setting to Live Streams list to only show favorites
|
||||
- Updated help
|
||||
|
||||
### Bugfixes
|
||||
- Fixed `/color` command not being able to set some default colors
|
||||
- Fixed error occuring for some commands when no parameter is provided
|
||||
- Fixed commands `/unvip` and `/unmod`
|
||||
- Fixed channels sometimes not opening in the correct popout
|
||||
</pre>
|
||||
|
||||
<h2>
|
||||
<a name="0.21">Version 0.21</a> (2022-10-17)
|
||||
<a href="#top" class="top">[back to top]</a>
|
||||
</h2>
|
||||
<p>Twitch has announced that Twitch chat comands will be removed from IRC in
|
||||
February 2023, so they need to be migrated to the API. You will need to
|
||||
update your login with additional access scopes to be able to use most
|
||||
commands in this update.</p>
|
||||
|
@ -1376,10 +1376,6 @@
|
||||
<dt><code>user:name chan:tirean,gocnak</code></dt>
|
||||
<dd>Ignores the user with the name <code>name</code> in channels <code>#tirean</code> and <code>#gocnak</code></dd>
|
||||
|
||||
<dt><code>config:info subscribed to</code></dt>
|
||||
<dd>Ignores the <code>x has subscribed to y</code> info messages that
|
||||
you get when someone subscribes in the channel that is being hosted</dd>
|
||||
|
||||
<dt><code>cat:ignore !chan:lotsofs,joshimuz</code></dt>
|
||||
<dd>Ignores users in the addressbook category <code>ignore</code> in all channels,
|
||||
except <code>#lotsofs</code> and <code>#joshimuz</code></dd>
|
||||
@ -1920,20 +1916,6 @@
|
||||
|
||||
<h3>Other</h3>
|
||||
<dl class="dl-settings">
|
||||
<dt>Auto-Unhost when your stream goes live</dt>
|
||||
<dd>Automatically
|
||||
sends the <code>/unhost</code> command to your channel if you started
|
||||
your stream session in the last 15 minutes and the stream status
|
||||
changes (usually from offline -> live).<br />
|
||||
For this to work, you need to have joined the channel in Chatty,
|
||||
either with the broadcaster account (so your own account if it's
|
||||
your stream) or with an account that is an editor in the channel
|
||||
(in which case you also have to add the channel to the
|
||||
<code>autoUnhostStreams</code> setting, via
|
||||
<code>/add autoUnhostStreams <streamName></code>, in order to
|
||||
tell Chatty that you are authorized/want to use the automatic <code>/unhost</code>
|
||||
feature in that channel).</dd>
|
||||
|
||||
<dt>Prepend to window title</dt>
|
||||
<dd>Add some arbitrary text to the beginning of the window title. This
|
||||
can be useful if you run several instances of Chatty (to be able to
|
||||
|
@ -5,7 +5,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="style.css" />
|
||||
</head>
|
||||
<body>
|
||||
<h1><a name="top">Chatty (Version: 0.21)</a></h1>
|
||||
<h1><a name="top">Chatty (Version: 0.22)</a></h1>
|
||||
<table>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
@ -117,11 +117,11 @@
|
||||
|
||||
<p>In addition, the titlebar will also show additional information, if enabled:</p>
|
||||
<ul>
|
||||
<li>The name of the channel that is being hosted</li>
|
||||
<li><code>Sub</code> for Subscriber-Only Mode</li>
|
||||
<li><code>Slow: <time></code> for Slowmode</li>
|
||||
<li><code>R9k</code> for R9Kbeta Mode</li>
|
||||
<li><code>EmoteOnly</code> for Emote-Only Mode</li>
|
||||
<li><code>Shield</code> if Shield Mode is enabled (moderators only)</li>
|
||||
<li>A language code if Broadcaster Language Mode is enabled</li>
|
||||
<li><code>[FM]</code> indicates a websocket connection (<code>F</code>
|
||||
for FrankerFaceZ, <code>M</code> for PubSub/Modlogs)</li>
|
||||
@ -269,12 +269,12 @@
|
||||
<li><code>/timeout</code>, <code>/ban</code>, <code>/unban</code>,
|
||||
<code>/slow</code>, <code>/slowoff</code>,
|
||||
<code>/subscribers</code>, <code>/subscribersoff</code>,
|
||||
<code>/clear</code>, <code>/mods</code>, <code>/host</code>,
|
||||
<code>/unhost</code>, <code>/raid</code>, <code>/unraid</code>,
|
||||
<code>/shieldMode</code>, <code>/shieldModeOff</code>,
|
||||
<code>/clear</code>, <code>/mods</code>,
|
||||
<code>/raid</code>, <code>/unraid</code>,
|
||||
<code>/color</code>
|
||||
just like in normal Twitch Chat</li>
|
||||
<li><code>/join <channel></code> - Joins the given channels, see <a href="#join">Joining Channels</a> for more information</li>
|
||||
<li><code>/joinhosted</code> - Join currently hosted channel (if any)</li>
|
||||
<li><code>/part</code> or <code>/close</code> - Leaves the current channel</li>
|
||||
<li><code>/rejoin</code> - Rejoins the channel (without clearing users or chat)</li>
|
||||
<li><code>/reconnect</code> - Disconnects and reconnects</li>
|
||||
@ -360,7 +360,15 @@
|
||||
<li><code>/showJavaDir</code> / <code>/openJavaDir</code> - Show/open the directory of the JRE used by Chatty</li>
|
||||
<li><code>/showFallbackFontDir</code> / <code>/openFallbackFontDir</code> - Show/open the directory where Java looks for <a href="help-troubleshooting.html#font">fallback fonts</a></li>
|
||||
<li><code>/showTempDir</code> / <code>/openTempDir</code> - Show/open the system's temp directory</li>
|
||||
<li><code>/exportText [-sna] <fileName> <text></code> - Write the text to a file in the "exported" directory in the settings directory (UTF-8), <code>-s</code> for no info message when writing successfully, <code>-n</code> for replacing "\n" in the text with a newline, <code>-a</code> for appending to the file (Example: <code>/exportText -n abc.txt one\ntwo</code> - Writes "one" and "two" as separate lines)</li>
|
||||
<li><code>/exportText [-sna] <fileName> <text></code> - Write the text to a file in the "exported" directory in the settings directory (UTF-8)
|
||||
<ul>
|
||||
<li><code>-s</code> - no info message when writing successfully</li>
|
||||
<li><code>-n</code> - replace "\n" in the text with a newline</li>
|
||||
<li><code>-a</code> - append to the file (instead of overwriting it)</li>
|
||||
<li><code>-A</code> - append to the file and append a newline character</li>
|
||||
<li><code>-L</code> - append to the file on a new line (prepend a newline character)</li>
|
||||
</ul>
|
||||
(Example: <code>/exportText -n abc.txt one\ntwo</code> - Writes "one" and "two" as separate lines)</li>
|
||||
<li><code>/refresh <emoticons/badges/bits/ffz/ffzglobal/bttvemotes/7tv></code>
|
||||
- Refresh the given data from it's respective API:
|
||||
<ul>
|
||||
@ -389,8 +397,7 @@
|
||||
<li><code>/testNotification [channel]</code> - Display a test notification (optionally with channel,
|
||||
which means right-clicking on the notification will join that channel)</li>
|
||||
<li><code>/debug simulate <type></code> - Simulates a chat message
|
||||
for testing. Some possible types: <code>sub</code>, <code>resub</code>,
|
||||
<code>bits</code>, <code>authost</code>.
|
||||
for testing. See the Chatty source code for possible values.
|
||||
</li>
|
||||
<li><code>/debug</code> allows for a number of debug commands to be run,
|
||||
but those may produce errors and strange behaviour, so you usually
|
||||
|
@ -1,11 +1,26 @@
|
||||
body {
|
||||
max-width: 700px;
|
||||
font-size: 1em;
|
||||
color: black;
|
||||
background-color: #FDFDFD;
|
||||
font-family: Arial, sans-serif;
|
||||
padding: 10px;
|
||||
margin: 0;
|
||||
}
|
||||
/**
|
||||
The link color with some LaF might be wrong, so set it explicitly. However just
|
||||
a:link and similar doesn't seem to work in Java, but targeting a changes the
|
||||
color of all a tags, including <a name=""></a>, in normal browsers. So first set
|
||||
everything with a "name" attribute to black for normal browsers (which would set
|
||||
*all* of them to black in Java if it came second) and then set them to blue for
|
||||
Java.
|
||||
*/
|
||||
a[name] {
|
||||
color: black;
|
||||
}
|
||||
a {
|
||||
color: blue;
|
||||
}
|
||||
h1 {
|
||||
margin: 4px 0 5px 0;
|
||||
font-size: 1.2em;
|
||||
@ -41,6 +56,7 @@ li {
|
||||
}
|
||||
code {
|
||||
background-color: #EEEEEE;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
.codeblock {
|
||||
|
16
index.html
16
index.html
@ -16,9 +16,9 @@ function loaded() {
|
||||
{ ceiling: null, text: "$years years ago" }
|
||||
]
|
||||
}
|
||||
document.getElementById("ago").innerHTML = "Version 0.21 released "+humanized_time_span("2022/10/17", Date(), custom_date_formats)+"";
|
||||
document.getElementById("ago").innerHTML = "Version 0.22 released "+humanized_time_span("2023/01/15", Date(), custom_date_formats)+"";
|
||||
|
||||
getDownloads("v0.21");
|
||||
getDownloads("v0.22");
|
||||
|
||||
slideshow_init("slideshow");
|
||||
}
|
||||
@ -158,7 +158,7 @@ function getDownloads(tag) {
|
||||
|
||||
|
||||
<h2 id="download">Download</h2>
|
||||
<p>Choose one of the following downloads of <strong>Chatty Version 0.21</strong><span id="dlCount" style="margin-bottom:7px;"></span>. For older versions or betas go to the <a href="https://github.com/chatty/chatty/releases">GitHub Releases</a>. Checksums for release files are available as <a href="https://tduva.com/chatty/checksums/v0.21/">SHA-256 hashes</a>.</p>
|
||||
<p>Choose one of the following downloads of <strong>Chatty Version 0.22</strong><span id="dlCount" style="margin-bottom:7px;"></span>. For older versions or betas go to the <a href="https://github.com/chatty/chatty/releases">GitHub Releases</a>. Checksums for release files are available as <a href="https://tduva.com/chatty/checksums/v0.22/">SHA-256 hashes</a>.</p>
|
||||
<p>If this is your first time using Chatty check out the <a href="help/help-getting-started.html"><strong>Getting Started Guide</strong></a>.</p>
|
||||
|
||||
<h3>Windows</h3>
|
||||
@ -170,11 +170,11 @@ function getDownloads(tag) {
|
||||
<tr>
|
||||
<td>
|
||||
<dl>
|
||||
<dt><a href="https://github.com/chatty/chatty/releases/download/v0.21/Chatty_0.21_win_standalone_setup.exe"><strong>Download Windows Standalone (Installer)</strong></a> <span class="recommended"><sup>Recommended</sup></span></dt>
|
||||
<dt><a href="https://github.com/chatty/chatty/releases/download/v0.22/Chatty_0.22_win_standalone_setup.exe"><strong>Download Windows Standalone (Installer)</strong></a> <span class="recommended"><sup>Recommended</sup></span></dt>
|
||||
<dd>Install into a folder of your choice and start <code>Chatty.exe</code> (or optionally created shortcuts).</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><a href="https://github.com/chatty/chatty/releases/download/v0.21/Chatty_0.21_win_standalone.zip">Download Windows Standalone (.zip)</a></dt>
|
||||
<dt><a href="https://github.com/chatty/chatty/releases/download/v0.22/Chatty_0.22_win_standalone.zip">Download Windows Standalone (.zip)</a></dt>
|
||||
<dd>Extract the .zip into a folder of your choice and start <code>Chatty.exe</code>.</dd>
|
||||
</dl>
|
||||
|
||||
@ -182,11 +182,11 @@ function getDownloads(tag) {
|
||||
</td>
|
||||
<td>
|
||||
<dl>
|
||||
<dt><a href="https://github.com/chatty/chatty/releases/download/v0.21/Chatty_0.21_win_setup.exe">Download JAR-Version (Installer)</a></dt>
|
||||
<dt><a href="https://github.com/chatty/chatty/releases/download/v0.22/Chatty_0.22_win_setup.exe">Download JAR-Version (Installer)</a></dt>
|
||||
<dd>Install into a folder of your choice and start <code>Chatty.jar</code> (or optionally created shortcuts).</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><a href="https://github.com/chatty/chatty/releases/download/v0.21/Chatty_0.21.zip">Download JAR-Version (.zip)</a></dt>
|
||||
<dt><a href="https://github.com/chatty/chatty/releases/download/v0.22/Chatty_0.22.zip">Download JAR-Version (.zip)</a></dt>
|
||||
<dd>Extract the .zip into a folder of your choice and start <code>Chatty.jar</code>.</dd>
|
||||
</dl>
|
||||
</td>
|
||||
@ -194,7 +194,7 @@ function getDownloads(tag) {
|
||||
</table>
|
||||
|
||||
<h3>Non-Windows</h3>
|
||||
<p>For OS other than Windows (e.g. Linux or MacOS) you will need to download the <a href="https://github.com/chatty/chatty/releases/download/v0.21/Chatty_0.21.zip">JAR-Version (.zip)</a> and must have Java 8 or later installed on your system. Extract the .zip into a folder of your choice and start <code>Chatty.jar</code>.</p>
|
||||
<p>For OS other than Windows (e.g. Linux or MacOS) you will need to download the <a href="https://github.com/chatty/chatty/releases/download/v0.22/Chatty_0.22.zip">JAR-Version (.zip)</a> and must have Java 8 or later installed on your system. Extract the .zip into a folder of your choice and start <code>Chatty.jar</code>.</p>
|
||||
|
||||
<h2 id="feedback">Contact</h2>
|
||||
<p>If you have any feedback or questions feel free to contact me. You can <a href="https://discord.gg/WTuqGeJ">join the Chatty Discord</a> <sup>preferred</sup>, write me an <a href="mailto:chattyclient@gmail.com">E-Mail</a> or use <a href="https://twitter.com/chattyclient">Twitter</a>.</p>
|
||||
|
Loading…
Reference in New Issue
Block a user