mirror of
https://github.com/pragma-/pbot.git
synced 2024-11-19 18:39:35 +01:00
d955bfa06c
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.
123 lines
4.3 KiB
Perl
Executable File
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();
|