(perl) The GumbyNET bot code
Fetching latest commit…
Cannot retrieve the latest commit at this time
GumbyNET: ======== GumbyNET is an experimental POE::Component::IRC framework for testing PCI plugins. The GumbyNET bot provides a controlling session which deals with starting an EasyDBI session, getting the stored configuration from database and then starting the initial connection to the IRC network. Everything else is then dealt with by the PCI plugins. Requirements: ============ perl :) POE 1.005 POE::Component::IRC 6.06 Date::Format POE::Component::EasyDBI LWP CGI CGI::Simple XML::RSS Time::HiRes; Acme::POE::Acronym::Generator POE::Component::Server::SimpleHTTP POE::Component::RSSAggregator ( for aggrebot.pl ) MySQL database, for storage. Installation: ============ The bot requires a database for storage. Tested with MySQL 3.23.55, but it hopefully uses fairly standard SQL and PoCo-EasyDBI, so should work with other database backends. Your milage will vary :) A database dump file is provided, 'database.sql' Create a database and a user with full rights to that database. Import the table structures. $ mysql -u <whoever> -p <database> < ./database.sql Connect to the database, and create an entry in BotConfig table for your bot. $ mysql -u <whoever> -p <database> mysql> insert into BotConfig (NickName,IRCName,IRCServer,IRCPort,IRCUser) values ('LameBOT','LameBOT[tm]','irc.server.org',6667,'lamebot'); mysql> insert into BotChannels values ( 'LameBOT', '#Channel' ); The bot requires a configuration file, create a file called GumbyNET.cfg, values in this file are specified as 'entry = whatever' DSN = <dsnpath> USER = the user to connect to the dsn as PASS = the password to use to connect to the dsn OWNER = the full identity of the IRC user who will own this pesky bot. Wildcards '*' are supported. eq. Jimmy!*@*.somenetwork.com BOUNCER = the bindport for the Bouncer plugin CONSOLE = the bindport for the console plugin Start the bot: ./GumbyNET.pl --nick=<nickname> Plugin Usage: ============ All plugins are loaded via the PlugMan plugin. The specified bot owner can issue the following commands in any channel ( by addressing the bot ) or via privmsg to the bot. plugin_add <alias> <module> <spaceseparatedlistofparameters> - loads the plugin plugin_del <alias> - deletes the plugin plugin_reload <alias> - reloads the plugin plugin_list - List all loaded plugins including unmanaged plugins plugin_loaded - Only list managed plugins Bouncer - Provides IRC bouncer type functionality. Listens on the specified bindport and emulates an IRC server. When IRC clients connect, the plugin registers them and automatically issues JOIN messages for all the currently active channels. Caveat: all IRC clients must register with the same nickname as the hosting IRC bot. Has one public command 'bnc' which lists the currently connected sessions. eq. LameBOT: bnc Console - This plugin provides a console ( duh! ) to the bot session. Behold the glory of debug information! Issue commands! Caveat: commands must follow the syntax of PoCo-IRC events, ie. 'CTCP #Channel ACTION slaps an operator' Typing QUIT is not a good idea, unless you really mean it. Connector - This plugin deals with gluing the bot to the specified IRC network. Once the bot has been initially joined to the IRC network, this handles all disconnects and makes sure that bot stays on that network. Public - Provides a number of commands for people to pester the bot with. The bot must be directly addressed by name for them to work: version - displays the current version of the running bot. uptime - some connection information stats - some vague information time - the current time where the bot is installed clock - see what time it is around the world ( uses an RSS source ). slashdot - Get the latest Slashdot headlines. Trust - Manages mask based +o, +h and +v of people. Uses Bender's trust system. DNS - Query dns records. CTCP - Deals with CTCP requests such as VERSION, etc. Copyright: ========= (c)2005 Kidney BinGOs aka Chris Williams This program may be used, modified, and distributed under the same terms as Perl itself. Please see the license that came with your Perl distribution for details.