Go to file
Neale Pickett 962537e98f add example bot 2012-05-14 14:45:08 -05:00
modules Easier setup 2012-05-14 14:37:28 -05:00
newmont add example bot 2012-05-14 14:45:08 -05:00
.gitignore Fix a few bugs 2011-01-07 15:38:20 -07:00
COPYING Import OCS, add COPYING file 2009-03-02 18:49:21 -07:00
Makefile Converter from IRC escape codes to ANSI ones 2012-01-06 23:19:49 -07:00
README Easier setup 2012-05-14 14:37:28 -05:00
connect-handler Easier setup 2012-05-14 14:37:28 -05:00
dispatch.c size_t != int 2012-05-02 11:44:50 -06:00
dump.h C version 2011-01-06 21:08:21 -07:00
firebot Easier setup 2012-05-14 14:37:28 -05:00
irc-esc.c make main return 2012-05-02 11:45:36 -06:00
irc-filter.c fix forum for privmsg 2012-01-06 17:14:45 -06:00

README

firebot
=======

This is a suite of simple programs which allow you to write an IRC bot.
It is based on the Unix principle that one program should do one thing,
and makes extensive use of pipes, child processes, and passing of file
descriptors.

Unless you are a seasoned Unix programmer or are willing to become one,
this is not the bot you're looking for.



Getting Started Quickly
=======================

The `newmont` directory contains a very simple example, which you can
extend while it's running.  It will connect to an IRC network, join
the channel `#dumont`, and respond to any channel massage containing
the substring "strawberry".

You should probably edit newmont/nickname and newmont/server before
trying this out.  Set it to something hopefully unique on the network
you intend to join.

Start it like so:

    ./firebot newmont



What Everything Does
====================

The core fuctionality exists as two C programs and a couple scripts:


firebot
-------

Reads in nick and realname, sets up a fifo, connects to the server
(or runs `$botdir/connect`), and hands off to `connect-handler`.


connect-handler
---------------

Sends the `NICK` and `USER` commands to the server (or runs
`$botdir/login`), then hands off to `dispatch irc-filter
$botdir/handler`.


dispatch
--------

Reads lines from stdin (or fd 6).  Each line causes a fork and exec of a
specified program; the line is sent as the last argument.  Any output
from children is passed through to stdout (or fd 7), optionally rate
limited.  A fifo can optionally be specified on the command line;
anything written to it is treated identically to child output.


irc-filter
----------

Parses its last argument as a line from IRC.  Determines prefix,
command, sender, forum (channel or user), and text; then invokes a
specified program with these as arguments.  Also responds to server
pings as a convenience.



Author
======

Neale Pickett <neale@woozle.org>