3
0
mirror of https://github.com/pragma-/pbot.git synced 2024-11-19 18:39:35 +01:00
pbot/pbot.pl
Pragmatic Software d955bfa06c Add centralized configuration registry module
Allows changing of bot configuration values without needing to restart
bot instance or needing to edit pbot.pl script.

Registry will initially be populated with default values from pbot.pl,
but if a registry file exists then the registry values will take
precedence over the pbot.pl values. For instance, if you regset the
bot trigger to '%' then the trigger will be '%' even if pbot.pl has '!'
or something else explicitly set.

Some registry items can have trigger hooks associated with them.  For
instance, the irc->botnick registry entry has a change_botnick_trigger
associated with it which changes the IRC nick on the server when a new
value is set via regset/regadd.

Tons of other fixes and improvements throughout.
2014-05-17 20:08:19 +00:00

123 lines
4.3 KiB
Perl
Executable File

#!perl
#
# File: pbot.pl
# Author: pragma_
#
# Purpose: IRC Bot (3rd generation)
########################
my $VERSION = "1.0.0";
use strict;
use warnings;
use PBot::PBot;
# Be sure to set $bothome to the location PBot was extracted (default assumes ~/pbot).
# This location must contain the PBot directory, among others configured below.
my $bothome = "$ENV{HOME}/pbot";
my %config = (
# -----------------------------------------------------
# Be sure to set your IRC information to a registered NickServ account
# if you want channel auto-join to work.
# -----------------------------------------------------
# IRC server address to connect to
ircserver => 'irc.freenode.net',
# IRC port
port => '6667',
# Use SSL? 0 = disabled, 1 = enabled
# Note that you may need to use a specific port for SSL; e.g., freenode uses 6697 or 7000 for SSL
# Uncomment SSL_ca_path or SSL_ca_file below to enable SSL verification (will still work without
# verification, but will be susceptible to man-in-the-middle attacks)
SSL => 0,
# SSL CA certificates path; e.g., linux: /etc/ssl/certs
# SSL_ca_path => '/etc/ssl/certs',
# SSL CA file, if SSL_ca_path will not do; e.g., OpenBSD: /etc/ssl/cert.pem
# SSL_ca_file => '/etc/ssl/cert.pem',
# IRC nick (what people see when you talk in channels)
# (must be a nick registered with a NickServ account for channel auto-join to work)
botnick => 'pbot3',
# IRC username (what appears in front of your hostname in /whois)
username => 'pbot3',
# IRC realname (extra /whois information)
ircname => 'http://www.iso-9899.info/wiki/Candide',
# Password to send to NickServ for identification
# (channels will not be auto-joined until identified)
identify_password => '*',
# The bot is triggered by using its name, or the following trigger SINGLE character
trigger => '.',
# -----------------------------------------------------
# The bot can export the latest factoids and quotegrabs to an HTML
# document. If you run a webserver or something similiar, you may
# wish to set the following items ending with 'path' to point to
# a suitable location for the webserver, and to set the items
# ending with 'site' to the public-facing URL where the files
# may be viewed in a browser.
# -----------------------------------------------------
export_factoids_path => "$bothome/factoids.html", # change to a path in your webroot
export_factoids_site => 'http://your.website.com/factoids.html',
export_quotegrabs_path => "$bothome/quotegrabs.html", # change to a path in your webroot
export_quotegrabs_site => 'http://your.website.com/quotegrabs.html',
# -----------------------------------------------------
# You shouldn't need to change anything below this line.
# -----------------------------------------------------
# Maximum messages to remember per nick/hostmask in message history
MAX_MESSAGES => 256,
# Path to data directory
data_dir => "$bothome/data",
# Path to config directory
config_dir => "$bothome/config",
# Path to directory containing external script-like modules
module_dir => "$bothome/modules",
# Location of file where bot log information will be output (in addition to stdout)
# (if you use pbot.sh and you change log_file, be sure to also change the log path in pbot.sh)
log_file => "$bothome/log/log",
);
# Location of file containing configuration registry
$config{registry_file} = "$config{config_dir}/registry";
# Location of file containing bot admin information
$config{admins_file} = "$config{config_dir}/admins";
# Location of file containing channel information
$config{channels_file} = "$config{config_dir}/channels";
# Location of file containing ignorelist entries
$config{ignorelist_file} = "$config{config_dir}/ignorelist";
# Location of file containing factoids and modules
$config{factoids_file} = "$config{data_dir}/factoids";
# Location of file containing channel user quotes
$config{quotegrabs_file} = "$config{data_dir}/quotegrabs.sqlite3";
# Location of file containing message history
$config{message_history_file} = "$config{data_dir}/message_history.sqlite3";
# Create and initialize bot object
my $pbot = PBot::PBot->new(%config);
# Start the bot main loop; doesn't return
$pbot->start();