An open API service indexing awesome lists of open source software.

https://github.com/davazp/nilbot

An IRC Bot written in Common Lisp.
https://github.com/davazp/nilbot

bot common-lisp irc

Last synced: 6 months ago
JSON representation

An IRC Bot written in Common Lisp.

Awesome Lists containing this project

README

          

#+startup showall

* nilbot

nilbot is an IRC Bot written in Common Lisp.

*** Getting started
Nilbot has as requirements [[http://common-lisp.net/project/cl-irc/][cl-irc]] and [[http://common-lisp.net/project/elephant/][elephant]]. Both are
avalaible via [[http://www.quicklisp.org/][quicklisp]] and it is the recommended way to install
it.

Get the nilbot source with
: git clone https://davazp@github.com/davazp/nilbot.git

The first time you run nilbot you will need edit config.lisp to
set settings as the IRC server, the default prefix character, and
so. Then, start your lisp implementation, load the nilbot system
and initialize the database with:

#+BEGIN_SRC common-lisp
(ql:quickload (list "sqlite" "cl-irc" "elephant"))
(asdf:load-system :nilbot)
#+END_SRC

You will need to introduce yourself to nilbot, so you can type
#+BEGIN_SRC common-lisp
(add-user "YOUR-NICK" "admin")
(add-channel "#YOUR-CHANNEL")
#+END_SRC
in the nilbot package to add the first user and channel
respectively.

Finally, you can start nilbot with
: (nilbot:start)

Make sure you're registered in the irc server. otherwise, it won't
recognize you

*** Introduction

Nilbot is a command driven bot. It accepts commands from both
private messages and channel messages. Commands may be prefixed in
several ways as:
: ,command
and
: nilbot: command

You *must* prefix your command if you ask it in an IRC channel
indeed of privately. You can configure the prefix character in the
config.lisp file.

An important command is =help=. It will show you help about a
command. If the argument is ommited, then it will list the
commands avalaible for you.

***** The tracker
The nilbot main entity is the ticket. You can create a new
ticket with
: ,add
Also you can list the open tickets with
: ,list
The tickets are contextual. Namely, nilbot records where you
create it. So =list= in a channel =#a= will list the open
tickets for the channel =#a=.
You can assign to you a ticket with
: ,take N
or mark the ticket #N as finished with
: ,done N
To limit the =list= command to tickets in a given status, type
: ,list
Finally, you can search tickets with
: ,search .

***** Permissions
Nilbot provides different categories of users: /undesirable/,
/nobody/, /user/ and /admin/. By default, a user is a 'nobody'.
The granted permissions to each category is inclusive. In other
words, each category adds priviledges to the previous ones. The
lowest category /undesirable/ is special. Nilbot will ignore
every request of /undesirable/ users. Register a user as
/undesirable/ to ban it.