The Eggdrop FAQ
Running the Bot


My bot needs a nick with the '[' ('$', '"', etc) char in it, but it just keeps giving errors when starting...

Some characters are reserved for special uses in TCL. Since the eggdrop configuration is TCL script, you need to make sure it can be read by the TCL interpreter.

Quote strange characters by adding a slash '\' before it. The chars you surely will want to quote that way are:

  [ ] { } " \ $  

If you are unsure, quote all dubious chars. It won't hurt.


I get '*** Can't load Userinfo v1.01 -- At least Eggdrop v1.3.0 required' when starting the bot!

This is a problem when you run the bot with TCL 8.0 libraries. Just edit the scripts/userinfo1.0.tcl file and remove the lines that do this checking:

  if {![info exists numversion] || ($numversion < 1030000)} {                 
    putlog "*** Can't load $userinfover -- At least Eggdrop v1.3.0 required"  
    return 0                                                                  
  }                                                                           

How can I change the string that appears in front of the @ in the WHOIS on IRC?

If the string that appears in front of the @ on IRC has a ~ (tilde) in front of it, you can set, in your configuration file the variable "username":

  set username "othername"  

and probably this it will make your bot show as ~othername@your.site.com on IRC. If you don't see any character before your username, then your shell has installed identd, and your username will always be your UNIX-username and you can't change it.


What do I need to make the bot join a channel with a key?

In your channel settings set the key as usual:

  channel add #thechannel { chanmode "+k theKey" }  

This will not only make the bot enforce this mode, it will also be used by your bot to join this specific channel.


How can I execute more than one command in the need-op settings?

The best is to create a separate procedure to handle everything you need:

  chanset <#channel> need-op "need_op_cmd <#channel>"                            
  proc need_op_cmd { channel } {                                                 
    command1                                                                     
    command2                                                                     
    ...                                                                          
  }                                                                              

When I try to start the bot from the config file it says "Permission denied". How can I start my bot simply by executing the config file?

To do this, you need to edit the first line of the config to make it point to the full path of where your eggdrop binary is. For example you have

your eggdrop binary in: /home/justme/eggdrop/eggdrop
your bots configuration in: /home/justme/eggdrop/mybot.conf

So you edit the configuration and replace its first line with:

  #!/home/justme/eggdrop/eggdrop  

Next set the file as executable using: chmod +x mybot.conf
Test it, by running it: ./mybot.conf
This should start your eggdrop bot.


How do I set up my bot to come back after it dies?

You must set up a crontab which checks every 10 minutes if your bot is still alive. If the script detect that it is not, it should reload the bot.

Setting up the botchk script

There is a script included with the eggdrop distribution to do this. It is the scripts/botchk file. You should set the following to make the script work:

Make sure your bots config file is runnable (see previous question).

Edit the scripts/botchk file and set the four configuration items:

  botdir="/home/justme/eggdrop"  
  botscript="mybot.conf"         
  botname="Goofy"                
  userfile="Goofy.user"          

Make sure you entered things with the correct cAsE, this is important! If you are not sure about the 'botname', just make sure it is written the same case as you see in the 'pid.*' file that exists in your eggdrops directory when your bot is running.

Now you should check if you got it right!

  • Make sure your bot is running and execute the scripts/botchk file from your prompt. You should see nothing. If your bot starts again, then you have some of the above settings wrong.
  • Now .die or kill your bot, and try the script again. It should restart your bot. If it gives you any error, check to see if your configuration file is runable (see previous question).

If the test ran successfully, you now are ready to set up the crontab

Setting up the crontab

Create a file called 'mycron' with this contents:

  0,10,20,30,40,50 * * * * /home/justme/eggdrop/scripts/botchk >/dev/null 2>&1  

Make sure you've got the path correct. Now you must tell crontab to add the contents of this file to your crontab. Just type: crontab mycron and it should be done.

If crontab gives you an error that you don't have access to crontab, you are unlucky. The only thing you can do is talk to the system administrator to allow you to use this function.


My bot is making clones! Another joins with a different nick each 10 minutes!

This means your bot checking script that is run in your crontab isn't working. It is never able to detect your bot running, and simply runs another copy.

Three main causes:

  1. You didn't edit the configuration correctly as explained in the previous question. Read it again and recheck everything.

  2. Your quota is exceeded. To solve this problem, you need to add some checkings to your botchk script. If your system has the 'quota' command, see if you have the 'X days left' output somewhere when your quota is exceeded. If it does, you can try adding the following at the top of your botchk script:

      if [ -n `quota -v | grep days` ]; then  
        echo Quota exceeded!                  
        exit 0                                
      fi                                      
  3. From: Tothwolf <tothwolf@concentric.net>
    Under some unix versions, the #!/bin/sh line should be changes to #!/bin/bash... I know of a few cases under FreeBSD and NetBSD where problems with the system shell /bin/sh would make botchk operate very strangely.


My bot is writing 1000Mb log files! Help!

For some reason the bots net connection might have gone mad, and the bot is cycling at one or another step until eternity, while logging it's action happily to your log files. Since this can go VERY fast, your log file will rapidly grow to terrible sizes.

There are no known ways to prevent this. You might try to disable the logging of server disconnect/connect notices if you are totally scared (remove the '+s' from the logfile command in your config). Or simply pray for it not to happen one more time. This is not very usual.

You might take a look at your scripts, maybe one of them makes this mess. If you have scripts that use the 'control/listen' procedures, they might be your problem.


Can I make the bot mail me the logs from yesterday?

If you set the bot to rotate logs at 5am, you can try to add to your crontab:

  5 3 * * * mail your@email.here < /home/justme/eggdrop/mybot.log.yesterday  

This will mail you the specified file at 5:03am.


How can I set up eggdrops file-area?

To enable eggdrop's filesystem, you need to make sure you have set the following in your bots configuration file:

  loadmodule transfer  

This will enable DCC SEND and DCC GET from your bot.

  loadmodule filesys                                         
  set files-path "/home/justme/eggdrop/filesys"              
  set incoming-path "/home/justme/eggdrop/filesys/incoming"  

The loadmodule filesys' will load the filesystem feature. The next settings will tell the bot which is the root of your filesystem. You can also enter paths relative to your bots directory:

  set files-path "filesys"              
  set incoming-path "filesys/incoming"  

Make sure these directories exist (filesys and filesys/incoming are created by default by the eggdrop installation) and the filesystem should work.


I get '-NOTICE- No Ident response' when trying to connect to a server.

If you get notices like this:

  [18:24] -NOTICE- Looking up your hostname...  
  [18:24] -NOTICE- Found your hostname, cached  
  [18:24] -NOTICE- Checking Ident               
  [18:24] -NOTICE- No Ident response            

when trying connecting to a server, this is not eggdrop's fault, it is that your machine does not have a identd server to answer ident queries. Some irc servers require this for you to connect. Simply ask your system administrator to install a identd server. Non super-user users do not have permissions to install this, since it must be listening at a previleged port (113).


How can my eggdrop know about nicks >9 chars on IRC?

Edit the src/eggdrop.h file and find the line:

  #define NICKMAX       9     /* valid values HANDLEN->32 */  

Change 9 to whatever length of nicks that your net allows, and recompile the bot.


I just compiled my bot, and tried to start it, but I get 'eggdrop: command not found'. What should I do?

Try calling it using './eggdrop', this should start it. This means that the current directory is not in your PATH. You can add it, before calling eggdrop:

If your shell is csh/tcsh:

  setenv PATH ".:$PATH"  

If your shell is sh/bash/ksh:

  PATH=".:$PATH"  
  export PATH     

Then you can call eggdrop directly, without the './'.


How can I kill my bot from the Unix command prompt?

Simpliest way: kill -9 `cat pid.Botname` Note the use of backquotes. Change the "Botname" to the name of your bot. If this do not work, telling you "no such process", go ahead:

  1. Find the bot

    Use the 'ps' utility to find running processes. The syntax differs from Unix to Unix, you can try these, until you find one that works:

      ps -axu | grep yourusername  
      ps -Af  | grep yourusername  
      ps -ef  | grep yourusername  

    This will show all your processes that are running. Find your eggdrop and locate the process number. It is usually one of the first 3 or 4 digit number that appears in the output of the 'ps' command.

  2. Kill the bot
    From: Tothwolf <tothwolf@concentric.net>

    Use the command: kill -15 process-number
    This should make the bot save its user and channel file and then kill itself. Change the process-number with the number you found out in the previous step, of course.

    If your bot did not react to the above command in a reasonable ammount of time, go ahead and use: kill -9 process-number


While loading my bot it says something about:
'Tcl error in file 'eggdrop.conf': invalid command name "channel"'

You probably did not 'make install', which places the modules in the right directory.


Can I use the userfile from my 1.0 bot on a 1.3 bot?

This will envolve two conversions.

  1. convert the userfile from the 1.0 format to the 1.1 format.
  2. convert the 1.1 userfile to the 1.3 format.

Step 1) is the most difficult one, since you will need a running 1.1.x bot. Get and compile eggdrop 1.1.5 and load the userfile with this bot. It will auto-convert the file to the 1.1 format. Make the bot save the file (issue a .save command) and kill the bot.

In step 2) you can use the scripts/weed script included with the 1.3.x distribution, which can read the 1.1 userfile and convert it to the 1.3 format. Use it like this: tclsh scripts/weed userfile.old c The 'c' will tell it to "convert". The new userfile will be called 'userfile.old.weed', just rename and use it.


I sometimes get '(!) timer drift -- spun 5 minutes', what does this mean?

This can mean several things:

  • Your bot was unable to do anything in the last 5 minutes for some reason. Maybe some script is making things that take too long, or maybe there is an error while it resolves the address of some hostname.

  • The machine your bot is on has changed it's clock. This will confuse the bot, thinking the time has past and he has not noticed.

If you get this very often, this is bad, and probably means the machine your eggdrop is running on is very busy doing other things or you have some buggy script doing strange things. Unload all dubious scripts, and see if the problem vanishes.



© 1998-2000 by Ernst