2015-05-24 22:26:43 +02:00
|
|
|
#!/usr/bin/env perl
|
2010-03-17 07:36:54 +01:00
|
|
|
#
|
|
|
|
# File: pbot.pl
|
|
|
|
# Author: pragma_
|
|
|
|
#
|
|
|
|
# Purpose: IRC Bot (3rd generation)
|
|
|
|
########################
|
|
|
|
|
2017-03-05 22:33:31 +01:00
|
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
|
2010-03-22 08:33:44 +01:00
|
|
|
my $VERSION = "1.0.0";
|
2010-03-17 07:36:54 +01:00
|
|
|
|
|
|
|
use strict;
|
|
|
|
use warnings;
|
|
|
|
|
|
|
|
use PBot::PBot;
|
|
|
|
|
2010-05-25 05:03:23 +02:00
|
|
|
# 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";
|
2010-03-22 08:33:44 +01:00
|
|
|
|
2010-05-25 05:03:23 +02:00
|
|
|
my %config = (
|
2014-02-05 02:10:56 +01:00
|
|
|
# -----------------------------------------------------
|
|
|
|
# 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 => '*',
|
|
|
|
|
2015-07-13 05:52:09 +02:00
|
|
|
# The bot is triggered by using its name, or the following trigger
|
|
|
|
trigger => '[!]',
|
2014-02-05 02:10:56 +01:00
|
|
|
|
|
|
|
# -----------------------------------------------------
|
|
|
|
# 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.
|
|
|
|
# -----------------------------------------------------
|
|
|
|
|
2014-05-16 06:11:25 +02:00
|
|
|
export_factoids_path => "$bothome/factoids.html", # change to a path in your webroot
|
|
|
|
export_factoids_site => 'http://your.website.com/factoids.html',
|
2014-02-05 02:10:56 +01:00
|
|
|
|
2014-05-16 06:11:25 +02:00
|
|
|
export_quotegrabs_path => "$bothome/quotegrabs.html", # change to a path in your webroot
|
|
|
|
export_quotegrabs_site => 'http://your.website.com/quotegrabs.html',
|
2014-02-05 02:10:56 +01:00
|
|
|
|
|
|
|
# -----------------------------------------------------
|
|
|
|
# You shouldn't need to change anything below this line.
|
|
|
|
# -----------------------------------------------------
|
|
|
|
|
|
|
|
# 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",
|
|
|
|
);
|
|
|
|
|
2014-05-17 22:08:19 +02:00
|
|
|
# Location of file containing configuration registry
|
|
|
|
$config{registry_file} = "$config{config_dir}/registry";
|
|
|
|
|
2014-02-05 02:10:56 +01:00
|
|
|
# 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";
|
|
|
|
|
2015-03-17 05:08:25 +01:00
|
|
|
# Location of file containing blacklist entries
|
|
|
|
$config{blacklist_file} = "$config{config_dir}/blacklist";
|
2015-03-15 21:52:30 +01:00
|
|
|
|
2014-02-05 02:10:56 +01:00
|
|
|
# Location of file containing factoids and modules
|
|
|
|
$config{factoids_file} = "$config{data_dir}/factoids";
|
|
|
|
|
|
|
|
# Location of file containing channel user quotes
|
2014-05-06 07:15:27 +02:00
|
|
|
$config{quotegrabs_file} = "$config{data_dir}/quotegrabs.sqlite3";
|
2014-02-05 02:10:56 +01:00
|
|
|
|
|
|
|
# Location of file containing message history
|
2014-05-13 12:15:52 +02:00
|
|
|
$config{message_history_file} = "$config{data_dir}/message_history.sqlite3";
|
2010-03-17 07:36:54 +01:00
|
|
|
|
2010-05-25 05:03:23 +02:00
|
|
|
# Create and initialize bot object
|
2010-03-17 07:36:54 +01:00
|
|
|
my $pbot = PBot::PBot->new(%config);
|
|
|
|
|
2010-05-25 05:03:23 +02:00
|
|
|
# Start the bot main loop; doesn't return
|
2010-03-22 08:33:44 +01:00
|
|
|
$pbot->start();
|