|Darkbot 6 (final6) revision
6: Dec 17, 2001
- Paul@darkbot.info fixed a bug that was causing compilation
problems (error code 127 and/or some warnings) on freeBSD.
- Paul also improved and patched the code with a change made by
Ron which makes Darkbot not return it's own nickname
when variable R~ is used on topic/replies.
- Due to Jason Hamilton busy life the project is now under
LuizCB (Pincel) administration.
- darkbot.net and darkbot.info urls are now pointed to one
Darkbot 6 (final6) revision 5: Nov 11, 2001
Changes made by Ron@darkbot.info
- possible fix on a bug that made not possible having more
than 1500 randomstuffs.
- DISALLOW_COUNT is defined by default, since the script
for that is down.
- Added an extra srand(time(0)) to do_randomstuff, because a
lot of people complain about Darkbot not being very random
- Corrected a typo on !hlist that made that command not
- Added the NEED_CLOCK_T define to defines.h. Turn this on if
your compiler complains about clock_t and CLOCKS_PER_SEC
not being found.
- Cloud and Ron optimized the code in order to compile better
- darkbot.info centralized all Darkbot pages and files due to
darkbot.net being temporarily down.
Darkbot 6 (final 6): Dec 12th, 2000
- One more bug relating to the change from sprintf to snprintf,
the search and dsearch command no longer outputted the
proper search matches on Linux machines. This has been
Darkbot 6 (final 5): Dec 11th, 2000
- After getting a bunch of people complaining that multiword
topics did not work for them anymore, I looked it over,
and those people were correct. I found that on Linux,
and ONLY linux, starting at 6f3, multiword topics did
not match properly. I checked the code, and narrowed it
down to the get_multiword_topic function. It seems that
when we do a snprintf on the string, it no longer works.
I don't know why, so for the time being at least, that
will be the only function that will have sprintf instead
Darkbot 6 (final 4): Dec 3rd, 2000
- Fixed a minor bug that made a topic of "test" not match
when someone asked "text?".
Darkbot 6 (final 3): Dec 1st, 2000
- Replaced all sprintf's with snprintf. This will remove any
chance of those functions buffer overflowing. I have
not heard about any exploits, but better safe than sorry.
- I did the same with all the strcpy's -> strncpy.
Lurker 1.0 released: Nov 28th, 2000
- This is a darkbot mod based off of darkbot v1.0. See the
download page for more info and details about this
Darkbot 6 (final 2): Nov 28th, 2000
- in 6f1, stripping out the ctcp codes from the input, which
would help when it outputs with 1~, 2~, etc tags, breaks
the replies to action topics. This version restores the
Darkbot 6 (final 1): Nov 22nd, 2000
- Since the last few versions have not turned up any bugs, I think
we can declare this version a 'final' and no longer in the
- Updated output reply so that it now strips out the \1 (ctcp)
codes from replies.
- Added new lang: romanian.
- Fixed a small typo in the startup text.
- Updated the darkbot startup server query output.
Darkbot 6 (beta 2): Nov 20th, 2000
- Revised the startup text so it's cleaner.
- Updated the startup cgi so it not only tells you how many
people have run your current version of darkbot, but
also lets you know what is the latest version of darkbot.
- KICKBAN for user's sending a notice to channels has been
swapped around for a BANKICK instead.
- Fixed some typos in the code and configure files.
- Set the startup program to launch into the background, so
the bot doesn't have to wait for it to complete before
- New option for the anti-notice-to-channel option, you can
now define for it to ban by *@host instead of the previous
option to just ban by user@host.
- New alias for DSEARCH, DFIND.
- Revised the defines.h and gave some comments more descriptive
Darkbot 6 (beta 1): Nov 19th, 2000
- Added two new variables -- H~, which will display a user's
u@h, and h~, which will display the user's u@h without
the ~ prefix (if present).
- Added in new raw topic called BAN. example:
bot add ban+me -PRIVMSG C~ :okay N~. | BAN
It takes no parms. Just "BAN" (all caps). The topic must
be a raw topic (starts with a - prefix).
You can do a kickban with: -KICK C~ N~ :get out! | BAN
- New t~ variable now tells the current time in UNIXTIME format.
- Removed defines for DBTIMERS (darkbot timers). It is going to
be required from now on due to the new TIMER code that is
to be added.
- New raw topic called TEMPBAN, this works the same way as
BAN (See above), but the bot will unban the user in
60 seconds (using DBTIMERS). example:
- New code in the bot that lets it tell you how many times
people have run your version of darkbot.
- New .runonce script that lets you know how many people have
compiled darkbot on your operating system so far.
Darkbot 6 (alpha 6): Nov 18th, 2000
- Added new langs: Chinise, Swedish, and Norwegian.
- New feature that kicks (and bans if you want) users who send
notices to your channel (ie; /notice #chan YOU SUCK!).
- Updated the code that checks if users who join are in a
"bad channel", there was a check to see if the channel
list was over 160 chars, and if so, it set the string to
= '\0' instead of string = '\0'. This is fixed.
- Updated the show_url() function to no longer ignore all
users who have a | in their nick, but rather, ignore
them only when the topic reply contains a raw output
data. This way users with | can still use the bot.
- Updated the download_database script to use the new url
- Removed the docs/ file from the distro -- it was all very
outdated. Please see the http://help.darkbot.net for
Darkbot 6 (alpha 5): Oct 17th, 2000
- Chris (CRM) fixed up the token code that I abandonded
a long time back, and it now works! It's good stuff:
You can now pick specific words out of a string using
the string's number. For example:
bot add play* 1~ 2~ 4~ 6~
play was a human and stuff.
play was human stuff.
- Added Italian lang.
- Cleaned up the defines.h a bit.
- Went thru the whole darkbot.c and replaced string length
defines with either STRING_SHORT (512) or
- Removed some old backwards compatability with darkbot v1's
that used info.db instead of info2.db.
- Removed a struct that was not used.
- Renamed download_all_databases to download_databases. Updated
get-latest to use the new name.
Darkbot 6 (alpha 4): Oct 13th, 2000
- Fixed a core bug in the new !SEEN. I forgot one "R;"
- Deleted all the MessageBox functions from the WIN32 code.
- Updated get-latest to now grab a compressed
download_all_databases.gz file instead of plaintext.
- Removed a bit of debugging code from show_chaninfo() that
printed out all users the bot sees when you issued the
- Removed the backwards compatability mkdir's in the configure.
Darkbot 6 (alpha 3): Oct 13th, 2000
- Deleted the huge ifdef PLAY, which made a stats page.
It's pretty useless these days, so it's been axed.
This lowers the .c by 13k to 136k in size.
- Ran darkbot.c thru indent.
- Added a 'make indent' option in the Makefile.
- Removed the LOAD_DATABASE_IN_RAM option. Most unix systems
cache the data, so the disk searches are just as fast
as ram searches in most cases. Also if we were do have
a database so big it required to be loaded directly into
ram, it would be so huge, you wouldn't want to do it.
- Updated the SEEN code, so it updates when it sees a user quit
IRC, in addition to when they join.
- Updated SEEN code so that when you ask it about a person who
is already in the chan, it tells you the person is in the
- Removed a few unused variables. Also set Makefile to not have
the -Wall since it slows down the compile time, and most
people are not going to gain anything from it.
- Removed the .clean script, and 'make clean' option, also
deleted the .distro script. I didn't even know it still
- Set the default defines.h to have JOIN_GREET disabled. It's
annoying I think, and since darkbot is now a lot more
advanced than it used to be, we do not need to instruct
users on how to use the bot.
- Set the .Stripdb script to default to strip darkbot bin.
- Changed the version string to just say that the bot is a
darkbot, rather than giving the exact darkbot revision.
Darkbot 6 (alpha 2): Oct 12th, 2000
- Updated the delete_user code to now delete from ram the
users, rather than zeroing them out. I used to zero
them out, and reuse the allocated slots over and over
because there used to be a ram leak, and I thought it
was in the delete_user not deleting properly. It was
not, but the code never got updated until now.
- Updated do_quit to now have three options, 1) delete a user
from memory, 2) delete all users from a chan, or 3)
delete all users from memory. Thanks to ripper_@unet
for his bug fixing skills.
- Setting Makefile to also include -Wall.
- Deleted the -LOCAL option. This code was never used and
just bloated the code. Looks like it's removal reduced
code size by around 10k
- Deleted the DO_CHAN_HTML code. Another bit of bloat that is
not needed for a help bot.
- Deleted create_mask() function. It only half way worked.
- Trimmed up the comments. Code is now at 149k.
Darkbot 6 (alpha 1): Oct 12th, 2000
- This version includes a get-latest that works properly.
The alpha0 version's get-latest would download the
darkbot 5.x code thinking it was the latest when
it was not.
- This ver of get-latest downloads everything in compressed
format. So the darkbot.c is now only a 30k download
(vs a 160k download uncompressed). Even the get-latest
updates are now compressed -- it's not even 1k in size.
- Fixed the | nickname bug that was able to cause the bot to
crash or disconnect from IRC.
- Updated the darkbot startup text, so it visually shows
things being loaded with the "...."'s.
- Fixed the code so it can be once again compiled properly
- Added code so that the WIN32 version can be run with no
console window (background process)
Darkbot 6 (alpha 0): Oct 11th, 2000
- This is the brand new code, it is not going to be
compatable with the older darkbot's as far as
the scripts such as ./get-latest and so forth
due to the fact that a large number of things
are going to be changed around. What I recommend
you do, is download the new darkbot-6a0.tar.gz
and gunzip/untar it, and copy over your database
stuff. The userlist in Darkbot 6 alpha 0 is in
a better format, and is also not compatable with
the 5x versions. I'm sorry for the headaches, but
it's a needed changed.
- Darkbot will not sigsegv when it gets to a blank line in
the info2.db or userlist.db anymore.
- Removed !8BALL.
- Added GERMAN lang.
- Moved lang.h into langs/ directory, and seperated the
langs into their own files, ie; english.h, spanish.h
- You will no longer be editing the defines in darkbot.c, but
in a new file called defines.h
- All 6.x versions of darkbot run a new get-latest which
downloads a small darkbot.version file to check the
latest darkbot version, instead of downloading the
full darkbot.c each time. This should speed up the
checking, and make less waste with bandwidth.
- Updated the show_seen code, it has more error checking
now, and shouldn't be causing sigsegv's when it has
- Added in a channel define that allows you to decide to keep
or remove the channel code in darkbot. The channel
code is basically stuff like !KICK, !OP, and !PERMBAN.
The darkbot bin shrink from 82k to 78k when undefining
the channel code option.
- Fixed up the userlist.db so it no longer has that funky
control char to seperate the setinfo from the pass.
The password is now defined before the setinfo. Also
passwords can now be up to 24 chars in length. This
is the main reason why you can't just update the
darkbot.c like you could in the v5.x of darkbot's. The
userlist would get all screwed up.
- Updated Adduser script to now ask for a password when adding
- Fixed a SETINFO bug.
Darkbot 5 (final 28): Oct 6th, 2000
- The darkbot website has moved to http://darkbot.net
This version reflects that change, and updates
all documentation and scripts to point to the
- A new script called download_all_databases has been
created, and included in this version. It will
download all databases from the darkbot site and
set them up for you :)
- Also, we have a new mailing list -- to join, email
firstname.lastname@example.org with the subject of
Darkbot 5 (final 27): Aug 28th, 2000
- Not much to say here. The last version makes the code impossible
to compile on win32 due to the size_t type not being
Darkbot 5 (final 26): June 23, 2000
- Fixed one of the below changes -- the randomtopic code caused the
bot to crash.
- Added in ILC (is lamer channel) support into the bot.
### Changes below were all by ripper_@undernet
- Changed a lot of method arguments to be pointers to const data,
this immensely aids in debugging and promotes strong software
- Added initializers for lots of variables in methods
- Added type bool
- Changed some variables types to reflect usage (unused types
- Removed some compiler warnings
- Documented all changes in the code :)
- Remove unneeded srand() calls, this only needs to be called
- Added a tail pointer to the sendq queue, this should be
a bit more efficient
- Rewrote a few small methods to be more efficient
- Added a db_strndup() method which will dynamically allocate
a character array on the heap of a given max size
- Added a tokenize command that will tokenize a character array
and return an array of pointers to the individual tokens
- Moved the permban list to use dynamically allocated buffers,
this should make the overall memory footprint a bit smaller,
this is still being tested, but seems pretty stable
- Moved the #define of sleep to db_sleep so it wouldn't collide
with the global sleep method
Darkbot 5 (final 25): June 17th, 2000
- The previous max_topic_size alert didn't work due to a
problem with the #ifdef, this has been fixed.
- Also the previous fix for the '-' ignore didn't work. So
I made a str check for SAFE_TEXT that does not include
'-' in the list, so any attempts to add with - will