3
0
mirror of https://github.com/pragma-/pbot.git synced 2024-11-29 23:39:24 +01:00

Improve README.md

This commit is contained in:
Pragmatic Software 2021-06-13 19:04:13 -07:00
parent 4e15e3ce18
commit 4fabcf2ffc

View File

@ -8,15 +8,15 @@ PBot is a versatile IRCv3 Bot written in Perl
* [Powerful command interpreter](#powerful-command-interpreter) * [Powerful command interpreter](#powerful-command-interpreter)
* [Piping](#piping) * [Piping](#piping)
* [Substitution](#substitution) * [Substitution](#substitution)
* [Chaining](#chaining)
* [Variables](#variables) * [Variables](#variables)
* [Selectors](#selectors) * [Selectors](#selectors)
* [Inline invocation](#inline-invocation) * [Inline invocation](#inline-invocation)
* [Chaining](#chaining)
* [Background processing](#background-processing) * [Background processing](#background-processing)
* [Scripting interface](#scripting-interface) * [Scripting interface](#scripting-interface)
* [Extensible](#extensible) * [Extensible](#extensible)
* [Factoids](#factoids) * [Factoids](#factoids)
* [Code Factoids](#code-factoids) * [Code factoids](#code-factoids)
* [Plugins](#plugins) * [Plugins](#plugins)
* [Modules](#modules) * [Modules](#modules)
* [Functions](#functions) * [Functions](#functions)
@ -84,14 +84,6 @@ factoid otherwise it will be expanded first.
[Learn more.](doc/Commands.md#substitution) [Learn more.](doc/Commands.md#substitution)
#### Chaining
You can execute multiple commands sequentially as one command.
<pragma-> !echo Test! ;;; me smiles. ;;; version
<PBot> Test! * PBot smiles. PBot version 2696 2020-01-04
[Learn more.](doc/Commands.md#chaining)
#### Variables #### Variables
You can use factoids as variables and interpolate them within commands. You can use factoids as variables and interpolate them within commands.
@ -126,11 +118,16 @@ is addressed to a nick, the output will also be addressed to them.
[Learn more.](doc/Commands.md#command-invocation) [Learn more.](doc/Commands.md#command-invocation)
#### Background processing #### Chaining
Any command can be flagged to be executed as a background process. For example, suppose you You can execute multiple commands sequentially as one command.
make a Plugin that has a command that may potentially take a long time to complete, which could
cause PBot to be non-responsive...
<pragma-> !echo Test! ;;; me smiles. ;;; version
<PBot> Test! * PBot smiles. PBot version 2696 2020-01-04
[Learn more.](doc/Commands.md#chaining)
#### Background processing
All of PBot's internal commands complete instantly, but suppose you make a Plugin that provides a command that may potentially take a long time to complete?
Not a problem! You can use the [`cmdset`](doc/Admin.md#cmdset) command to set the `background-process` [command metadata](doc/Admin.md#command-metadata-list) Not a problem! You can use the [`cmdset`](doc/Admin.md#cmdset) command to set the `background-process` [command metadata](doc/Admin.md#command-metadata-list)
and the command will now run as a background process, allowing PBot to carry on with its duties. and the command will now run as a background process, allowing PBot to carry on with its duties.
@ -168,7 +165,7 @@ PBot factoids include these advanced features:
* [undo/redo history](doc/Factoids.md#factundo) * [undo/redo history](doc/Factoids.md#factundo)
* [changelog history](doc/Factoids.md#factlog) * [changelog history](doc/Factoids.md#factlog)
* [channel namespaces](doc/Factoids.md#channel-namespaces) * [channel namespaces](doc/Factoids.md#channel-namespaces)
* [creating](doc/Factoids.md#factadd) and [modifying](doc/Factoids.md#factchange) contents using your local system editor. Yes, you can edit the contents, optionally including line-breaks and indentation; then paste to a paste site; and finally use `factadd -url` or `factchange -url` comamnds. * You can use the [`factadd`](doc/Factoids.md#factadd) and [`factchange``](doc/Factoids.md#factchange) commands accept a `-url` option that sets the factoid contents from a paste website. In other words, you can edit a factoid's contents using your local editor, optionally including line-breaks and indentation.
* [advanced `$variable` interpolation](doc/Factoids.md#expansion-modifiers) (`$var:lc` to lowercase contents, `$var:ucfirst` to uppercase first letter, etc) * [advanced `$variable` interpolation](doc/Factoids.md#expansion-modifiers) (`$var:lc` to lowercase contents, `$var:ucfirst` to uppercase first letter, etc)
* [factoid-based variable lists](doc/Factoids.md#list-variables) (e.g., add a factoid `colors` containing "red green blue" and then `!echo $colors` will randomly pick one) * [factoid-based variable lists](doc/Factoids.md#list-variables) (e.g., add a factoid `colors` containing "red green blue" and then `!echo $colors` will randomly pick one)
* [advanced argument processing](doc/Factoids.md#special-variables-1) (indexing, splicing, etc) * [advanced argument processing](doc/Factoids.md#special-variables-1) (indexing, splicing, etc)
@ -178,8 +175,10 @@ PBot factoids include these advanced features:
For more information, see the [Factoids documentation](doc/Factoids.md). For more information, see the [Factoids documentation](doc/Factoids.md).
#### Code Factoids #### Code factoids
Code Factoids are a special type of factoid that executes its contents within a sandboxed virtual machine. Code factoids are a special type of factoid that executes its contents within a sandboxed virtual machine.
The contents of code factoids must begin with the `/code` command:
/code <language> <code> /code <language> <code>
@ -193,7 +192,7 @@ For example, the venerable `rot13` function:
Making a `choose` command: Making a `choose` command:
<pragma-> !factadd choose /code zsh zsh _arr=($args); print $_arr[$((RANDOM % $#_arr + 1))] <pragma-> !factadd choose /code zsh _arr=($args); print $_arr[$((RANDOM % $#_arr + 1))]
<PBot> choose added to global channel. <PBot> choose added to global channel.
Using the `choose` command via an [embedded command](doc/Commands.md#inline-invocation): Using the `choose` command via an [embedded command](doc/Commands.md#inline-invocation):
@ -314,7 +313,7 @@ operating system commands or code.
PBot supports [several shells and languages](doc/Factoids.md#supported-languages) out of the box! PBot supports [several shells and languages](doc/Factoids.md#supported-languages) out of the box!
One of PBot's most powerful features, [Code Factoids](#code-factoids) would not be possible without this. One of PBot's most powerful features, [Code Factoids](#code-factoids), would not be possible without this.
<pragma-> !sh echo Remember rot13? | tr a-zA-Z n-za-mN-ZA-M <pragma-> !sh echo Remember rot13? | tr a-zA-Z n-za-mN-ZA-M
<PBot> Erzrzore ebg13? <PBot> Erzrzore ebg13?