2020-01-12 19:30:51 +01:00
# PBot Documentation
## Table of Contents
2020-01-13 07:25:26 +01:00
<!-- md - toc - begin -->
* [QuickStart ](QuickStart.md#quickstart )
* [Installation ](QuickStart.md#installation )
* [Installing Perl ](QuickStart.md#installing-perl )
* [Installing PBot ](QuickStart.md#installing-pbot )
2020-02-04 11:32:29 +01:00
* [git (recommended) ](QuickStart.md#git-recommended )
* [Download zip archive ](QuickStart.md#download-zip-archive )
2020-01-28 04:53:48 +01:00
* [Initial Setup ](QuickStart.md#initial-setup )
2021-07-15 03:33:35 +02:00
* [Installing CPAN modules ](QuickStart.md#installing-cpan-modules )
* [Installing cpanminus ](QuickStart.md#installing-cpanminus )
* [Installing and using local::lib ](QuickStart.md#installing-and-using-locallib )
* [Using cpanminus ](QuickStart.md#using-cpanminus )
* [re::engine::RE2 ](QuickStart.md#reenginere2 )
2020-01-13 07:25:26 +01:00
* [Clone data-directory ](QuickStart.md#clone-data-directory )
2020-01-28 04:53:48 +01:00
* [Configuration ](QuickStart.md#configuration )
2020-02-04 11:32:29 +01:00
* [Recommended settings for IRC Networks ](QuickStart.md#recommended-settings-for-irc-networks )
2020-01-13 07:25:26 +01:00
* [Starting PBot ](QuickStart.md#starting-pbot )
* [Usage ](QuickStart.md#usage )
2020-09-22 23:05:25 +02:00
* [rlwrap ](QuickStart.md#rlwrap )
2020-02-04 11:32:29 +01:00
* [Overriding directories ](QuickStart.md#overriding-directories )
* [Overriding registry ](QuickStart.md#overriding-registry )
2020-01-28 04:53:48 +01:00
* [First-time start-up ](QuickStart.md#first-time-start-up )
2021-06-12 22:54:03 +02:00
* [Using default settings ](QuickStart.md#using-default-settings )
2020-02-04 11:32:29 +01:00
* [Using custom settings ](QuickStart.md#using-custom-settings )
2020-01-28 04:53:48 +01:00
* [Regular start-up ](QuickStart.md#regular-start-up )
* [Additional configuration ](QuickStart.md#additional-configuration )
2020-01-28 05:05:31 +01:00
* [Creating your bot owner admin account ](QuickStart.md#creating-your-bot-owner-admin-account )
2020-01-28 04:53:48 +01:00
* [Adding other users and admins ](QuickStart.md#adding-other-users-and-admins )
2020-01-28 05:18:22 +01:00
* [Adding channels ](QuickStart.md#adding-channels )
2020-01-13 07:25:26 +01:00
* [Further Reading ](QuickStart.md#further-reading )
* [Commands ](QuickStart.md#commands )
* [Factoids ](QuickStart.md#factoids )
2020-01-28 04:53:48 +01:00
* [Plugins ](QuickStart.md#plugins )
2020-01-13 07:25:26 +01:00
* [Modules ](QuickStart.md#modules )
<!-- md - toc - end -->
2020-01-12 19:30:51 +01:00
<!-- md - toc - begin -->
2020-07-23 23:37:04 +02:00
* [Plugins ](Plugins.md#plugins )
* [About ](Plugins.md#about )
* [Plang ](Plugins/Plang.md )
* [Quotegrabs ](Plugins/Quotegrabs.md )
<!-- md - toc - end -->
<!-- md - toc - begin -->
2020-01-22 03:39:11 +01:00
* [Commands ](Commands.md#commands )
* [Command interpreter ](Commands.md#command-interpreter )
2020-06-01 03:12:59 +02:00
* [Command invocation ](Commands.md#command-invocation )
* [Addressing output to users ](Commands.md#addressing-output-to-users )
* [Inline invocation ](Commands.md#inline-invocation )
* [Chaining ](Commands.md#chaining )
2020-01-22 03:39:11 +01:00
* [Piping ](Commands.md#piping )
* [Substitution ](Commands.md#substitution )
* [Variables ](Commands.md#variables )
2020-06-03 08:44:02 +02:00
* [Selectors ](Commands.md#selectors )
2020-02-15 08:35:34 +01:00
* [Background processing ](Commands.md#background-processing )
2020-01-22 03:39:11 +01:00
* [Types of commands ](Commands.md#types-of-commands )
* [Built-in commands ](Commands.md#built-in-commands )
2020-02-04 11:32:29 +01:00
* [Creating new built-in commands ](Commands.md#creating-new-built-in-commands )
* [Plugins ](Commands.md#plugins )
2020-02-16 21:22:14 +01:00
* [Functions ](Commands.md#functions )
2020-01-22 03:39:11 +01:00
* [Factoids ](Commands.md#factoids )
2020-02-04 11:32:29 +01:00
* [Code Factoids ](Commands.md#code-factoids )
* [Modules ](Commands.md#modules )
2020-01-23 04:29:44 +01:00
* [Commands documented here ](Commands.md#commands-documented-here )
2020-01-22 03:39:11 +01:00
* [version ](Commands.md#version )
* [help ](Commands.md#help )
2020-01-23 04:29:44 +01:00
* [uptime ](Commands.md#uptime )
2020-01-27 05:15:45 +01:00
* [my ](Commands.md#my )
* [date ](Commands.md#date )
* [weather ](Commands.md#weather )
2020-01-23 04:29:44 +01:00
* [Commands documented elsewhere ](Commands.md#commands-documented-elsewhere )
2020-02-04 11:32:29 +01:00
* [Administrative commands ](Commands.md#administrative-commands )
* [Logging in and out of PBot ](Commands.md#logging-in-and-out-of-pbot )
* [User management commands ](Commands.md#user-management-commands )
* [Channel management commands ](Commands.md#channel-management-commands )
* [Module management commands ](Commands.md#module-management-commands )
* [Plugin management commands ](Commands.md#plugin-management-commands )
* [Command metadata ](Commands.md#command-metadata )
2020-03-09 00:33:01 +01:00
* [Event queue ](Commands.md#event-queue )
2020-02-15 08:35:34 +01:00
* [Process management ](Commands.md#process-management )
2020-02-04 11:32:29 +01:00
* [Registry commands ](Commands.md#registry-commands )
2021-09-06 21:45:02 +02:00
* [Message history ](Commands.md#message-history )
2020-02-04 11:32:29 +01:00
* [Miscellaneous admin commands ](Commands.md#miscellaneous-admin-commands )
* [Factoid commands ](Commands.md#factoid-commands )
* [Adding/removing factoids ](Commands.md#addingremoving-factoids )
* [Displaying factoids ](Commands.md#displaying-factoids )
* [Editing factoids ](Commands.md#editing-factoids )
* [Factoid metadata ](Commands.md#factoid-metadata )
* [Information about factoids ](Commands.md#information-about-factoids )
2020-01-22 03:39:11 +01:00
<!-- md - toc - end -->
<!-- md - toc - begin -->
2020-01-12 19:30:51 +01:00
* [Administrative ](Admin.md#administrative )
* [Logging in and out ](Admin.md#logging-in-and-out )
* [login ](Admin.md#login )
* [logout ](Admin.md#logout )
2020-01-27 04:52:37 +01:00
* [User management commands ](Admin.md#user-management-commands )
* [useradd ](Admin.md#useradd )
* [userdel ](Admin.md#userdel )
* [userset ](Admin.md#userset )
* [userunset ](Admin.md#userunset )
2020-02-04 11:32:29 +01:00
* [User metadata list ](Admin.md#user-metadata-list )
2020-01-27 04:52:37 +01:00
* [Listing users ](Admin.md#listing-users )
2020-02-04 11:30:26 +01:00
* [User capabilities ](Admin.md#user-capabilities )
2020-02-06 20:22:47 +01:00
* [Introduction ](Admin.md#introduction )
2020-02-04 11:30:26 +01:00
* [cap ](Admin.md#cap )
2020-02-04 11:32:29 +01:00
* [Listing capabilities ](Admin.md#listing-capabilities )
* [Grouping capabilities ](Admin.md#grouping-capabilities )
* [Giving capabilities to users ](Admin.md#giving-capabilities-to-users )
* [Checking user capabilities ](Admin.md#checking-user-capabilities )
2020-02-06 20:22:47 +01:00
* [Listing users who have a capability ](Admin.md#listing-users-who-have-a-capability )
2020-02-04 11:32:29 +01:00
* [User capabilities list ](Admin.md#user-capabilities-list )
2020-01-12 19:30:51 +01:00
* [Channel management commands ](Admin.md#channel-management-commands )
* [join ](Admin.md#join )
* [part ](Admin.md#part )
* [chanadd ](Admin.md#chanadd )
* [chanrem ](Admin.md#chanrem )
* [chanset ](Admin.md#chanset )
* [chanunset ](Admin.md#chanunset )
* [chanlist ](Admin.md#chanlist )
2020-02-04 11:32:29 +01:00
* [Channel metadata list ](Admin.md#channel-metadata-list )
2020-01-12 19:30:51 +01:00
* [ignore ](Admin.md#ignore )
* [unignore ](Admin.md#unignore )
* [blacklist ](Admin.md#blacklist )
* [op ](Admin.md#op )
* [deop ](Admin.md#deop )
* [voice ](Admin.md#voice )
* [devoice ](Admin.md#devoice )
* [mode ](Admin.md#mode )
* [ban/mute ](Admin.md#banmute )
* [unban/unmute ](Admin.md#unbanunmute )
* [invite ](Admin.md#invite )
* [kick ](Admin.md#kick )
* [Module management commands ](Admin.md#module-management-commands )
* [load ](Admin.md#load )
* [unload ](Admin.md#unload )
2020-01-23 07:47:05 +01:00
* [Listing modules ](Admin.md#listing-modules )
2020-01-12 19:30:51 +01:00
* [Plugin management commands ](Admin.md#plugin-management-commands )
* [plug ](Admin.md#plug )
* [unplug ](Admin.md#unplug )
* [replug ](Admin.md#replug )
* [pluglist ](Admin.md#pluglist )
2020-01-23 07:25:09 +01:00
* [Command metadata commands ](Admin.md#command-metadata-commands )
* [cmdset ](Admin.md#cmdset )
* [cmdunset ](Admin.md#cmdunset )
* [Command metadata list ](Admin.md#command-metadata-list )
2020-03-09 01:59:05 +01:00
* [Event queue management ](Admin.md#event-queue-management )
2020-03-09 00:26:18 +01:00
* [eventqueue ](Admin.md#eventqueue )
2020-02-15 08:06:24 +01:00
* [Process management commands ](Admin.md#process-management-commands )
* [ps ](Admin.md#ps )
* [kill ](Admin.md#kill )
2021-09-06 21:45:02 +02:00
* [Message history commands ](Admin.md#message-history-commands )
* [aka ](Admin.md#aka )
* [akalink ](Admin.md#akalink )
* [akaunlink ](Admin.md#akaunlink )
* [akadelete ](Admin.md#akadelete )
2020-01-12 19:30:51 +01:00
* [Miscellaneous commands ](Admin.md#miscellaneous-commands )
* [export ](Admin.md#export )
* [refresh ](Admin.md#refresh )
* [reload ](Admin.md#reload )
* [sl ](Admin.md#sl )
* [die ](Admin.md#die )
<!-- md - toc - end -->
<!-- md - toc - begin -->
* [Factoids ](Factoids.md#factoids )
* [About ](Factoids.md#about )
* [Special commands ](Factoids.md#special-commands )
* [/say ](Factoids.md#say )
* [/me ](Factoids.md#me )
* [/call ](Factoids.md#call )
* [/msg ](Factoids.md#msg )
* [/code ](Factoids.md#code )
2020-02-04 11:32:29 +01:00
* [Supported languages ](Factoids.md#supported-languages )
* [Special variables ](Factoids.md#special-variables )
* [testargs example ](Factoids.md#testargs-example )
* [Setting a usage message ](Factoids.md#setting-a-usage-message )
* [poll/vote example ](Factoids.md#pollvote-example )
* [SpongeBob Mock meme example ](Factoids.md#spongebob-mock-meme-example )
* [Using command-piping ](Factoids.md#using-command-piping )
* [Improving SpongeBob Mock meme ](Factoids.md#improving-spongebob-mock-meme )
* [Formatting and editing lengthy Code Factoids ](Factoids.md#formatting-and-editing-lengthy-code-factoids )
2020-01-12 19:30:51 +01:00
* [Special variables ](Factoids.md#special-variables-1 )
* [$args ](Factoids.md#args )
* [$arg[n]](Factoids.md#argn)
* [$arg[n:m]](Factoids.md#argnm)
* [$arglen ](Factoids.md#arglen )
* [$channel ](Factoids.md#channel )
* [$nick ](Factoids.md#nick )
* [$randomnick ](Factoids.md#randomnick )
* [$0 ](Factoids.md#0 )
* [List variables ](Factoids.md#list-variables )
* [Expansion modifiers ](Factoids.md#expansion-modifiers )
* [action_with_args ](Factoids.md#action_with_args )
* [add_nick ](Factoids.md#add_nick )
2020-01-23 04:29:44 +01:00
* [Channel namespaces ](Factoids.md#channel-namespaces )
2020-01-22 03:39:11 +01:00
* [Adding/removing factoids ](Factoids.md#addingremoving-factoids )
2020-01-12 19:30:51 +01:00
* [factadd ](Factoids.md#factadd )
* [factrem ](Factoids.md#factrem )
* [forget ](Factoids.md#forget )
* [factalias ](Factoids.md#factalias )
2020-01-22 03:39:11 +01:00
* [Displaying factoids ](Factoids.md#displaying-factoids )
* [fact ](Factoids.md#fact )
* [factshow ](Factoids.md#factshow )
* [Editing factoids ](Factoids.md#editing-factoids )
2020-01-12 19:30:51 +01:00
* [factchange ](Factoids.md#factchange )
2020-01-22 03:39:11 +01:00
* [factmove ](Factoids.md#factmove )
2020-01-12 19:30:51 +01:00
* [factundo ](Factoids.md#factundo )
* [factredo ](Factoids.md#factredo )
2020-02-06 20:22:47 +01:00
* [Factoid metadata ](Factoids.md#factoid-metadata )
2020-01-12 19:30:51 +01:00
* [factset ](Factoids.md#factset )
* [factunset ](Factoids.md#factunset )
2020-02-06 20:22:47 +01:00
* [Factoid metadata List ](Factoids.md#factoid-metadata-list )
2020-01-22 03:39:11 +01:00
* [Information about factoids ](Factoids.md#information-about-factoids )
2020-01-12 19:30:51 +01:00
* [factfind ](Factoids.md#factfind )
* [factinfo ](Factoids.md#factinfo )
* [factlog ](Factoids.md#factlog )
2020-01-22 03:39:11 +01:00
* [factset ](Factoids.md#factset-1 )
2020-01-12 19:30:51 +01:00
* [count ](Factoids.md#count )
* [histogram ](Factoids.md#histogram )
* [top20 ](Factoids.md#top20 )
<!-- md - toc - end -->
<!-- md - toc - begin -->
2020-01-13 07:25:26 +01:00
* [Registry ](Registry.md#registry )
* [About ](Registry.md#about )
* [Types of values ](Registry.md#types-of-values )
* [Creating array values ](Registry.md#creating-array-values )
* [Overriding Registry values per-channel ](Registry.md#overriding-registry-values-per-channel )
* [Overriding Registry values via command-line ](Registry.md#overriding-registry-values-via-command-line )
* [Registry commands ](Registry.md#registry-commands )
* [regset ](Registry.md#regset )
* [regunset ](Registry.md#regunset )
* [regchange ](Registry.md#regchange )
* [regshow ](Registry.md#regshow )
* [regfind ](Registry.md#regfind )
* [regsetmeta ](Registry.md#regsetmeta )
* [regunsetmeta ](Registry.md#regunsetmeta )
* [Editing Registry file ](Registry.md#editing-registry-file )
* [Metadata list ](Registry.md#metadata-list )
* [List of known Registry items ](Registry.md#list-of-known-registry-items )
* [Channel-specific Registry items ](Registry.md#channel-specific-registry-items )
<!-- md - toc - end -->
<!-- md - toc - begin -->
2020-01-12 19:30:51 +01:00
* [Modules ](Modules.md#modules )
* [About ](Modules.md#about )
* [Creating modules ](Modules.md#creating-modules )
* [Documentation for built-in modules ](Modules.md#documentation-for-built-in-modules )
* [cc ](Modules.md#cc )
2020-02-04 11:32:29 +01:00
* [Usage ](Modules.md#usage )
* [Supported Languages ](Modules.md#supported-languages )
* [Default Language ](Modules.md#default-language )
* [Disallowed system calls ](Modules.md#disallowed-system-calls )
* [Program termination with no output ](Modules.md#program-termination-with-no-output )
* [Abnormal program termination ](Modules.md#abnormal-program-termination )
* [C and C++ Functionality ](Modules.md#c-and-c-functionality )
* [Using the preprocessor ](Modules.md#using-the-preprocessor )
* [main() Function Unnecessary ](Modules.md#main-function-unnecessary )
* [Embedding Newlines ](Modules.md#embedding-newlines )
* [Printing in binary/base2 ](Modules.md#printing-in-binarybase2 )
* [Using the GDB debugger ](Modules.md#using-the-gdb-debugger )
* [Interactive Editing ](Modules.md#interactive-editing )
* [Some Examples ](Modules.md#some-examples )
2020-01-12 19:30:51 +01:00
* [english ](Modules.md#english )
* [expand ](Modules.md#expand )
* [prec ](Modules.md#prec )
* [paren ](Modules.md#paren )
* [faq ](Modules.md#faq )
* [cfact ](Modules.md#cfact )
* [cjeopardy ](Modules.md#cjeopardy )
2020-02-04 11:32:29 +01:00
* [hint ](Modules.md#hint )
* [what ](Modules.md#what )
* [w ](Modules.md#w )
* [filter ](Modules.md#filter )
* [score ](Modules.md#score )
* [rank ](Modules.md#rank )
* [reset ](Modules.md#reset )
* [qstats ](Modules.md#qstats )
* [qshow ](Modules.md#qshow )
2020-01-12 19:30:51 +01:00
* [c99std ](Modules.md#c99std )
* [c11std ](Modules.md#c11std )
* [man ](Modules.md#man )
* [google ](Modules.md#google )
* [define ](Modules.md#define )
* [dict ](Modules.md#dict )
* [foldoc ](Modules.md#foldoc )
* [vera ](Modules.md#vera )
* [udict ](Modules.md#udict )
* [wdict ](Modules.md#wdict )
* [acronym ](Modules.md#acronym )
* [math ](Modules.md#math )
* [calc ](Modules.md#calc )
* [qalc ](Modules.md#qalc )
* [compliment ](Modules.md#compliment )
* [insult ](Modules.md#insult )
* [excuse ](Modules.md#excuse )
* [horoscope ](Modules.md#horoscope )
* [quote ](Modules.md#quote )
<!-- md - toc - end -->
<!-- md - toc - begin -->
2020-01-13 07:25:26 +01:00
* [Anti-Abuse ](AntiAbuse.md#anti-abuse )
* [Flood control ](AntiAbuse.md#flood-control )
* [Message flood ](AntiAbuse.md#message-flood )
* [Join flood ](AntiAbuse.md#join-flood )
* [Enter key abuse ](AntiAbuse.md#enter-key-abuse )
* [Nick flood ](AntiAbuse.md#nick-flood )
* [Anti-away/Nick-control ](AntiAbuse.md#anti-awaynick-control )
* [Anti-auto-rejoin control ](AntiAbuse.md#anti-auto-rejoin-control )
* [Opping/Deopping ](AntiAbuse.md#oppingdeopping )
2020-01-12 19:30:51 +01:00
<!-- md - toc - end -->
<!-- md - toc - begin -->
* [Virtual Machine ](VirtualMachine.md#virtual-machine )
* [About ](VirtualMachine.md#about )
* [Creating a new virtual machine ](VirtualMachine.md#creating-a-new-virtual-machine )
* [Configuring the virtual machine ](VirtualMachine.md#configuring-the-virtual-machine )
* [Installing Linux in the virtual machine ](VirtualMachine.md#installing-linux-in-the-virtual-machine )
* [Configuring Linux for PBot Communication ](VirtualMachine.md#configuring-linux-for-pbot-communication )
* [Hardening the PBot virtual machine ](VirtualMachine.md#hardening-the-pbot-virtual-machine )
<!-- md - toc - end -->
2020-01-28 08:44:21 +01:00
<!-- md - toc - begin -->
* [Frequently Asked Questions ](FAQ.md#frequently-asked-questions )
2021-09-06 21:45:02 +02:00
* [When I type `!version` it say "new version available"? ](FAQ.md#when-i-type-version-it-say-new-version-available )
* [How do I change the bot trigger? ](FAQ.md#how-do-i-change-the-bot-trigger )
* [How do I whitelist a user? ](FAQ.md#how-do-i-whitelist-a-user )
* [How do I change how the bot outputs multi-line messages? ](FAQ.md#how-do-i-change-how-the-bot-outputs-multi-line-messages )
* [I made a command. It's supposed to output formatting with spaces and tabs? ](FAQ.md#i-made-a-command-its-supposed-to-output-formatting-with-spaces-and-tabs )
* [How do I change my password? ](FAQ.md#how-do-i-change-my-password )
* [How do I make PBot remember my `date` timezone? ](FAQ.md#how-do-i-make-pbot-remember-my-date-timezone )
* [How do I make PBot remember my `weather` location? ](FAQ.md#how-do-i-make-pbot-remember-my-weather-location )
2020-01-28 08:44:21 +01:00
<!-- md - toc - end -->