==========================
Frequently Asked Questions
==========================

(a.k.a. Why doesn't this thing work?!")

WHAT DO I DO IF I GET THE ERROR "USER FILE NOT FOUND"?

  1. Run Eggdrop with the "-m" option (i.e. "eggdrop -m eggdrop.conf").

  2. Go to IRC and send "hello" to your bot (i.e. "/msg mybot hello").

  3. You will become an owner on your bot. You can leave the bot running
     (nobody else will become an owner if they say "hello"), but in the
     future, don't use the "-m" option when running the bot.

WHAT THE HECK IS Tcl?

  Tcl is a scripting language written by John Ousterhout. It's much better
  than most "built-in" script languages (like the one in ircII) and is
  meant to be linked with anything needing a  scripting language, so I
  linked it with Eggdrop. The file "tcl-commands.doc" in the doc directory
  contains a list of additional Tcl commands provided by Eggdrop. There
  are also several example scripts in the scripts/ directory, and one in
  the doc directory called first_script.txt. Hundreds of scripts floating
  around on the ftp/web sites if you like working by example (which is
  typically the best way).

MY BOT DIES, AND THE LAST ENTRY IN THE LOGFILE IS "RECEIVED TERMINATE
SIGNAL". WHAT DOES THAT MEAN, AND CAN I PREVENT IT?

  There's nothing you can do to prevent it. It means the system
  administrator is killing the Eggdrop process. Most of the time, it's an
  automatic thing that happens when the system is being rebooted, so it's
  harmless. If you have a crontab running, the bot will get restarted when
  the system is back online. Occasionally, the system administrator will
  kill the bot manually. For example, if he/she doesn't want bots running
  on the system.

SOMEONE ELSE SET UP A BOT I DON'T LIKE. ARE THERE ANY BACKDOORS I CAN
USE TO TAKE THEIR BOT DOWN?

  No, there have never been any backdoors and there never will be, so
  please stop asking. Every once in a while, someone finds a way to
  exploit a bug in Eggdrop, but we fix these bugs as soon as we find out
  about them. If you want to bring down someone else's bot, you will not
  have my/our help.

WHAT ARE MODULES?

  Modules are a way of adding extra features to the bot, much like Tcl
  scripts, without requiring the bot to be recompiled. See doc/MODULES
  for more information.

CAN I COMPILE EGGDROP WITHOUT DYNAMIC MODULES?

   Yes, you can. If the configure script detects that your system CAN'T
   run modules, it will setup 'make' to link the modules in statically
   for you. You can choose this option yourself by using 'make static'.
   You can also try to compile dynamic modules on a static-only system
   by using 'make eggdrop'.

DO I STILL NEED TO 'loadmodule' MODULES?

  YES, when you compile statically, all the modules are linked into the
  main executable. HOWEVER, they are not enabled until you use loadmodule
  to enable them, hence you get nearly the same functionality with static
  modules as with dynamic modules.

WHERE CAN I GET A PRE-COMPILED EGGDROP FOR MY COMPUTER?

  It is HIGHLY recommended AGAINST using pre-compiled Eggdrops from
  un-trusted sources. Eggdrop has been a regular target for hacking and
  crashing. Distribution of pre-compiled (binary) versions of Eggdrop are
  the easiest way for hackers to provide you with the easiest (and most
  dangerous) way of gaining access to, not only your bot, but to your
  computer account directly. Don't advertise your pre-compiled Eggdrop
  binary sites on the Eggdrop list either. =P

I GET 'Makefile:3 :invalid operator' OR SOME-SUCH-THING WHEN I TRY
TO 'make'.

  Try 'gmake'.

WHEN I 'tclsh scripts/weed <userfile> c' IT BARFS CHUNKS AT ME AND
DIES. :(

  Upgrade your Tcl. You are probably using Tcl 7.5 or earlier. Some of the
  commands in weed require Tcl7.6 to run, so either upgrade it or remove
  the offending lines from you userfile manually (those starting with '.'
  generally) and accept the loss of that data.

I GET "ld-elf.so.1: Shared object "libtcl80.so.1" not found" or
"eggdrop: error in loading shared libraries libtcl8.1.so: \
cannot open shared object file: No such file or directory" WHEN I TRY
TO START MY BOT.

  './configure' is looking in the wrong place for Tcl; it looks like it
  compiled with one version of Tcl and tries to load another. Maybe your
  sysadmin upgraded Tcl and didn't tell you. In that case, you should just
  need to recompile your bot.

  Maybe, when upgrading, he didn't clean the old version of Tcl and
  './configure' is looking for the files in the wrong places, or trying
  to use different versions of tcl.h and libtcl*. Smack your admin and
  have him install Tcl properly. ;)

  You can also try::

        ./configure --with-tcllib=<path-to-tcl-lib>
                    --with-tclinc=<path-to-tcl-inc>

  This will tell configure where to look for the Tcl files.

  Try looking for libtcl by::

    ls /usr/lib/libtcl*
    ls /usr/local/lib/libtcl*

  Try looking for tcl.h by::

    ls /usr/include/tcl.h
    ls /usr/local/include/tcl.h

    If everything else fails, try to install Tcl to your home dir ;)
    (Suggested by dw@Undernet, dw@lixom.nu)

I GET A WHOLE PILE OF "Unresolved symbol 'Tcl_AppendResult'" (OR SOME
OTHER SYMBOL) WHEN I TRY TO LOAD A MODULES.

  POSSIBILITY A: See previous section.

  POSSIBILITY B:

    Some of the standard libraries have been compiled for static linking
    only on your machine, you have 3 options:

      1. If it's your own machine, recompile Tcl using dynamic linking by
         using './configure --enable-shared' when you configure Tcl (not
         the bot) and then remake, and reinstall.

      2. If it's not your machine, you may have to resort to 'make static'
         and 'make install DEST="path"' to make and install your bot.

      3. If you are of a more aggressive sense of mind, go beat the
         stuffing out of your admin for having lame static libraries. :)
