============
TOUR DE CODE
============

__copyright__ = 'this file is in the public domain'

bot dir
~~~~~~~
::
  
  (bart@dunker):~/gozerbot/tour/gozerbot
  $ ls
  README  contrib  files     gozerplugs  setup.py  tests
  bin     doc      gozerbot  runbot      stop
  
  doc .. documents
  files .. scripts and other files
  gozerbot .. module providing gozerbot core code
  gozerplugs .. package that holds the bot's plugins
  runbot .. main program
  stop .. script to stop the bot
  tests .. directory with unittests
  bin .. directory with binaries
  contrib .. files contributed but not in the public domain
  
gozerplugs
~~~~~~~~~~
::
  
  $ ls
  __init__.py  dbplugs  plugs  web

  
doc
~~~
::
  
  (bart@dunker):~/gozerbot/tour/gozerbot/doc
  $ ls
  BASIC       FLEET   OPER           RELAY  TOURDECODE  USER
  COLLECTIVE  FLOW    PLUGINS        RSS    UDP         WEBSERVER
  FAQ         JABBER  PROGRAMPLUGIN  THNX   UPGRADE
  
  BASIC .. basic bot commands
  OPER .. bot OPER manual
  PROGRAMPLUGIN .. doc about making your own plugin
  RSS .. describes the rss functionality
  THNX .. people
  UPDATING .. read when you try to upgrade from an old gozerbot
  UPGRADE .. show how the bot can be upgraded to a newer version
  USER .. doc about managing users
  FLEET .. about running multiple bots
  FLOW .. describes the basic data flow of the bot
  PLUGINS .. description of the plugins
  
files
~~~~~
::
  
  (bart@dunker):~/gozerbot/tour/gozerbot/files
  $ ls
  dcctest.py  gozerbot.cron  onconnect         qtest.py   svnlog.py
  dotest.py   hammer.py      pickletomysql.py  setup.py   toudp.py
  gb_db       mailudp.py     plugdeny          sqlite_db
  
  coredbtogozer.py .. when upgrading from corebotdb
  coretogozer.py .. upgrades from corebot
  dcctest.py .. script thats tests the bot by making DDC chats to the bot and
                run the examples as commands
  dotest.py .. script to run unittests
  gb_db .. mysql database template
  hammer.py .. run one command multiple times
  mailudp.py .. example of file to include in .forward so mail -> irc gateway
                is possible
  nagios-udp .. nagios mail -> irc gateway
  onconnect .. example of file to run when bot connects to an irc server
  qtest.py .. use Queues to test bot
  svnlog.py .. file to use for svn commit -> irc gateway
  toudp.py .. stdout -> irc gateway
  
gozerbot
~~~~~~~~
bots core code
::
  
  $ ls 
  __init__.py   dol.py           jabberpresence.py  persist.py
  aliases.py    eventhandler.py  less.py            persistconfig.py
  backup.py     examples.py      limiter.py         plughelp.py
  bot.py        exit.py          limlist.py         plugins.py
  callbacks.py  fleet.py         lockmanager.py     redispatcher.py
  channels.py   generic.py       monitor.py         rsslist.py
  commands.py   ignore.py        myimport.py        statdict.py
  config.py     irc.py           nextid.py          thr.py
  datadir.py    ircevent.py      partyline.py       users.py
  db.py         jabberbot.py     pdod.py            wait.py
  dbusers.py    jabbermsg.py     pdol.py
  
  backup.py .. makes backup of the data dir
  bot.py .. defines the Bot class
  callbacks.py .. enables callbacks
  channels.py .. Channel class used to store channel related data 
  commands.py .. bot commands infrastructure
  config.py .. holds the config dictionary
  db.py .. does the mysql interfacing
  dbusers.py .. mysql related users code
  dol.py .. a dol is a dict of lists
  examples .. examples and descriptions of the commands
  fleet.py .. fleet is a list of bots, used to connect to multiple servers
  generic.py .. generic functions and stuff
  irc.py .. defines the core bot code handling irc stuff
  limlist.py .. limited list aka list with max number of elements
  monitor.py .. use to register callbacks that gets called when certain
                monitor events happen
  more.py .. enable bots response caching
  myimport.py .. provide absolute path importing
  nextid.py .. dict with counters to provide ids
  partyline.py .. talk with other people via dcc chat
  pdod.py .. pickled dict of dicts
  pdol.py .. pickled dict of lists
  persist.py .. used to pickle data
  plugins.py .. provides plugin related functionality
  redispatcher.py .. regular expression dispatcher
  statdict.py .. dict used for stats
  thr.py .. give thread the name of the command excecuting
  udp.py .. code for udp listen thread
  users.py .. users related code
  wait.py .. register callbacks on irc events
  datadir.py .. app wide datadir
  
plugs
~~~~~
::
    
  (bart@dunker):~/gozerbot/tour/gozerbot/gozerplugs/plugs
  $ ls 
  __init__.py    core.py        infoitem.py        misc.py         tail.py
  alarm.py       count.py       install.py         mono.py         to.py
  alert.py       country.py     irc.py             nickcapture.py  todo.py
  alias.py       dig.py         jabber.py          not.py          topic.py
  autovoice.py   dns.py         jcoll.py           ops.py          udp.py
  away.py        event.py       karma.py           probe.py        update.py
  birthday.py    fleet.py       limiter.py         quote.py        upgrade.py
  botsnack.py    googletalk.py  links.py           relay.py        user.py
  chanperm.py    greeting.py    lists.py           reload.py       webserver.py
  choice.py      grep.py        log.py             remind.py
  code.py        hello.py       mail.py            rss.py
  collective.py  idle.py        mailexceptions.py  shop.py
  convert.py     ignore.py      markov.py          size.py

see doc/PLUGINS for plugin description

database plugs
~~~~~~~~~~~~~~
::
  
  (bart@dunker):~/gozerbot/tour/gozerbot/gozerplugs/dbplugs
  $ ls
  __init__.py     infoitem.py     quote.py        user.py
  birthday.py     karma.py        todo.py
  
  birthday.py .. manages birthdays 
  karma.py .. manages karma
  quote.py .. does the quotes thing
  todo.py .. todo 
  user.py .. user related plugin
  