2012-03-10 20:40:02 +01:00
|
|
|
# Depressionbot IRC Bot
|
|
|
|
|
|
|
|
## Introduction
|
|
|
|
|
|
|
|
Depressionbot is an IRC bot which aims to be the fanciest IRC bot around - On
|
2012-12-18 10:41:05 +01:00
|
|
|
the general standard of software fanciness, dbot is rated as being '81% the same
|
2012-03-10 20:40:02 +01:00
|
|
|
as bathing in fine, fine grape juice.'
|
|
|
|
|
2012-03-10 21:15:13 +01:00
|
|
|
Please note that this documentation is not complete and is a work in progress,
|
|
|
|
given I started it rather a long time after I began development of the project.
|
|
|
|
Please don't judge me too harshly for this as I am, in fact, mildly allergic to
|
|
|
|
writing documentation.
|
2012-03-10 21:14:47 +01:00
|
|
|
|
2012-03-10 20:40:02 +01:00
|
|
|
Requirements:
|
2012-03-10 21:10:49 +01:00
|
|
|
|
2012-03-10 21:04:03 +01:00
|
|
|
- Node JS
|
2012-07-17 15:13:30 +02:00
|
|
|
- [JSBot](http://github.com/reality/JSBot "JSBot"), a Javascript library which
|
|
|
|
handles the IRC protocol.
|
2012-03-10 21:04:03 +01:00
|
|
|
- Various modules have their own requirements also.
|
2012-03-10 20:40:02 +01:00
|
|
|
|
2012-12-30 00:05:16 +01:00
|
|
|
### External Modules
|
2012-07-17 15:13:30 +02:00
|
|
|
|
2012-12-30 00:05:16 +01:00
|
|
|
JSBot and externally developed modules can be imported by running the following
|
|
|
|
commands in the cloned repository:
|
2012-07-17 15:13:30 +02:00
|
|
|
|
|
|
|
git submodule init
|
|
|
|
git submodule update
|
|
|
|
|
2012-03-10 20:40:02 +01:00
|
|
|
## Modules:
|
|
|
|
|
|
|
|
### Admin
|
|
|
|
|
|
|
|
Various administration functionality such as banning users, hot-reloading the
|
|
|
|
code and ordering him to talk. Note that commands added here are handled with
|
|
|
|
their own listener, rather than being part of the command logic which is handled
|
2012-03-10 20:45:08 +01:00
|
|
|
by the Command module. Functionality in this module can be slightly unsafe as
|
|
|
|
not much error checking on the input is performed.
|
2012-03-10 20:40:02 +01:00
|
|
|
|
2012-03-10 21:04:03 +01:00
|
|
|
TODO: Add summaries for each command in this module.
|
|
|
|
|
|
|
|
### Spelling
|
|
|
|
|
|
|
|
Will attempt to correct a users' spelling by using the levenshtein distance
|
|
|
|
algorithm. One corrects the spelling of their previous message by simply posting
|
|
|
|
a message with their correction and an asterisk:
|
|
|
|
|
|
|
|
> user: I am a tutrle.
|
|
|
|
> user: *turtle
|
|
|
|
user meant: I am a turtle.
|
|
|
|
|
|
|
|
The regular expression for this module also accepts two asterisks at the
|
2012-03-10 21:10:49 +01:00
|
|
|
beginning of the correction, or at the end; it also accepts several words as the
|
|
|
|
correction and deals with these fairly intelligently. Users may also attempt
|
2012-03-10 21:04:03 +01:00
|
|
|
to correct another users like so:
|
|
|
|
|
|
|
|
> userone: I am a tutrle.
|
|
|
|
> usertwo: userone: *turtle
|
|
|
|
> usertwo thinks userone meant: I am a turtle.
|
|
|
|
|
|
|
|
### JS
|
2012-03-10 20:40:02 +01:00
|
|
|
|
|
|
|
This module provides two commands which allow the execution of Javascript code.
|
|
|
|
For regular users, there is the *~js* command, which is completely sandboxed,
|
|
|
|
but can still be used for calculation and the like.
|
|
|
|
|
2012-03-10 20:41:19 +01:00
|
|
|
> ~js Array(16).join('wat'-1) + " Batman!";
|
2012-03-10 20:40:02 +01:00
|
|
|
'NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN Batman!'
|
|
|
|
|
|
|
|
This feature is fairly safe as the user doesn't have access to anything
|
|
|
|
dangerous, and is safe from infinite loops or locking DBot up because the code
|
|
|
|
which is run is killed if it does not finish within a short amount of time.
|
|
|
|
|
|
|
|
For administrators, the incredibly useful *~ajs* command is also available. The
|
|
|
|
input for this command is simply 'eval'-ed and therefore has full access to
|
2012-03-10 20:45:08 +01:00
|
|
|
DBot's memory. Of course, this is incredibly unsafe, but I find it rather fun;
|
|
|
|
remember to only give extremely trusted friends administrator access to DBot, as
|
|
|
|
there's nothing to stop them wiping the database or something similar - if
|
|
|
|
you're worried about that kind of thing, do not load this module.
|
|
|
|
|
|
|
|
However, it's useful for many things, such as administrative activity for
|
|
|
|
which there isn't a command in the admin module. For example, you could hot-add
|
|
|
|
a new administrator like this:
|
2012-03-10 20:40:02 +01:00
|
|
|
|
|
|
|
> ~ajs dbot.admin.push('batman');
|
|
|
|
2
|
|
|
|
|
|
|
|
You can also use this for debugging, or even adding new commands while DBot is
|
|
|
|
running.
|