

This is DreamBot 0.0.1, An Experimental Perl Bot,
(C) 1999 Spectre of Flare (aka Osman Keskin)

DreamBot is released under GPL. See the "COPYING" file for more info.
Use it at your own risk. I'm not resposible for any damage caused by it.
(that was a piece of disclaimer, you should have got used to it right?)



Contents:

  [0] What is?
  [1] Features
  [2] Setting it up!
  [3] Commands
  [4] Some other features
  [5] Notes
  [6] To Do
  [7] Contacting


                               -------------------
 

  [0] What is?
 
  DreamBot is an IRC Bot, just like the well-known EggDrop. It's written in
perl. Inspired from InfoBot. I was writing it for personal use, then decided
to release it. Thanks to my friend Disq (aka Kemal Hadimli), who encouraged
me to work on it :)


                               -------------------


  [1] Features

   - Everything is totally dynamic, no need to deal with dirty text files
     to add an user and such.
   - It can learn from channel, and you can ask questions.
   - Seen support
   - Leaving notes/memos to the people on the bot's userlist.
   - Freshmeat/Slashdot backend support.
   - Topic locks
   - Top talkers
   - EASY configuration!


                               -------------------


  [2] Setting it up!
  
  There're some files in the package. The one named 'config' contains the
main config of the bot. It looks like this:

  @servers = ('irc.stealth.net:6667','irc.webbernet.net:6667');
  $ident = "dreambot";
  $username = "follow the white rabbit";
  @nicks = ('SunfLare','PornfLare','FunsLare','MarsfLare','MoonfLare');
  @channels = ('#flare','#scene.tr');

  As you can see, the config is pretty easy to do. You can just edit the
server list, ident and username of the bot, nick list that bot can use,
and channels that bot auto joins. This is exactly what it is.

  Then, edit the 'users' file, and add yourself manually with an 'm' flag.
The syntax of 'users' file is same as .adduser command's syntax. (see
"Commands" section). Otherwise you won't be able to use any command without
master status.

  And, in order to receive freshmeat and slashdot headlines, or cron the bot,
take a look at the file 'cron' included in the package.

  - Parameters:

  -c --config <config>        use the <config> file for configuration
  -d --datadir <datadir>      sets the datadir, default is set in config file
  -h --help                   help


                               -------------------


  [3] Commands
  
  There're many commands that can be used from irc. These commands are for
modifying userbase, hostnames, channels, or anything you can imagine. Commands
start with a dot '.' and the command follows. You can write commands on the
channels the bot is on, or you can just /msg the bot. Commands are only
available for users that has [m]aster status. (the "m" flag)

  Those commands are:

.REHASH -or- .LOAD
  Reloads all the stuff that matters. (userlist, facts, and notes)

.RAW <text> -or- .ORDER <text>
  Sends raw <text> to server. For any condition, to help masters.

.CTCP <user> <text>
  Like doing /ctcp <user> <text>, that does the same. You can make the bot
ctcp version someone by doing .ctcp someone version.

.CYCLE <channel>
  Cycling is not automated yet, but you can make the bot cycle a channel
(rejoining to regain ops) by doing .cycle <channel>

.ADDUSER <user>:<hostmasks>:<flags>:<channels>
  Adds OR updates an user record. <user> is the name of the record. Hostmasks
are specified in simplified regexps, and seperated by a space, just like in
<channels> field. You can only use the .* syntax to avoid regexp errors.

  - Examples:

  .adduser spectre:.*spectre@.*.mylovelyisp.com:mo:#flare #scene.tr
  .adduser disq:.*disqk@.*.ticaretnet.com .*disqk@195.174.236..*:mo:*

  - Hostnames and Regexps:
  
  Regexps are easy. If you're familiar with other bots, you probably
encountered the usual hostmasks, like: *spectre@*.mylovelyisp.com. In regexps,
You should just change the "*" to ".*" to get it working. In this case, the
hostmask *spectre@*.mylovelyisp.com will be .*spectre@.*.mylovelyisp.com.

  - Flags:

  There're currently 4 flags. Those are:

    m -> Master status
    o -> Auto op
    v -> Auto voice
    b -> Auto ban

  That's it :)

  - Channels:
  
  Channels that user have access on. Seperated by a space. You can just write
"*" to give access on every channel.

.REMUSER <user>
  Deletes the user record <username>

.SHOWUSER <user>
  Shows the user record, (hostnames, flags, and channel access list).

.USERLIST
  Lists all users.

.SAVE
  Saves all the stuff that matters. Userbase, facts, notes (memos), topiclock
status, seen db and top talkers.

.LOAD[USERS|FACTS|NOTES] -and- .SAVE[USERS|FACTS|NOTES]
  Loads/saves user database, facts, and notes. :) (pretty complex eh?)

.TOPICLOCK <on/off> [<channel>]
  Enables or disables the topiclock on current channel. When set on, if someone
tries to change the topic, bot sets it back. Specify <channel> when you /msg
the bot.

.NICK <nick>
  Changes bot's nick to <nick>.

.JOIN <channel>
  Bot joins <channel>.

.PART <channel>
  Bot leaves <channel>.
  
.OP <person> [<channel>]
  Bot ops <person>. Specify <channel> when you /msg the bot.

.D[E]OP <person> [<channel>]
  Bot deops <person>. Specify <channel> when you /msg the bot.

.FLAG[S] <user> [+]<flags>
  Sets or adds flags for user <user>.
 
  - Examples:
  
  .flags disq +m		Adds master status to user disq
  .flags spectre mo		Sets flags m and o for user spectre

.ADDHOST <user> <host>
  Adds a new hostmask to user <user>. The hostmasks are specified in regexps.
Go to command .ADDUSER for more info.

.REMHOST <user> <host>
  Removes the hostmask <host> from <user>.

.ADDCHANUSER <user> <chans>
  Gives user <user> access on channels <chans>. You can't add "*" with this
option.

.DIE [reason]
  Kills the bot with a quit reason [reason] if specified.

.RESTART [reason]
  Restarts the bot.

.JUMP <server:port>
  Jumps to a new server. Warning: this command doesn't add <server:port> to
server list of the bot. (@servers)

.HELP
  Prints available command list.


                               -------------------


  [4] Some other features
  
  Bot can do some more things. It has the ability of learning, You can ask
questions, receive freshmeat/slashdot headlines, leave notes to other people.


  - It learns!
  
  If you write something like that:
  
  <sPec^fLR> The Matrix is a great movie!
  
  It'll learn and know that the matrix is a great movie :) and able to answer
the well-known question: What is The Matrix?

  It'll catch all the crap from the channel that includes "is" "are" and so on,
It may not be accurate or intelligent, but sometimes it's useful, and fun! :)
If you want the bot to answer your question, you gotta ask it _to_ the bot:

  <sPec^fLR> MyBot: What is The Matrix?

  That's it.


  - Freshmeat and Slashdot Headlines:

  Examples:
  <sPec^fLR> SunfLare, freshmeat headlines?
  <sPec^fLR> SunfLare, /.
  <sPec^fLR> SunfLare, slash?

  Etc. You know what will it do? Yes you do. It'll write the headlines fetched
from freshmeat.net and slashdot.org. You gotta cron somethings to get it to
work (see the "Setting it up!" section). Soon, It won't need any external progs
to fetch all the stuff.


  - Leaving/Reading and Deleting Notes (Memos):
  
  You can leave a msg to someone by doing:
  <sPec^fLR> MyBot, note to disq: cabbar is cool!
  
  It'll tell disq he got a note waiting when he joins to a channel the bot
is on.

  To read notes: /msg MyBot read notes
  <MyBot> [0] sPec^fLR: cabbar is cool!
  
  To delete all notes: /msg MyBot delete notes
  To delete a specific note: /msg MyBot delete note 0


  - Seen support:

  That's the well-known and useful "seen" support:

  <sPec^fLR> MyBot, seen disq?
  <MyBot> sPec^fLR, disq is on the channel right now, don't you see?!
  <sPec^fLR> MyBot, oh really? see how stupid i am..


  - TopTen Talkers:

  Bot counts how many letters people write on the channels. And sorts them.
You can see the topten talkers by asking the bot like this:

  <sPec^fLR> MyBot, topten?

  You can redirect the output to any channel when you /msg the bot:
  /msg MyBot topten #scene.tr?

  And output will appear on #scene.tr


                               -------------------

  [5] Notes

  
  - DreamBot uses /tmp/dreambot.pid as its lockfile. If bot quits after you
  run it, there's probably a leftover dreambot.pid in /tmp. Remove it and
  re-run.

  - If you don't wanna have freshmeat and slashdot support, you can just
  remove them from crontab, and delete the *.rdf files from datadir.

  - Bot saves its data files hourly.

  - And also, I'm sure a lot of bugs exist in this release, so please calm
  down. Hey I said calm down! And just inform me instead.


                               -------------------

  [6] To Do
  

  - Cycle the channel if the bot has no op and no one is on the channel.
  - Dynamic channel list (similiar to user list)
  - Channel mode lock
  - Update the topic when opped if topiclock is on.
  - Bitch mode


                               -------------------


  [7] Contacting


  That's all! Now you can go config your bot, run it and pray. Don't forget
to send me your comments, suggestions, and everything about it.

  Email: spectre@winterland.net
    ICQ: 17944437

  DreamBot Homepage: http://www.winterland.net/~spectre/dreambot/

