3
0
mirror of https://github.com/pragma-/pbot.git synced 2025-05-03 13:17:33 +02:00

Improve README.md

This commit is contained in:
Pragmatic Software 2021-06-13 18:35:00 -07:00
parent 6163f53076
commit 5a4c52cde0

View File

@ -2,10 +2,9 @@
PBot is a versatile IRCv3 Bot written in Perl PBot is a versatile IRCv3 Bot written in Perl
<!-- md-toc-begin --> <!-- md-toc-begin -->
* [PBot](#pbot)
* [Installation / Quick Start](#installation--quick-start) * [Installation / Quick Start](#installation--quick-start)
* [Features](#features) * [Features](#features)
* [IRCv3](#ircv3) * [IRCv3 capable](#ircv3-capable)
* [Powerful command interpreter](#powerful-command-interpreter) * [Powerful command interpreter](#powerful-command-interpreter)
* [Piping](#piping) * [Piping](#piping)
* [Substitution](#substitution) * [Substitution](#substitution)
@ -14,7 +13,6 @@ PBot is a versatile IRCv3 Bot written in Perl
* [Selectors](#selectors) * [Selectors](#selectors)
* [Inline invocation](#inline-invocation) * [Inline invocation](#inline-invocation)
* [Background processing](#background-processing) * [Background processing](#background-processing)
* [Reload core modules without disconnecting](#reload-core-modules-without-disconnecting)
* [Scripting interface](#scripting-interface) * [Scripting interface](#scripting-interface)
* [Extensible](#extensible) * [Extensible](#extensible)
* [Factoids](#factoids) * [Factoids](#factoids)
@ -22,11 +20,12 @@ PBot is a versatile IRCv3 Bot written in Perl
* [Plugins](#plugins) * [Plugins](#plugins)
* [Modules](#modules) * [Modules](#modules)
* [Functions](#functions) * [Functions](#functions)
* [Virtual machine](#virtual-machine) * [Virtual machine to safely execute user-submitted code](#virtual-machine-to-safely-execute-user-submitted-code)
* [Powerful user management](#powerful-user-management) * [Powerful user management](#powerful-user-management)
* [Useful IRC improvements](#useful-irc-improvements) * [Useful IRC quality-of-life improvements](#useful-irc-quality-of-life-improvements)
* [Channel management and protection](#channel-management-and-protection) * [Channel management and protection](#channel-management-and-protection)
* [Easy configuration](#easy-configuration) * [Easy configuration](#easy-configuration)
* [Live reloading of core modules or data files](#live-reloading-of-core-modules-or-data-files)
* [Documentation](#documentation) * [Documentation](#documentation)
* [Frequently Asked Questions](#frequently-asked-questions) * [Frequently Asked Questions](#frequently-asked-questions)
* [Support](#support) * [Support](#support)
@ -38,7 +37,7 @@ To get up-and-running quickly, check out the [Quick Start guide](doc/QuickStart.
## Features ## Features
### IRCv3 ### IRCv3 capable
PBot supports several features of the IRCv3 specification. PBot supports several features of the IRCv3 specification.
* client capability negotiation * client capability negotiation
@ -139,17 +138,6 @@ The familiar [`ps`](doc/Admin.md#ps) and [`kill`](doc/Admin.md#kill) commands ca
You can also [`cmdset`](doc/Admin.md#cmdset) the `process-timeout` [command metadata](doc/Admin.md#command-metadata-list) to set the timeout, in seconds, before the command is automatically killed. Otherwise the `processmanager.default_timeout` [registry value](doc/Registry.md) will be used. You can also [`cmdset`](doc/Admin.md#cmdset) the `process-timeout` [command metadata](doc/Admin.md#command-metadata-list) to set the timeout, in seconds, before the command is automatically killed. Otherwise the `processmanager.default_timeout` [registry value](doc/Registry.md) will be used.
### Reload core modules without disconnecting
Suppose you edit some PBot source file, be it a core file such as [PBot/Interpreter.pm](PBot/Interpreter.pm) or
a Plugin such as [Plugins/Wttr.pm](Plugins/Wttr.pm). Or suppose there's a PBot update available. Most simple
bots would require you to shut down the bot and restart it in order to see the modifications.
Not PBot! you can simply use the [`refresh`](doc/Admin.md#refresh) command to reload all modified
PBot core files and Plugins without bot restart.
You can also use the [`reload`](doc/Admin.md#reload) command to reload any modified
configuration or data files.
### Scripting interface ### Scripting interface
PBot uses [Plang](https://github.com/pragma-/Plang) as a scripting language. You can use the PBot uses [Plang](https://github.com/pragma-/Plang) as a scripting language. You can use the
scripting language to construct advanced commands that are capable of interacting with PBot scripting language to construct advanced commands that are capable of interacting with PBot
@ -327,12 +315,14 @@ Additional Functions can easily be added by making a very simple PBot Plugin.
For more information, see the [Functions documentation](doc/Functions.md). For more information, see the [Functions documentation](doc/Functions.md).
### Virtual machine ### Virtual machine to safely execute user-submitted code
PBot can integrate with a virtual machine to safely execute arbitrary user-submitted PBot can integrate with a virtual machine to safely execute arbitrary user-submitted
operating system commands or code. 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.
<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?
@ -374,7 +364,7 @@ PBot has powerful yet simple user management functionality and commands.
For more information, see the [Admin documentation.](doc/Admin.md#user-management-commands) For more information, see the [Admin documentation.](doc/Admin.md#user-management-commands)
### Useful IRC improvements ### Useful IRC quality-of-life improvements
* [`mode`](doc/Admin.md#mode) command can take wildcards, e.g. `mode +ov foo* bar*` to op nicks beginning with `foo` and voice nicks beginning with `bar` * [`mode`](doc/Admin.md#mode) command can take wildcards, e.g. `mode +ov foo* bar*` to op nicks beginning with `foo` and voice nicks beginning with `bar`
* `unban <nick>` and `unmute <nick>` will remove all bans/mutes matching their current or previously seen hostmasks or accounts * `unban <nick>` and `unmute <nick>` will remove all bans/mutes matching their current or previously seen hostmasks or accounts
* [`ban`](doc/Admin.md#banmute) and [`mute`](doc/Admin.md#banmute) will intelligently set banmasks; supports timeouts * [`ban`](doc/Admin.md#banmute) and [`mute`](doc/Admin.md#banmute) will intelligently set banmasks; supports timeouts
@ -409,6 +399,17 @@ These settings can easily be configured via several methods:
For more information, see the [Registry documentation.](doc/Registry.md) For more information, see the [Registry documentation.](doc/Registry.md)
### Live reloading of core modules or data files
Suppose you edit some PBot source file, be it a core file such as [PBot/Interpreter.pm](PBot/Interpreter.pm) or
a Plugin such as [Plugins/Wttr.pm](Plugins/Wttr.pm). Or suppose there's a PBot update available. Most simple
bots would require you to shut down the bot and restart it in order to see the modifications.
Not PBot! you can simply use the [`refresh`](doc/Admin.md#refresh) command to reload all modified
PBot core files and Plugins without bot restart.
You can also use the [`reload`](doc/Admin.md#reload) command to reload any modified
configuration or data files.
## Documentation ## Documentation
See the [PBot documentation](doc) for more information. See the [PBot documentation](doc) for more information.