PBot
PBot is a versatile IRC Bot written in Perl
Installation / Quick Start
To get up-and-running quickly, check out the Quick Start guide.
Documentation
See the PBot documentation for more information.
Features
Factoids
PBot has factoids with advanced features.
- metadata (e.g. owner, times used, last used date, locked, etc)
- advanced argument processing (indexing, splicing, etc)
- special commands:
/say,/me,/msg,/code, etc - advanced
$variableinterpolation ($var:lcto lowercase contents,$var:ucfirstto uppercase first letter, etc) - factoid-based variable lists (e.g., add a factoid
$colorscontaining “red green blue” and then!echo $colorswill randomly pick one) - changelog history
- undo/redo history
- and much, much more!
Code Factoids
Code factoids are a special type of factoid that begin with the
/code command.
/code <language> <code>
That’s right! Anybody can create a factoid that can execute arbitrary code in any language! This is one of PBot’s most powerful features.
How is this safe? Because the code is executed within a virtual machine that has been configured to fall-back to a previously saved state whenever it times out.
Useful IRC command improvements
modecommand can take wildcards, e.g.mode +ov foo* bar*to op nicks beginning withfooand voice nicks beginning withbarunban <nick>andunmute <nick>can remove all bans/mutes matching<nick>’s hostmask or accountbanandmutewill intelligently set banmasks; supports timeoutsbanandmutecan take a comma-separate list of nicks. Will intelligently group them into multipleMODE +bbbbcommandskickcan take a comma-separated list of nicks; accept wildcards- and much, much, more
Channel management
PBot can perform the expected channel management tasks.
- opping/deopping, etc
- channel-mode tracking
- user hostmask/alias tracking
- ban-evasion detection
- flood detection
- whitelisting, blacklisting, etc
- spam/advertisement detection
- and much, much more
Plugins
PBot can dynamically load and unload Perl modules to alter its behavior.
These are some of the plugins that PBot has, there are many more:
| Plugin | Description |
|---|---|
| GoogleSearch | Performs Internet searches using the Google search engine. |
| UrlTitles | When a URL is seen in a channel, intelligently display its title. It will not display titles that are textually similiar to the URL, in order to maintain the channel signal-noise ratio. |
| Quotegrabs | Grabs channel messages as quotes for posterity. Can grab messages from anywhere in the channel history. Can grab multiple messages at once! |
| RemindMe | Lets people set up reminders. Lots of options. |
| ActionTrigger | Lets admins set regular expression triggers to execute PBot commands or factoids. |
| AntiAway | Detects when a person uses annoying in-channel away messages and warns them. |
| AutoRejoin | Automatically rejoin channels if kicked or removed. |
| AntiNickSpam | Detects when a person is spamming an excessive number of nicks in the channel and removes them. |
| AntiRepeat | Warn people about excessively repeating messages. Kicks if they fail to heed warnings. |
| AntiTwitter | Warn people about addressing others with @<nick>.
Kicks if they fail to heed warnings. |
There are even a few games!
| Plugin | Description |
|---|---|
| Spinach | An advanced multiplayer Trivia game engine with a twist! A question is shown, everybody privately submits a false answer, all false answers and the true answer is shown, everybody tries to guess the true answer, points are gained when people pick your false answer! |
| Battleship | The classic Battleship board game, simplified for IRC |
| Connect4 | The classic Connect-4 game. |
Modules
PBot can execute any command-line program or script as an internal command. We call these modules.
These are just some of the more notable modules; there are several more:
| Module | Description |
|---|---|
| C-to-English translator | Translates C code to natural English sentences. |
| C precedence analyzer | Adds parentheses to C code to demonstrate precedence. |
| C Jeopardy! game | C programming trivia game based on the Jeopardy! TV game show. |
| Virtual machine | Executes arbitrary code and commands within a virtual machine. |
| C Standard citations | Cite specified sections/paragraphs from the C standard. |
| dict.org Dictionary | Interface to dict.org for definitions, translations, acronyms, etc. |
| Urban Dictionary | Search Urban Dictionary for definitions. |
| Manpages | Display a concise formatting of manual pages (designed for C functions) |
Admin management
PBot has easy admin management via simple built-in commands.
- admins can be global admins or channel-specific admins
- admins can be required to login with a password
- admins can be set to be permanently logged-in
- admin abilities configured by admin-levels
Easy configuration
PBot’s settings are contained in a central registry of key/value pairs grouped by sections.
These settings can easily be configured via several methods:
- PBot’s command-line arguments
- simple built-in commands (
regset,regunset, etc) - editing the
$data_dir/registryplain-text JSON file
Advanced Interpreter
PBot has an advanced command interpreter with useful functionality.
- piping
- command substitution
- command separation
- inline commands
- $variable interpolation
- aliases
- and more!
Support
PBot has many features and can be daunting. For support, feel free to
join the #pbot2 channel on the Freenode IRC network.
License
PBot is licensed under the Mozilla Public License, version 2.