Modular IRC-bot written in C++
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
config
core
modules
src
.gitignore
LICENSE
Makefile
README.md
horo.jpg
start.sh
test_module.py

README.md

Horo

Horo is a modular IRC bot written in C++.
It is extremely fast, lightweight (takes only 2MiB of RAM) and extendable

Requirements

  • libpcre-dev for regexp handling
  • python-dev (at least 2.7) for python modules

Building

Script start.sh builds and runs Horo. Don't forget to declare host and port. Also make your changes in config file.

###Running### Horo makes many processes with fork(). You can watch for processes with ps cx command in your terminal. Typical output of this command with explanation:

1237 pts/9    S+     0:00 horo             | main process
1246 pts/9    S+     0:00 horo:c/lorng.py  | process that calls core-module lorng.py with a time interval
1250 pts/9    S+     0:00 horo:m/fib.py    | process that waits for a response from standart module fib.py
1253 pts/9    S+     0:00 horo:e/twit.py   | process that waits for a response from module twit.py called by an event
1255 pts/9    S+     0:00 horo: url title  | process that gets title from an URL

Modules

Modules are all written in Python. You can see a typical module structure in file modules/test.py
Modules repository

Put all modules, except modules from core directory, to the modules directory.
Core-modules are called every x seconds. For each of core-module you need an entry in mod.conf in a format:

/path/to/module.py time_in_seconds.

Put modules from repo's core directory into the horo's core directory and change variables CHANNEL in modules source code.
You can retrieve list of loaded modules by %lsmod command on any channel.
Documentation for any module can be retrieved by: horo: <module_name> --help/-h

Why Horo?