An irc bot implemented in php, roughly a clone of irccat with some extra features I liked from other bots thrown in.
- I was bored
- I kinda wanted to learn stuff
- I wanted a reasonable project to try out jenkins features and plugins for php code analysis
- I plan to write this project is several languages, php is an easy prototype (for me)
- To annoy my cow-workers
Note I run my instance of phpIrcBot under the name overlord.
Anywhere you see overlord substitute the name of the ircbot you have configured.
You can currently chose to install via Pear or download/checkout the code.
pear install channel://pear.b3cft.com/IRCBot
Download or clone the project from phpIrcBot Downloads This code currently (Dec 2011) relies on two pear projects:
pear install channel://pear.gradwell.com/autoloader
pear install channel://pear.b3cft.com/CoreUtils
From the downloaded/cloned version you can copy the example config in src/data/ircbot.example.ini
From the pear installed version you can copy the example config located in pear's data_dir, if you don't know where this is you can use:
pear config-get data_dir
the pear packaged version will be inside an IRCBot directory.
Copy the ircbot.example.ini to ircbot.ini in the same location and open in the text editor of your choice.
From a downloaded/cloned source src/bin/ircbot.php should suffice.
The build system I'm using is ant and there are several php based build tools used:
pear config-set auto_discover 1
pear install PHP_CodeSniffer
pear install PhpDocumentor
pear install channel://pear.phpmd.org/PHP_PMD
pear install channel://pear.pdepend.org/PHP_Depend
pear install channel://pear.phpunit.de/phpcpd
pear install channel://pear.phpunit.de/phploc
pear install channel://pear.phpunit.de/PHP_CodeBrowser
pear install channel://pear.phpunit.de/PHPUnit
You may not want all of those, but phpunit I would heartily recommend and if you are going to commit back, please use the PHP_CodeSniffer to validate to the coding standards.
Running ant will execute a complete unit test and coverage report and dump the output in the build directory.
If you want to see the project coverage, docs or other metrics they should be available here
overlord has some basic commands that are hopefully self explanatory.
For most actions you can direct message overlord or direct a message to him in a channel.
e.g.
/msg overlord help
or in channel overlord: help for both he will return a link to this page.
Some commands he will only direct message back, e.g. asking for a list of commands:
overlord: commands
/msg overlord commands
should result in a private message consisting something like
?ampm, ?args, ?hits
addop, delop, deop, devoice, join
kick, leave, op, part, part
ping, showops, stats, uptime, version
voice, welcome, welcomeTopic
Commands that are not prefixed with a ? are built in commands to overlord or provided by a plugin.
overlord: join forge
overlord: leave forge
/msg overlord join forge
/msg overlord leave forge
part can also be used and is a synonym for leave.
Channels can be referenced with or without the #prefix.
Should overlord be in a channel in which he is an operator, you can ask overlord to op, deop, voice and devoice you. in a channel
overlord: op
overlord: deop
overlord: voice
overlord: devoice
overlord will grant or remove op and voice privileges. However, be warned, he is fickle.
overlord: op b3cft
overlord: deop b3cft
etc...
overlord will grant or remove ops and voice from another user (b3cft)
Commands prefixed with a ? are actually scripts located on the filesystem. N.B. you do not need to direct the message to overlord for these commands, but he will understand if you do.
Overlord will execute them passing in parameters based on the requests, roughly as such:
{nick} {channel} {sender} {command} {args...}
so in #frameworks and asking overlord ?mycommand one two three will result in
mycommand overlord \#frameworks b3cft mycommand one two three
being executed on the server.
Send the same message to overlord in a direct message will result in
mycommand overlord null b3cft mycommand one two three
Command can be written in any language as long they are executable in a shell. Any output (currently) is echoed back to the channel or user that orginated the request.
###Example commands
?eaglesreports who the current eagles are (also the same command updates!)?ampmresponds with morning or afternoon?dodreports the confluence location of Frameworks Definition of Done?hitslooks the term up on google and reports the number of hits
I may take recommendations for new features.
There are several plugins to extend overlord I have currently written.
operhandles the oping and deop in channels and who is allowed to execute.subberwill rewrite typos in channels based on people postings/search/replace/or^search^replacereplacements. (this is quite good fun!)welcomerspots newcomers to a channel and send them the topic message (customisable with thewelcometopiccommand) alsooverlord welcome bobwill welcome bob to the channel.