Version history

From StealthBot Wiki
Jump to: navigation, search

These are the many versions of StealthBot.

For the current development versions of StealthBot, see the Build log.

Version 0.5 Alpha

The first ever recorded version of StealthBot was 0.5, labeled "Alpha", which was able only to connect and chat on It saw limited use before version 1.0.


v0.5 ALPHA
    -Added timestamps after the login sequence
    -ENTER key bound to Send
    -Focus is maintained when sending text to battlenet
    -Will not send a blank message to battlenet with the ENTER key, the Send label will still do this
    -Working on profile retrieval!
    -Will now display a user's name in the channel when they join it
    -Will no longer display "BNLS: Disconnected" message if the bot is online - this was a useless message, BNLS disengages the bot after it has connected
    -Added Bot--Clear Window menu option

Version 1.0 Betas

Version 1.0 Beta 1


v1.0 BETA 1 - First publicly distributed release
    -Fixed the nasty problem that caused people's names to stay in the channel list after they left it.
    -Timestamps are everywhere now!
    -Added support for whispers with proper colors =p
    -Bot now supports flags - it will display appropriate messages if a user gains or loses ops
    -User's statstring is displayed when they join the channel, new format of join messages:
     " user:ping has joined the channel using product (statstring message) "
    -Still working on profile support!
    -Rumors of compatibility issues with the CSB ocx component
    -Added error support for people who try to connect without a config file present

Version 1.0 Beta 2


v1.0 BETA 2
    -Fixed a minor emote display bug
    -Connect button will now disconnect before connecting. (Reconnects)
    -Modified the Setup GUI
    -Will not send messages to if they are too long
    -Warcraft III logins disabled, on testing they didn't function right
    -Added Current Channel label
    -Clicking once on a person's name in the list of users will copy their username to the clipboard!

Version 1.0 Beta 3


v1.0 BETA 3 - Final Beta Release
    -Access and commands! Information is in readme.txt.
    -Minor bug fixes.
    -Slight GUI changes.
    -The Current Channel label is fixed.
    -The ding is gone! Will only ding if nothing is entered in the send box and ENTER is pressed.
    -Debug removed from the Bot menu. I used this command to test string returns.
    -Will now tell you what users have secondary ops - working on having them placed at the top of the ListBox

Version 1.0

Version 1.0.1


v1.0.1 - Major Release
    -Basic flood protection on all commands that talk to (eg, tagbanned bots massload, the bot will delay after banning each one) This needs work, please send me feedback
    -Added many commands, listed in readme.txt
    -Added lockdown, tagbans, shitlist and commands to turn off the checking of said lists
    -Rewrote parts of the code for efficiency
    -Supports ban and kick messages, checks userlist and safelist before banning unless the banner's access is over 100
    -Bot will reconnect if disconnected by flooding or other reasons
    -Added the /reply in-bot command which will whisper back to the last person who sent you a whisper
    -Added the /rejoin in-bot command which will rejoin the last channel
    -Added splash screen, graphic thanks to {DK}Disturbed, and a way to turn it off.
    -Added the /add in-bot command which adds users to the database "/add Username Access" in the chat window. (chew-style)
    -Anti-idles, the timer is set up but not functioning properly.
    -Added userlist manager (bot - User Manager) so you can see all the users present in your userlist
    -Chat box will clear itself after 16,000 characters are present in the chat window (this prevents someone from dropping the bot by mass-messages or join flooding)
    -GUI changes for the About and Setup dialogs
    -Setup dialog works right when used more than once
    -Fixed the /unsquelch and /squelch bugs
    -Changed the channel list text color to be more visible on dim monitors.
    -People will now be removed from the channel list when they leave the channel.

Version 1.0.2


v1.0.2 - Bug Fixes
    -Fixed a bug regarding old and incomplete config files and the splash screen load
    -Fixed a bug regarding the random quote feature
    -Added the .server command for good measure

Version 1.1.0


v1.1.0 - Major Release
    -Added Winamp support ;)
    -Added Diablo II LOD Realm Logon support
    -Introduced code to handle Diablo II's view of usernames. (No *'s)
    -Added the .rem command to remove users from the userlist
    -Added error handling code.
    -Bot will rejoin if kicked
    -GUI changes
    -Users whose names match the clan channels they are in will be shown as having ops.
    -Fixed a bug regarding the user manager.
    -Users can be removed from the user manager.
    -Added a join/leave message toggle, chat window lock, and toggle for the chat window auto-clear feature in the Window menu.
    -Added commands ping and uptime
    -Modifications to the old command structure to allow most commands to be sent from within the bot (/command) and by whisper
    -Users will now always be removed from the channel list when they leave. Visual Basic's method of handling wildcards was responsible for this, users with brackets and other symbols in their names weren't removed properly.
    -Typing /away (message) and /back will set your status to away and inform others in the channel. Remote commands can do this as well =)
    -Uptimes added
    -Added a complete list of servers in the Setup screen
    -Added a new custom icon, thanks to Andrew "Monki3e" S.
    -Added a new splash screen, thanks to phace.
    -Fixed issues with some channel ops

Version 1.1.2


v1.1.2 - Update
    -Quote, MP3 and Uptime idles as well as standard messages :)
        (these may not quite work properly when the bot is minimized, still checking)
    -Right-click menu available in the channel list, double-clicking on a name puts it in the send box
    -Altered color code to make the bot appear the same on all Windows schemes
        (this will let me have skins in the future as well)
    -The bot now minimizes to the system tray
    -The channel list now shows game icons
    -Fixed minor bugs with .away, .des, /reply and the random quote system
    -Added commands: .lastwhisper, .bancount
    -You can now type "/joinhome" in the bot to send you to your home channel.

Version 1.4


v1.4 - Major Release
    -StealthBot now uses CleanSlateBot2
    -The bot now has Warcraft III support thanks to the CleanSlateBot update
    -Added error checking
    -Switched to a cleaner idle timer system
    -Profile reading/writing support! Read the readme for more info
    -Switched to a much more efficient, cleaner .ini config system
    -Added shortcut keys:
        CTRL + L - Lock Channel Window
        CTRL + K - Toggle Chat Window Auto-Clear
        CTRL + J - Toggle Join/Leave Messages
        CTRL + P - Open Setup
    -Added commands: .time, .sethome, .newdef, .def / .define
    -Switched to a ComboBox for text sending, lets you see your last few messages
    -Added code to automatically resize the objects on the form when you resize the bot
    -Disabled some unused constants to reduce memory use
    -Objects on the form scale in size when you resize the window
    -GUI changes, including Pre and Post boxes -- view the readme for more info.
    -Fixed a bug where connecting with D2, disconnecting and connecting with another product would crash the program
    -Cleaned up global variables to reduce initial memory use
    -Added better and additional icons
    -Added config error checking code

Version 1.5


v1.5 - Update
    -The Profile Reader window has been upgraded to let you copy things out of it.
    -Added Text Message Filters
    -Added Username Block List (with wildcard support)
    -StealthBot can see in The Void now.
    -Added ProfileAmp, more information is in the readme.
    -Fixed the idles that I totally destroyed somehow.
    -Added commands: .block, .filter, .idle (toggle), .setidle (message), .idletype,
        .idletime, .home
    -Minor GUI changes
    -Fixed a bug with the quote-type idle.

Version 1.6


v1.6 - Update
    -Chat and channel list font and size controls! Choose Interface Settings under the     Window menu.
    -Added whisper forwarding =)
    -Fixed a bug involving peoples' names not being deleted from the channel when logged on through Diablo II LOD. You will still occasionally see double of some d2 users when logged in with D2. I'm working on it. :
    -Really fixed the quote-idle bug.
    -Improved floodbot autodetection
    -Added commands: .mail, !inbox
    -Chat filters can be toggled, so CPU usage is reduced when no floodbots are around
    -.newtrigger now modifies the trigger in the config.ini file.
    -.uptime and the Uptime idle type now display the connection uptime as well.
    -Bot doesn't crash when recieving D2LOD ops anymore.
    -Added the Bot - Edit Files menu incase you want to modify the files themselves.
    -Minor GUI changes
    -Added connection uptime in idles and .uptime command
    -Bot will now attempt to reconnect on 10060 timeout errors
    -Added 4 more quickchannels by popular request
    -Fixed an error involving tray minimization, it was minor

Version 1.7


v1.7 - Skipped
    -Big changes happened
    -$aInT released a trojaned "LEAKED" 1.7, which was actually a hexed 1.4
    -1.7 had bad gas and I ran out of Pepto-Bismol

Version 1.8


v1.8 - Update
    -StealthBot now has lag icons -;)
    -Tagbans and Channel Protection have been reinstated.
    -Safelist code has been modified so that it works properly.
    -You can now play a specific track by typing .play -tracknumber-
    -Fixed a bug where when using Diablo II Classic without realms peoples names wouldn't be deleted from the channel list.
    -Fixed a bug that occurred when sending mail from inside the bot (/mail) commands are no longer displayed, they are just sent.
    -Basic, working flood protection is in place. Please let me know about how well this works.
    -New splash screen, thanks to {DK}Disturbed
    -New bot icon, thanks to ReV.ReCoN
    -Inter-StealthBot Tic Tac Toe is now available ;) Read the readme for more info.
    -Connect button will now disconnect first, preventing winsock errors some users were getting
    -Added commands: .shout, .cq, .whoami, .whois, .protect on/off, .shitlist -user-, .shitadd -user-, .pban -user-, .safelist -user-, .safeadd -user-, .shitdel, .tagdel, .safedel, .shitlist, .safelist, .tagbans, .play -tracknumber-, .profile -user- (buggy), .mimic -user-, .nomimic
    (.safelist, .shitlist, and .tagbans display the contents of their respective lists)
    -"/r message" now functions like "/reply message" (laziness rules)
    -Modified commands: .kick, .ban both accept wildcards now
    -Code streamlining
    -Step-by-step config button in Setup for the new bot users ;)
    -Minor GUI changes

Version 1.9



    -Fixed Run-Time Error '5' that was linked to ProfileAmp
    -Fixed a the .ignore and .unignore commands. They were unbelievably screwed up, shows how much I use 'em ;)
    -Fixed a bug in the wildcard banning subroutine that handles tagbans and wildcard bans. The bug caused the wildcards to be misread and extra people to get banned.
    -Fixed a minor bug with ban messages.
    -A MAJOR SECURITY HOLE WAS REPAIRED IN THE USER ACCESS CHECK CODE. This relatively unknown bug allowed a -smart-, unauthorized user to imitate another user and gain their access to the bot.

    -You can now select text directly from the chat window and it will be placed on the Clipboard.
    -You can now type .botname -command- so that just that bot uses the requested command.
    -You can now paste multiple lines of text at the same time into the SEND box. They will be added in order to the queue.
    -Channel greet messages :)
    -You can now type .play *song title* to play the first match to that title on your Winamp playlist. ;)
    -New idle message variables: %botup, %cpuup, %mp3
    -USER MONITOR! Choose "User Monitor" under the Other Settings menu.
    -The 1.05 Patch for Warcraft III has forced me to disable support for it. I hope to work around     this in the future.
    -Users can choose to not accept tic tac toe invitations now.
    -Big menu organization changes.
    -Users can be kicked and banned by rightclicking their names in the channel list.
    -.profile command now works with multi-line descriptions without problems
    -.find and .whois now accept wildcards, eg. ".find s*" to find anyone whose name starts with s
    -.find and .whois now accept access numbers, eg. ".find 80" to find anyone with access 80
    -Added commands: .allseen, .play *songtitle*, .whispercmds (toggle), .greet off, .greet -message-,
       .check -name-, .online, .monitor -name-, unmonitor -name-, .set -name- -access- (same as .add),
       .setname -username-, .setpass -password-, .setserver -server-
    -New moderator icon (gavel)
    -Removed the News screen which nobody used :P
    -Minor GUI changes

Version 1.91


    -Fixed some minor bugs/error messages
    -Fixed an access bug

Version 1.92


    -Fixed Runtime Error 13 which occurred when commands were used for an unknown reason.

Version 2.0


    -Fixed a bug related to pinging
    -Fixed a bug related to wildcard kicking/banning
    -Fixed a bug related to using /unban in the bot
    -Fixed usage of setname, setpass, and setserver
    -Fixed a channel protection bug
    -(hopefully) repaired the causes of runtime errors 372 and 7
    -Repaired the mail system to display the sender's name
    -Fixed the unignore command
    -Fixed a glitch in bancounts
    -Ping/plug of users with ops will now always be shown.
    -You can no longer rename people in the channel list. (Thanks NeTWorKz)

    -You can now detach the channel list so that it is independent from the rest of the bot.
    -Outgoing messages can be filtered through the Chat Filters dialog.
    -The .unban command now supports wildcards.
    -New inbot command /watch allows you to highlight one user's name, useful for busy channels
    -Major GUI updates
    -You can now specify the message used to ban during channel protection
    -Users who return on name#2 or a different cdkey after being banned, will be banned.
    -All options such as Greet Messages, disabled AutoClear and others are saved
    -Idle messages and fast rejoins are now auto-suppressed in Clan [vL]
    -Added GreetMessage tags: %0 %1 %c %p %v
    -Cheat prevention added to Tic Tac Toe
    -AutoClear will now remove one line at a time from the top of the channel text. Removed lines
        are stored in clearedtext.txt on the fly.
    -MAJOR code structure and efficiency changes
    -Bot now reconnects on BNLS errors
    -Catch Phrases allows the user to record text, whispers and emotes containing certain phrases
    -The .tagbans, .shitlist and .safelist commands will whisper back.
    -Modified the .back command to act as .prev if no away message is set.
    -All-new custom command structure implemented.
    -Whisperback commands have Diablo II support.
    -Added designate and squelch to the right-click channel list.
    -Changed several response formats. [tagbans, mp3s]
    -Added IPBanning, ClientBans, PhraseBans, and bans by Warcraft III level.
    -Shitlist messages are customizable by .shitlist -username- -message-
    -Added commands:
        90 _________________________________________________
        .quiettime/.qt on/off        Enables/disables QuietTime
        .quiettime/.qt status        Displays QuietTime status
        80 _________________________________________________
        .levelban                    Sets/disables current levelban level.
        .des/.designate              Changes to these two
        .clist/clientbans/cbans      Displays currently banned clients.
        .cadd / .addclient           Adds a client to the ClientBans list
        .cdel / .delclient           Removes a client from the ClientBans list
        .setvol -volume-             Sets Winamp 2.x's current volume (0-100)
        70 _________________________________________________
        .cmdadd/.addcmd              Adds custom commands
        .cmddel/.delcmd              Deletes custom commands
        .cmdlist/.listcmds           Lists custom commands
        .phrases/.plist              Lists phrasebans
        .addphrase/.padd             Adds phrasebans
        .delphrase/.pdel             Deletes phrasebans
        .pon/.poff/.pstatus          Enables/disables/shows status of phrasebans.
        .phrasebans on/off/status    Enables/disables/shows status of phrasebans.
        .ipbans on/off/status        Enables/disables/shows status of ipbanning.
        .ipban -username-            Squelches and theoretically ipbans a user.
        .unipban -username-          Unsquelches and theoretically unipbans a user.
        .banned                      Lists banned users.
        .setpmsg                     Sets the Channel Protection message.
        60 _________________________________________________
        .levelban                    Displays current levelban level.
        40 _________________________________________________
        .dns                         Performs a DNS lookup on the specified server.
        20 _________________________________________________
        .designated                  Displays the user that the bot last designated.

Version 2.02


    -Safelist is checked during channel protection.
    -Fixed a minor typographical error on first-run. (God bless Find and Replace)
    -Returned flood protection to 1.92 levels when the bot has ops.
    -Fixed settings-saving issues
    -Safelisted users are not listed on channel protect.
    -.cmdlist would occasionally crash the program, thanks T.V.
    -Profile lookups from a detached channel list no longer cause a runtime error, thanks SeRiaL~KiLLa
    -Catch phrases save between instances of the program
    -Fixed a rare overflow error

    -Added Emergency Floodbot Protection [EFP] mode. Toggle it by typing "/fl" in the bot. More in the readme.
    -Added the much-requested %rest custom command argument, which is any arguments above the highest numbered argument specified in the actions. More in the readme.

Version 2.1


    -Unban command actually works during EFP.
    -Fixed an overflow error when users tried to set Winamp's volume over 32767.
    -Safelisted users can no longer be banned using the "," suffix or the "@REALM" suffix.
    -Fixed a glitch with the %rest CC operator
    -Fixed an access glitch that allowed a user with lower access to demote another user

    -Hashed connections are now an option.
    -Added support for multiple-query commands (.say More; say Than; say One; say Line!)
    -Added support for Diablo II ÿc# colors, thanks to BNU-Camel for the inspiration =)
    -Added support for bold and italic text, ÿci and ÿcB
    -Three logging settings, full partial and none.
    -Added a voting system that supports votebanning and votekicking. See below.
    -Hovering over a person's name in the channel list displays their ping and flags.
    -New logging settings allow full, partial or zero logging of chat text.
    -New dynamic-array queue system.
    -Custom command system checks the safelist for /kick and /ban custom commands.
    -Mail system has been rewritten.
    -Added a graphic editor for custom commands.
    -Modified ping retrieval function to work with 0ms ping times.
    -Three clans have requested removal from the QuickChannel list.
    -Support for multi-line anti-idle messages using "& " as the line split.
    -Added direct-config support for customizable levelban messages.
    -Added a flood protection cushion for .cmdlist, .safelist, .banned, .plist and more.
    -User monitor is functional again. (Now using the account from Setup)
    -Added shortcuts CTRL + B, CTRL + I: add Bold and Italic font code as you type.
    -GUI changes - menus rearranged and other details
    -Added commands:
        .locktext                    Remotely locks the chat window.
        90 _________________________________________________
        .giveup / .op                Passes ops to the specified user
        .readfile                    Reads the specified textfile. More info in the readme.
        .chpw -arguments-            Channel passwording commands - see the Readme
        .idlebans/.ib -arguments-    IdleBan commands - see the Readme
        80 _________________________________________________
        .koy on/off                  Enables or disables kick-on-yell.
        .plugban on/off/status       Enables or disables PlugBans.
        .d2levelban -argument-       Enables, disables, or alters Diablo II levelbans.
        60 _________________________________________________
        .tagcheck -username-         Returns the tagbans that a username matches.
        .d2levelbans                 With 60 access, returns current D2 levelban settings.
        50 _________________________________________________
        .vote -seconds-              Starts a vote lasting the requested # seconds.
        .voteban -username-          Starts a voteban of the specified user.
        .votekick -username-         Starts a votekick of the specified user.
        .tally                       Displays the current vote results
        .cancel                      Forces a vote to end prematurely.
        .info -username-             Retrieves recorded information on the specified user.
                                         [Username, ping time, time in channel]
        .scq                         Silent clear-queue.

Version 2.2


    - Safelist deletion functions properly
    - Phrasebans function properly
    - Deleted filters now save
        These three errors were tied to changes in their retrieval method.
    - The example hash file path now displays correctly for all gametypes.
    - Logs are now correctly saved.
    - Channel ops are no longer redisplayed when unsquelching.
    - The .banned command now returns properly.
    - The .cmdlist command no longer causes IPbans.
    - Account creation when using hashes now functions properly.
    - Diablo I statstrings are parsed correctly.
    - Warcraft III and Frozen Throne statstrings are now parsed correctly.
    - Added the Frozen Throne channel list icon.
    - The Default-color button has been reworked and functions correctly.
    - Bots no longer respond to properly-formed multiple-command queries.
    - The user monitor has been significantly rewritten and functions much better.
    - Users are no longer continuously re-added to the userlist when in The Void.

    - Reenabled support for Warcraft III and added support for The Frozen Throne logins and account creation.
    - Warcraft III clan names are now displayed in the userlist mouseover information.
    - Queue messages are now prioritized so important /messages are sent first.
    - Custom Commands no longer cause minimization of games.
    - Added the /cls in bot command, equivalent to clicking "Clear Chat Window".
    - You can now override the automatic join/leave message deactivation during rejoin flooding.
    - Added the .del alias for .rem.
    - Added account info lookups on connect (Account create date/time, last logon/logoff, time logged)
        * The in-bot command "/accountinfo" can be used at any time to look this information up.
    - The .mail command now requires only 20 access, and .online 50.
    - Added support for flags in access.
    - Added support for Starcraft "ÁX" color codes, and improved D2 color code support (thanks c0ol)
    - Added %quote and %rnd arguments to idle messages.
    - Added a "Get Warcraft III Clan List" feature in the Bot menu that retrieves the current clan member
        list and displays it, clan functions such as promotion/demotion can be performed from this screen.
    - Added stats lookups for various games to the channel list right-click menu.
    - EFP's code has been moved under the parsing layer for an extra millisecond or two in banning.
    - Added icon support for The Frozen Throne.
    - Added commands:
        .loadwinamp               Loads Winamp using its default path or one specified in config.ini.
        .allowmp3 (toggle)        Enables/disables MP3 commands.
        90 _________________________________________________
        .cs -channelname-         Squelches everyone in the specified channel. Alias "sweepignore".
        .cb -channelname-         Bans everyone in the specified channel. Alias "sweepban".
        .setmotd -message-        Sets the Warcraft III Clan Message of the Day.
        .invite -username-        Invites a user to join your Warcraft III clan.
        .clan -private/public-    Changes the status of your Warcraft III Clan channel.
        .peonban on/off/status    Changes/verifies the status of peon banning.
        70 _________________________________________________
        .notify -username-        Displays a public message when the specified user signs on.
        .denotify -user-          Disables notification of a specified user's signons.
        50 _________________________________________________
        .expand                   Adds spaces between each character of a phrase.
        40 _________________________________________________
        .getping, .pingme         Displays the user's ping at login.
        20 _________________________________________________
        .flip                     Flips a coin. (Requested feature)
        -0 _________________________________________________
        .findattr, .findflag      Displays users with a specified flag.

Version 2.2 Revision 4


    - Infinite loop bug that would crash the bot when improper color codes were used is fixed.
    - IPbans resulting from profile writing (including ProfileAmp) have been repaired.
    - The NSIS installer functions properly.
    - The custom command GUI no longer erases CC contents when clicking the 'NEW' button.
    - Runtime error '5' on login has been repaired. This happened in a rare set of circumstances. (Thanks AC0)
    - Custom commands using /bnet commands (such as /whisper) now function properly.
    - The 'lag plug' option now functions properly.

Version 2.2 Revision 7


    - Fixed a runtime error when readfile was given a directory to read. *cough*
    - AllowMP3 now controls the back command
    - Fixed a bug that removed the selection from the Warcraft III Frozen Throne product option
    - Fixed a bug that caused the bot to send blank messages and effectively deactivate the message queue
    - Fixed a bug that allowed users with any access level to use the sweepban command
    - The sweep-ban and -squelch commands now append a * when the bot is on Diablo II
    - Kick-on-yell now properly kicks when the bot is on Diablo II
    - Really fixed the UDP plug (lag plug)
    - Repaired a bug which allowed users with -0 access to use the cmdadd command
    - The Leave Clan button now functions as it should

    - Added a hotkey-based channel list navigation system:    (Thanks Alkoholik)
        ALT+PgUp and ALT+PgDn move up and down
        ALT+Home and ALT+End move to the start and end of the list, respectively
        ALT+Insert adds the selected person's name to the send chatbox
        (Your cursor will remain in the send box during any of these hotkey movements.)
     The system has not been extensively tested. Send me your thoughts! :)

    - EFP now acquires 'HIGH' RAM process priority while enabled for improved performance.
    - Updated Diablo II statstring parsing to account for the 1.10 patch (Thanks UserLoser)
    - Updated Diablo II version bytes to account for the 1.10 patch
    - Added an option under the Window menu to flash the chat window on events 
        (talk, join, leave, emote, whisper) - Thanks Alkoholik
    A dmin
    B anned
    D esignated
    L ocked
    S afelisted
    Z agbanned

Version 2.3


    - Fixed several internal typos
    - Repaired several bad tooltips in Settings (thanks Kaiba[nT])
    - Users can no longer change the access of users with higher access than their own (thanks Alkiller)
    - Fixed a subscript error when the user tried to turn notifications 
        on for a person not on their user monitor (thanks Eddy90)
    - Quote reading will no longer fail under a specific set of circumstances (thanks sKiLzRuLz)
    - Kick-on-yell now works properly when the bot is on Diablo II
    - The 'op' alias for 'giveup' works properly
    - Fixed a queue bug that dropped a high percentage of messages when sending large amounts of info
        (such as reading files or banning large numbers of bots)
    - The .vote command can no longer overflow (thanks Dave(CT))
    - User monitor removes work properly (thanks Alchav)
    - The .readfile command cannot cause a runtime error when : is used in the filename (thanks C2Talon)

    - Flags.ini is now access.ini and covers both custom flags and custom numeric access levels - more in the readme
    - Ping spoofing is now allowed using BNLS connections (no more greyed-out option buttons)
    - The /mail command, when used from inside the bot, echoes to so Blizzard's mail system can be used
    - EFP now pulls all possible safelisted users into a single array, eliminating duplicates, for speed purposes
    - Slight changes to the Step-By-Step Configuration system
    - Slight changes to the User Manager gui, and it's now called the Database Manager
    - Added config-only support for disabling autorejoin, or moving to a backup channel, more info in the readme
    - Added config-only support for remote userlist/safelist/shitlist sharing, more info in the readme
    - Option to ignore Warcraft III clan invitations to guard against users flooding with them (thanks Barumonk)
    - Tagbans now support custom messages
    - Added greet message variables %a and %f, which resolve to the joinee's access and flags respectively
    - Reverted the Custom Command editor to its 2.1 status
    - The ping scale has been slightly adjusted (thanks PhoenixRevived / Retard)
    - Removed bad shell commands that caused 'File Not Found' messages when opening the readme/changelog
    - Unified form fonts (all Tahoma)
    - If it's on Warcraft III, the bot will automatically detect attempts to add users with @Realm on them and remove the @Realm
    - Starcraft color parsing now supports the teal aliases T, U and V; D2 color parsing supports ÿC: (thanks C2Talon)
    - *** IMPORTANT *** The 'D' built-in flag now designates AND resigns! Use with caution
    - Added commands:
    .setkey / .setexpkey    Changes the current cdkey or LOD/Expansion cdkey
    .eval (expression)      Evaluates a single-line VBScript expression. Can be used to perform
                                basic math: .eval (sqr(37) * 4) ^ 43

Version 2.4

This version was released on April 24, 2004.


    - Loading a script.txt file with invalid syntax in it no longer crashes the bot (thanks R.a.B.B.i.T)
    - The bot will no longer greet users who are banned on join for any reason (thanks Gen.liQuid.Ace)
    - Fixed D2 compatibility for the channel list right-click menu
    - %rest works. Really.
    - Logging will now stay at zero logging when so instructed
    - Fixed runtime error '458' connected to phrasebans
    - Erasing all filters now actually erases them, as opposed to doing nothing
    - Fixed a runtime error when sizing a detached channel list too small
    - Fixed caught phrase HTML output
    - Quotes work, and their code has been streamlined
    - Fixed some safelist issues
    - Updated Warcraft III statstring parsing to properly handle Frozen Throne icons

    - The .expand command can no longer return more than 220 characters
    - The .add and .vote commands can no longer overflow
    - The .away command now works properly
    - Quotes function properly now
    - Fixed Runtime Error '9' when activating EFP with an empty or nonexistent safelist
    - ".levelban off" now actually deactivates levelbans (thanks Stealth_Tech)
    - The shout command will no longer whisper back
    - The .online command's responses will be fully whispered back (thanks Rob)
    - The .designate command no longer works unless the bot has ops (thanks Drk)
    - Custom commands can now use "_call script_subroutine" to talk to the Scripting system

    - Fixed a potential .readfile exploit (thanks Skywing[vL])
    - Fixed a nasty access exploit resulting from Microsoft's wonderfully useless IsNumeric() function (thanks BaZ)
    - Access can no longer be set through users.txt over 999
    - Applied hardcoded prevention against .ver being designated as a 0-access command

    - Fixed some readme.htm typos / grammatical errors (thanks Swent]DS)
    - You can now use /clan commands from within the bot, such as /clan mail
    - The confirmation for removing users from a Warcraft III clan now displays yes/no (thanks Alchav)
    - Fixed the Profile window color schemes so they display consistently independent of Windows settings (thanks R.a.B.B.i.T)
    - Fixed icon and current channel display on detached channel lists

   E-mail registration
    - Added support for e-mail registration in Diablo II and Warcraft III (including expansions)

   System Tray Icon
    - The format of the tray icon tooltip has been changed to be more useful
    - The tray icon tooltip refreshes itself on disconnect/logon
    - The tray icon will now redraw after an Explorer crash

   Diablo II Support
    - Reenabled Diablo II Realm logins
    - Added a shiny UI for Realm character selection
    - When using Diablo II, the bot now adds * to usernames automatically when using /w or /m

   Bot Interface
    - Added "Shitlist" and "Safelist" to the channel list right-click menu
    - Reorganized the channel list right-click menu
    - The profile description window now supports SC and D2 color codes
    - Added an option to the Settings menu allowing UTF-8 encoding/decoding of sent/recieved text (for non-English users)
    - Added username autocompletion
        - Typing part of someone's name followed by a comma or colon attempts to autocomplete the name from users in the channel
        - Supports wildcards
        - Activates only if 4+ letters are present
    - Added support for the Á@ "invisible" SC color code (displayed as blue, thanks R.a.B.B.i.T)
    - Added a StealthBot News service that will inform you of important StealthBot-related stuff when the bot starts, and checks to see if your program is up-to-date (this can be disabled)
    - Added an option to use millisecond timestamps
    - The Send combobox operates more efficiently
    - Added a new cdkey manager system for the Settings dialog
    - Fonts throughout the bot are uniform (Tahoma)
    - Added an option to disable "void view" (the bot's attempt to see users in the Void)
    - Added an option to minimize to the taskbar (instead of the system tray)
    - Added the ability to retrieve Warcraft III Web profiles through the channel list rightclick menu
    - Added the ability to invite Warcraft III users to a Warcraft III clan through the channel list rightclick menu
    - Revamped the Step-By-Step configuration GUI and code

   Under the Hood
    - Now using a new, cleaner system for recieving packets (thanks CupHead[vL])
    - Users can no longer remove those at equal access -- more is required
    - Whispering works with multiple command queries (.command; command) (thanks Ants)
    - Added error checking code for the .add and .cmdadd commands (thanks SoulReaper)
    - Improved Winamp song title retrieval to work with scrolling song titles
    - Wrote a new class to handle incoming clan packets
    - The L flag is no longer ignored when removing users from the bot
    - The bot now logs in smoothly after creating an account successfully
    - Added a config-only option to allow you to force the bot to hash your password case sensitively
    - Added SOCKS4/SOCKS5 proxy support (thanks Kev1n, HacKe, and c0Ld for test proxies)
    - Added CRC32-based hex protection (thanks sneakcharm)
    - Added a much-requested user-specified delay between reconnects (default is 1000ms)

   User-Customizable Stuff
    - Added the %t and %d variables, Time and Date respectively (thanks R.a.B.B.i.T)
    - The %t, %d, %a, and %f greet/idle variables are now reported correctly (thanks Alchav)
    - Various changes to the scripting system, they are listed in ScriptSupportClass.txt

   Command-Related Stuff
    - Clan tags can now be tagbanned (.tagban TAG)
    - Responses of commands that were whispered to the bot will now be whispered back
    - Added commands:
        .clearbanlist / .cbl    Clears the list of banned users
        .c pub / .c priv        Sets the clan privacy status (same as .clan public / .clan public)
        .exile -username-       Shitlists and IPbans the specified username
        .unexile -username-     Reverses the effects of .exile
        .where                  Whispers back the bot's current channel (thanks bLiNk)

Script Support Class changelog:

    (version 2.4, scripting system build 17)
    - The Event_ChannelJoin scripted subroutine is now usable (thanks -)(nsane-)
    - Exposed a MSINET control to the Scripting system, for use in script-to-website
    - Added the #include keyword for script files -- more information is in script.txt
    - Added the MonitoredUserIsOnline() function
    - The Level variable is now properly passed to the script control
    - Added scripting events:
        > ServerError messages
        > PressedEnter
    - The script control class now has access to GetTickCount and Beep API calls
        and has been improved based on user requests
    - Added the Match, DoReplace, DoBeep and GetGTC functions
    - Added the myChannel, BotFlags and myUsername publicly accessible variables
    - Added the _KeyReturn() event, for processing profile keys returned from the server
    - Added the RequestUserProfile() method, for requesting any user's profile
    - Added the SetBotProfile() method, for setting the bot's current profile
    - Added the Event_Close() event, which executes on Form_Unload()
    - Event_Load() is now called when you reload the script.txt file
    - Added the OriginalStatstring variable to Event_Join(). It contains the unparsed statstring of the joining user

Version 2.4 Revision 2


    - The Password field in Setup no longer has a max length of 12 (thanks LeViaThoN)
    - The detached-channel-list label forecolor is now white instead of black
    - Fixed a runtime error '9' caused by joining the void and right-clicking on a username (thanks
    - Idle message type changes now save correctly
    - Step-by-step configuration now saves the selected gametype properly

   Under the Hood
    - Repaired runtime errors 9 and 13 in parsing code that created an "exploit" used to crash the bot (thanks KoRe)
    - The %cpuup variable is now processed before the %c variable so they display correctly
    - The %a variable now displays 0 for zero-access users instead of -1
    - The Warcraft III clan list can no longer be retrieved by users not in a clan
    - Pressing disconnect during repeated connection attempts will now actually stop them
    - Fixed a bug related to Disable Void View    
    - "Get Warcraft III Web Profile" now works correctly under all circumstances
    - CDKeys entered directly into Settings will now have "-" and " " removed    
    - Color and font options in Settings now properly save and load
    - Fixed a runtime error '62' when loading a broken quickchannels.txt file
    - The Nagle Algorithm is no longer activated during the login sequence to improve speed and better imitate Blizzard's clients (thanks LoRd[nK])
    - EFP no longer sends two bans at a time
    - Temporary fix for runtime error '6' on Unicode-based systems (Chinese, Korean)
    - Will now rejoin the channel when kicked if no backup is specified
    - Attempted a fix for runtime error '91' - let me know how it works
    - Attempted a fix for included scripts not working properly - let me know how it works

    - The Starcraft/Brood War version byte has been updated to account for the 1.11 patch
    - Now supporting stat update messages
    - Added a few command line arguments

    - Added an option to open the bot's folder under the Settings -- Edit Files submenu
    - Blizzard representatives now speak in blue text with blue carats around their name

Script Support Class changelog:

    (version 2.4R2, scripting system build 18)
    - AddChat now loops from 0 to ubound, which is correct. (Thanks Imhotep[Nu])
    - Added the ReloadSettings function
    - The Event_Close() sub is called when a user reloads the config
    - Fixed the signature for Event_KeyPress in script.txt (should be Event_PressedEnter)
    - Added Event_UserInChannel()
    - Clarified how #include works in script.txt

Version 2.5

This version was released on September 12, 2004.


    - Empty lines are no longer added to the screen when reloading script files
    - Color setting changes are now handled properly
    - Fixed the .online command response
    - Fixed a minor bug with Step-By-Step Configuration
    - Added code to prevent abuse of the rich textbox's RTF formatting
    - Fixed a bug in the User Manager which erroneously added CrLfs to the listbox (thanks BioWaRIII)

   Under the Hood
    - The .giveup / .op command now handles Diablo II correctly
    - The safelist is now handled properly - a code mistake caused it to be processed incorrectly
    - Quotes can no longer be used to send commands (thanks Unit3000-21)
    - The .cs and .cb commands no longer send an excess message to
    - Improved performance in The Void
    - The .allseen command has been fixed
    - Responses to SID_CHANGERANK are now handled properly
    - Fixed an error when handling WCG statstrings
    - Ping spoofing now functions correctly
    - The rejoin command now adheres to flood protection
    - A change to the way SB connects to the Diablo II Realms should fix login problems on USWest and Europe (thanks UserLoser)
    - The ignore command now properly checks access
    - Fixed a couple safelist-related bugs

    - Tooltips in the channel list are much more helpful
    - Added a new closable Whisper Window system to track whispers
    - Added optional IM-style individual whisper windows (toggle on the Window menu)
    - Added a new 3-pane information window system that lets you see:
        - Your realtime clan list including online status,
        - Your realtime friends' list,
        - And, of course, the channel list
    - The channel list now displays Warcraft III icons, as in the actual game
    - The detached channel list has officially kicked the bucket. Sorry to anyone who used it
    - Added URL highlighting, double-click to launch (thanks LordNevar)
    - The bot will now remember its size and position
    - The /r and /rw (reply and rewhisper) system has changed to prevent accidental /r's
    - Added typing shortcuts:
        - CTRL+ENTER: rewhisper
            text in the send box is sent to the last person you sent a whisper to
        - SHIFT+ENTER: reply
            text in the send box is sent to the last person who whispered you
    - The autocompletion system has been revamped:
        - Part of the suggested user's name will be displayed, highlighted, as you type
        - You can choose to continue typing or press ENTER, which will accept the currently visible name
    - The Settings dialog will now display the last panel you had selected
    - Added WCG Player and Referee icons
    - Added Diablo II Realm character expiration date display (thanks UserLoser)
    - Realm characters that are expired will now come up in red text
    - New splash screen thanks to LW-KillBound

   Under the Hood
    - Now providing more detailed script control error messages (thanks Kirby)
    - Changed massive dynamic array information storage system to a cleaner collection
    - Revamped large portions of internal code
    - Added an option to kick idle users instead of banning them, see below
    - Added partial iTunes control support (.useitunes to activate, .usewinamp to deactivate
    - No longer using Subclass.ocx
    - Now correctly loading #included script files
    - Recoded the mail system
    - Added "%m" greet message variable - number of undelivered mail messages
    - Now handling the 0x0F response to the Warcraft III packet 0x54 - thanks Spht and UserLoser via Yoni[vL]
    - Catch phrases will now flash the window unless told not to via SilentCatchPhrases=Y
    - EFP now disables the Nagle algorithm while in effect, saving time - thanks LoRd[nK]
    - Changes to the scripting system, listed in ScriptSupportClass.txt
    - Added an always-on ban queue efficiency check to prevent multiple bans
    - Added a configurable autofilter system that ignores text sent within X ms of a person joining (default 300ms)
    - Added support for 0x76 "You have been removed from the clan" packet (thanks UserLoser)
    - More advanced system for handling Winsock errors (thanks LoRd[nK] and others)
    - Tweaked functionality of Ban Evasion (thanks The-FooL)

    - Creating a servers.txt file in the bot's directory will add server addresses in it to the list in Settings
    - The /mail command, internally, has been renamed to /bmail to avoid confusion with the command
    - Users can now specify an alternate BNLS server by adding AlternateBNLSServer= to the Main section of config.ini
    - Modified the CDKey Manager to clean up after itself better

   New Commands
    - .useitunes                 : 80 : Causes play, stop, next, back/prev, and pause commands to talk to iTunes instead of Winamp.
    - .usewinamp                 : 80 : Reverts the aforementioned commands to Winamp control.
    - .roll -number-             : 20 : Selects a random number between 0 and -number-.
    - .idle kick on/off               : Toggles the idle kick feature
    - .mmail -flag(s)- -message- : 70 : mass-mail to users with the -flag(s)- the -message-
    - .mmail -access- -message-  : 70 : mass-mail to users with the -access- the -message-
    - .ign -username-            : 50 : alias for .ignore

Script Support Class changelog:

    (version 2.5, scripting system build 19)
    - Command() now returns the command response string (requested)
    - New SSC function GetInternalData(sUser, lDataType) - see the function in this file for details
    - New SSC function IsShitlisted()
    - New SSC function PadQueue() added

Version 2.6

This version was released on February 22, 2005.


   Security Fixes
    - Fixed a serious security problem that could allow a malicious user to gain Admin status on the bot (thanks Impossible[gT])
    - Fixed a security issue related to the say command (thanks impossible[CT])
    - Fixed a security issue where a command requiring -=1 access could reconnect the bot (thanks Kirby and others)
    - Specially-crafted profiles no longer throw the bot into an infinite loop or crash it (thanks wolf-shinobi)

   Runtime Errors
    - Fixed a runtime error 9 caused by a misclick in the Settings panel (thanks Kirby)
    - Fixed a runtime error 451 caused by the .info command (thanks R.a.B.B.i.T)
    - Fixed a runtime error 6 caused by abusing the .roll command
    - Fixed a runtime error 91 in the chat filters window (thanks Blaze and deadly7)

   Interface Fixes
    - Fixed some minor glitches (thanks Draelren, ArchAngel and others)
    - Corrected a bug with the Individual Whisper Windows (thanks God_Of_Slayers)
    - Get Stats options in the rightclick menu now function properly under Diablo II (thanks InternationaL)
    - Fixed a separate minor bug involving right-click stats on Diablo II (thanks Blaze)
    - Squelching and unsquelching channel operators no longer dumps them to the bottom of the list
    - Usernames under "watch" status now properly appear red when speaking
    - Substantial code changes to fix the Custom Command Editor (finally)
    - Added code to prevent the bot from coming up very small due to bad position data

   Built-In and Custom Command Fixes
    - The %0 argument in Custom Commands now works properly (thanks Kirby)
    - Arguments numbered higher than 9 now work properly
    - Fixed a minor bug involving the safelist command's output (thanks IA-Lantoka)
    - Fixed the .away command
    - The .reconnect command no longer sends extra text to (thanks Kirby)
    - The cmddel command will no longer always respond the same way (thanks IronEye)
    - Custom commands that use commands such as /me now work properly
    - You can no longer make blank custom commands (thanks babs57)
    - You can no longer make two custom commands with the same name (thanks babs57)
    - Fixed a clan invitation response message (thanks JoeTheOdd)
    - The .mmail command no longer sends mail incorrectly (thanks BinaryDigit)
    - .protect on/off status is now properly written to disk when the command is used (thanks blckshdwdragon)
    - Fixed a bug with the .add command when using it to modify access (thanks Helpfiles)
    - Fixed a bug involving .idle kick on/off

   General Fixes
    - Whispers are now properly forwarded under Diablo II (thanks CyberMew)
    - Fixed Ban Evasion, it now works as intended
    - Fixed the timezone bias reported to so that /time now displays the correct time (thanks HdxBmx27)
    - Corrected a bug with the Color Settings panel that would screw up values (thanks Quik)
    - Fixed a bug involving the User Monitor

    - Added highlighting autocompletion for the second word, ie /w user[name-suggested] (thanks InternationaL)
    - A warning message is displayed when using proxies to connect to a server that requires DNS resolution
    - Added an option to disable username autocompletion in the General Interface settings panel
    - Channel list tooltips now display a more detailed description of what a user's flags mean
    - Highlighting text in the Whisper Box copies it to the clipboard (thanks JoeTheOdd)
    - Added a delay to the Accept Clan Invitation dialog to prevent accidental action (thanks Blaze)
    - Added a length limit to the right and left send boxes (thanks God_Of_Slayers)
    - Usernames are now colored in the channel list, which you can turn off in the Interface Settings panel:
        -- White: Self
        -- Gray: Idle for - 10 minutes (or whatever other value you set)
        -- Light gray: Channel operator
        -- Dark red: Squelched
        -- Blue: Blizzard representative
        [thanks to FlaW for this suggestion]
    - Added PGTour rank icons for compatibility with their private server (thanks Pat)
    - Applied message autofiltering settings to whispered messages
    - Made usernames in the Friends' List and Clan List doubleclickable (thanks Imhotep[Nu])

   Under the Hood
    - Removed the limit on the length of anti-idle messages, they will still be governed by message size limits
    - Incoming whispers are now checked against the username and message content filters
    - Added the %bc idle/greet message/custom command variable, for the current ban count (thanks 111787)
    - Tweaked the Kick On Yell processing code for accuracy
    - Switched to a higher-resolution method of retrieving system uptime
        -- This removes both the 24- and 49-day limits with the old method

Script Support Class changelog:

    (version 2.6, scripting system build 20)
    - Exposed the entire internal bot variable class to the scripting system
        clsBotVars.txt shows you what you can access, BotVars.varName
        Suggested by Imhotep[Nu]
    - Fixed the MonitoredUserIsOnline() function (thanks Cnegurozka)
    - Added BotPath function (thanks werehamster)
    - Added IsOnline function (thanks Xelloss)
    - Added Sleep function (thanks Imhotep[Nu])
    - Added GetPositionByName function (thanks werehamster)
    - Added GetNameByPosition function (thanks werehamster)
    - Added GetBotVersion function (thanks Imhotep[Nu])
    - Changed the ReloadSettings function (thanks Imhotep[Nu])
    - New scripting event: Event_LoggedOff() (thanks Imhotep[Nu])
    - Added Connect() and Disconnect() functions (thanks Imhotep[Nu])
    - Added BotClose() function (thanks Imhotep[Nu])
    - Changed GetInternalData() function and added GetInternalDataByUsername() function
    - Added GetInternalUserCount() function
    - Added Event_ChannelLeave() function (request of Imhotep[Nu])
    - Added GetConfigEntry() and WriteConfigEntry() functions
    - Added PrintURLToFile() function (thanks SoCxFiftyToo)
    - Added VetoThisMessage() function -- use in Event_PressedEnter to prevent the
        message in the event's arguments from being sent to

Version 2.6 Revision 3

This version was released on April 19, 2005.

Due to's additions of lockdown, warden, and normal game patches while StealthBot stopped being updated by Stealth, who became more and more busy, StealthBot lost popularity and usability over time.

Since Stealth was not around to compile fixes, version check failed became the infamous error of StealthBot. "Critical updates" were created by Eric to accommodate some patches. Later, separate EXEs for SC/WC2 and D2/WC3 were by Hdx to allow users to connect through the various difficulties normal patches provided. Users had to use BNLS since the bot had no lockdown version check support.

After warden was introduced, Hdx eventually made a work-around proxy server that ran locally and allowed 2.6 to use Hdx's DLL to pass the warden checks, transparent to the program itself.


    - Fixed a CRITICAL exploit requiring me to disable version 2.6 and its predecessors entirely
    The exploit allowed for:
        - Private user information disclosure (Username/Password/CDKey and other configuration values)
        - Complete command access
        Technical details regarding this exploit can be attained by contacting me directly [email protected]

   Runtime Errors
    - Fixed a runtime error 35600 caused by the anti-idle system (thanks various)
    - Fixed a runtime error 40060 caused by the user monitor system (thanks HdxBmx, MetaLMilitiA, jwensley2)

   Under the Hood
    - Fixed a bug preventing .channelban and .channelsquelch (cb/cs) from working on Diablo II (thanks Undeference)
    - Fixed a problem with the .unmonitor command (thanks Cnegurozka)    
    - Fixed a bug causing Channel Passwording to ban everyone (thanks RaGnArOkY)
    - Fixed a couple settings that weren't saving properly (thanks MetaLMilitiA)

   Built-In and Custom Commands
    - Fixed a problem with the .settrigger command (thanks Death_Gimli)
    - Fixed a problem with the Custom Command system variables (thanks various)
    - Fixed the .where command so it works properly (thanks imgoingtokill)

    - Pressing F1 no longer brings up the Help dialog (thanks Sikas)
    - "Restore Default Colors" works properly (thanks sray290)
    - You can no longer send text to during the connection sequence (thanks l)a-Sniper)
    - CTRL+ENTER no longer makes a ding noise (thanks Quik)

    - Minor interface fixes (thanks 1+3+3=7 and others)
    - Underline (ÿcu) works properly now (thanks CrAz3D)

    - Added a "Clear Whisper Window" option to the Window menu (thanks Quik)
    - You no longer have the option to create Expansion realm characters when connected
          with Diablo II (thanks ArchAngel)
    - Now using the BNCSUtil library for local hashing -- BNCSUtil is open-source and
          available at
    - Added support for Warcraft III and Frozen Throne connections via Local Hashing

Script Support Class changelog:

    (version 2.6R3, scripting system build 21)
    - GetNameByPosition() boundary checks fixed (thanks Scio)

Version 2.7 Betas

Beta releases for 2.7 saw the addition of several members to the development team. Several delays in the release of StealthBot 2.7 have made it the longest anticipated release in StealthBot's history.

An extensive number of betas were built during the development of 2.7. Sporting names like "v2.691", "v2.6995", "v2.6999 Development Release 10", to "v2.7 - Build 200", the innumerable releases varied in stability and just about everything else.

Version 2.7

This version was released on October 7, 2009, which is almost 4.5 years after the last release!

This release is filled with extensive changes including the addition of many objects to make scripting more powerful (thanks to Eric), to more controllable BNLS server settings (a necessity since is down), to an uncountable number of internal changes and bug fixes (specifically in how the bot does version checking which allows future updates without requiring new versions; it supports lockdown and warden through Hdx's DLL).

After release, this wiki was released and has slowly become a comprehensive repository for how to use the many parts of StealthBot and

Changelog (incomplete):

   - A new, detailed StealthBot Wiki is available online at

    - Retain, for his efforts regarding the Diablo II Realm situation
    - MOD-PHOENIX (PhiX) for his endless (and bilingual!) help on our Tech Support boards
    - Hdx, for his help with a number of things, including writing SBFix to get StealthBot
        online during some of Blizzard's changes
    - Quake)aS( created the bot's shiny new splash screen

    - Fixed some technical wording errors (thanks Networks and others)
    - Fixed a code error causing the BNLS version-byte report to be ignored
    - Fixed or clarified some messages (thanks various)
    - Fixed an unclear error message when creating accounts with invalid characters
    - Rewrote code that would cause random quote selection to fail (thanks Jack)
    - Fixed Diablo II/LoD Realm connections
    - The bot will now erase profiles properly
    - Fixed a bug that could improperly represent some ClientBans (thanks Michichael)
    - Fixed the method used by the bot to extract MPQ revision numbers
         - this counteracts a change on 9/12/06 that changed the MPQ filenames
    - Your script file will be loaded properly when the DisableSBNews config.ini hack 
         is used (thanks Jack)
    - Warcraft III Clan invitations no longer crash the bot on Windows 95/98 computers
         (thanks various)
    - Cleaned up parts of the packet handler to avoid odd parsing errors
    - Fixed a queue glitch that would occasionally cause messages to come out
         in the wrong order
    - Messages your bot sends containing UTF8-encoded characters will now appear correctly
         on Blizzard clients
    - Server info and error messages, and channel names, will now be properly UTF8-decoded (thanks Jack)
    - Now UTF8-decoding emotes (thanks various)

    - Whispers and emotes will now be UTF8 decoded (thanks Razko)
    - The system tray menu will now close when you click off of it (thanks LeoXavior)
    - Fixed a crash that happened when you closed the bot using Exit
        from the menu in the system tray (thanks various)
    - Fixed a crash occurring from pressing ALT+END while disconnected (thanks Michichael)
    - Fixed a problem with the Chat Filters interface (thanks Jack)
    - Fixed a runtime error 5 when using the /help command (thanks Pr0pheT)
    - Fixed a glitch where the system tray icon tooltip could be incorrect (thanks Jack)
    - Fixed a minor glitch where anything starting with /w in the send box
        was autocompleted (thanks Raylu)
    - Fixed some statstring parsing that caused Diablo and Diabo Shareware people to
        appear unknown
    - Fixed a minor glitch in Settings (thanks LuC1Fr)
    - Clicking Cancel in the QuickChannel editor no longer saves your changes (thanks Fiend)
    - Fixed a bug that prevented you from seeing text from invisible users such as sysops
    - The reply features will no longer override 5-letter commands starting with 'r' (thanks Jack)
    - Individual Whisper Windows now work properly under Diablo II (thanks Retain)
    - Individual Whisper Windows now display messages sent through them while the main bot is
        minimized (thanks ZergMasterI)
    - Individual Whisper Windows will no longer steal focus from each other (thanks Retain)
    - You can no longer create more than 8 characters to a Diablo II Realm account
    - You can no longer get a second line in the CD-key Manager interface (thanks Snap)
    - The CD-key Manager now works properly when adding multiple keys at a time (thanks Snap)
    - Outbound filters are now properly applied to messages with a / at their start (thanks LuC1Fr)
    - The prepend and append boxes are now properly applied to messages starting with / (thanks Sixen)
    - SysOps should now have their icons displayed correctly, and receive the
        signature blue Blizzard text (thanks Sixen)
    - Right-clicking on the Clan list while the bot is maximized no longer resizes it (thanks Sixen)
    - You can no longer send messages over 225 characters by repeatedly double-clicking a name
        in the channel (thanks FrostWraith)
    - Improved channel list accuracy in the Void
    - The "Lag Plug" setting is no longer available to Diablo II and Warcraft III connections
        (those games don't allow you to reject UDP packets, thanks Imhotep[Nu])
    - Double-clicking a name will now insert it at your cursor or overwrite any selected text in the send box
        (provided that text was selected using any method but click-and-drag)
    - When mimicking users it will no longer appear as though you spoke before they did (thanks Jack)

    - Channel ban and channel squelch on Diablo II now work properly (thanks Undeference, Retain)
    - Channel ban will now properly check the safelist (thanks Hdx)
    - Fixed a bug with wildcard database searches (thanks various)
    - Fixed the channelban and channelsquelch commands (thanks various)
    - Fixed a bug with the .findattr command (thanks lemonhead)
    - Adding filters with the /filter -msg- or blocking with the /block -user- commands will update
        properly now (thanks Retain)
    - Fixed a bug causing variables to be improperly processed in custom commands (thanks Hdx)
    - Now properly truncating quotes spit out using the .quote command (thanks Jack)
    - Fixed a bug requiring you to create a users.txt file before adding users (thanks various)
    - Fixed a bug where the .levelban and .d2levelban commands were not being recorded properly
        (thanks Michichael and Retain)
    - New alias for .lastwhisper: .lw
    - You can no longer ipban safelisted people or people with more access than you, including
        those with just an A flag (thanks Retain)
    - Improved documentation for some aliases and commands on the new readme page
    - Improved response on the Winamp Jump to File command (.play songtitle)
        - Winamp 5.2 changed something in the Jump to File dialog that I have corrected
        - Winamp 5.3 made further changes that require a delay when sending text to that dialog
        - thanks, various
    - Using the .profile command with Whisper Command Responses turned on will now properly
        whisper the speaker (thanks Imhotep[Nu])
    - The /time command used from inside the bot no longer sends a redundant /time to
        (thanks Jack)

    - Fixed a serious security issue involving the custom command processor (thanks various)
    - Added code to prevent people from abusing quirks to ban safelisted users (thanks various)
    - Fixed a security issue involving specially-crafted input to the readfile command (thanks Fiend(KIP))
    - Fixed a security issue related to the one mentioned above (thanks also Fiend(KIP))
    - You can no longer use the readfile command with any .ini file

    - New, more-informative news system
    - The bot database now tracks the following information about each person:
        - Time/date they were added, and by whom
        - Time/date they were last modified, and by whom
        - Use the .dbd / .detail command to get these details out of the bot
    - Improved support for non-standards-compliant SOCKS4 proxies (thanks Raylu)
    - Added support for custom JBLS server messages
    - Tab characters pasted into the text box are translated into spaces
    - Warcraft III Clan traffic from is now ignored unless the bot is on Warcraft III
    - Ban Evasion can now be turned off in the Moderation Settings panel
    - The bot can now check for new version bytes using an option in the Bot menu
        - The version bytes are maintained by staff and will be up to date
            fairly soon after Blizzard patches!
    - The bot will now attempt to guess new version bytes, which are changed when Blizzard patches games
    - Added support for part of Skywing's improvements to BNLS on 1/22/06
        - Namely, invalid logons detected by BNLS are now reported to the user and the bot reconnects
        - More info at
    - Log files are now stored in the format yyyy-MM-dd.txt, for easier sorting (thanks Draco)
    - Changed config.ini hacks for pointing the bot at other hash file locations, see the readme for detail
    - Now properly getting the country name data from the operating system
        - People with non-English computers should log on into their country's default channel
    - Touched up language referring to Diablo II/LoD Realm connections
    - Expanded support for error and status codes related to Diablo II/LoD Realm connections
    - The User Monitor is no more
        - In its place, a plugin designed by HdxBmx27
    - Added the -cpath command line argument, thanks Megatog615
        - -cpath yourconfig.ini will point the bot to a different config.ini file
    - Added config.ini hacks for changing the location of any list file
        - In config.ini, create a section labeled [FilePaths]
        - Each line under [FilePaths] should be the name of the file and its new path
        - For example:     users.txt=C:\Program Files\StealthBot\users2.txt
    - Updated the BNCSutil library, by Eric Naeseth: 
    - The bot now ships with logging turned off by default
    - When logging is turned off the bot will no longer create a \Logs\ folder in its home directory
        - (thanks Ribose)
    - Added a message received when your account has been closed by Blizzard (thanks Binaries)
    - You can no longer write to the Sex field of your user profile due to Starcraft patch 1.15

    - Added hanging indents so that long blocks of text look prettier (thanks FrOzEn)
    - Now with the option to hide ban messages in the Window menu (thanks Hdx)
    - Improved font consistency across various forms
    - Added a delay so that you can only remove one clan member every 30 seconds.
        - This prevents your clan from being disbanded by removing too many people too quickly.
        - Thanks raylu and Clan SBS
    - Added a new "Tools..." option to the Settings menu:
        - "Delete data files" removes the commands.dat and mail.dat files
        - "Restore default version bytes" flushes config.ini's stored version bytes and restores defaults
        - "Clean up mail database" purges delivered and invalid mail from your mail.dat file (thanks lemonhead)
        - "Log all StealthBot packet traffic" produces a logfile in the bot's directory of all packets in and out
            (thanks Hdx)
    - The bot will no longer try to join a QuickChannel when its hotkey is pressed if no channel is set
        - (thanks Jack)
    - The Userlist Manager now requires you to put in an access value or flags before adding a user
        - (thanks Fiend(KIP))
    - Using /rw to rewhisper your friends' list now works properly (thanks Jack)
    - Improved the QuickChannel system so that empty QuickChannels will not show,
        and switched it to an ini-file system [quickchannels.ini] (thanks various)
    - Scrolling the chat window up, then having someone talk further down it will no longer snap
        the scrollbar back to the bottom of the chat window (thanks FrOzEn)
    - Closing a box asking you to register your email address with Blizzard now is the same as
        clicking "Ask Me Later" (thanks Jack)
    - You can now delete Diablo II Realm characters by right-clicking on their portraits and choosing
        "Delete Character"
    - You can no longer log into Diablo II Expansion characters when signed on with Diablo II Classic
    - A new BNLS server selector is available under the Advanced Connection Settings section of Bot Settings
    - Incoming text is now logged immediately rather than when the chat window fills up (thanks Jack)
    - If the bot is maximized, then minimized to the system tray, it will return to a maximized state
        when brought out of the tray
    - The Clan Invitation dialog will close automatically after 30 seconds' time (thanks RoNiN)
    - The contents of all 3 chat boxes (prepend, send and append) are all sent through the
        command processor now (thanks Sixen)
    - Better support for World Cyber Games icons (thanks Joe)
    - Added the option in the Miscellaneous General Settings panel to disable the prefix and/or
        suffix boxes (thanks various)
    - Added CD key length checks (thanks Jack)

    - You can now use //command inside the bot to execute a command with console permissions,
        yet display the response to the channel instead of to your screen. For example,
        //mp3 will spit out Winamp's current song to the channel, while /mp3 will still
        display the song to your screen. This works for all commands.
    - Shitlisting another person now requires strictly greater access than them (thanks Retain)
    - Using a config.ini hack ("AutoModerationSafelistValue") you can now override the access required
        to be safe from automatic moderation features [the default is 20] (thanks Draco)
        This entry should go under [Override] in your config.ini file
    - Commands can be disabled using a new section of access.ini
        - To disable a command entirely, add an entry for it under [DisabledCommands] in access.ini
        - For example, say=1
        - Thanks, Draco
    - You can now control individual access requirements of the .say command using access.ini:
        - say=     will set the default, restricted "Username says: -message-" type that cannot be abused
        - say70=    will set the less-restricted say which will erase any leading "/" characters on -message-
        - say90=    will set the access required to use an unrestricted say
    - You can now use the variable %me when typing commands. %me will be translated to the username
        of the person executing the command. (thanks Jack)
    - Improved in-bot responses to the .pingme command (thanks Swent)
    - .shitlist is no longer an alias for .shitadd (this is for greater access.ini compatibility)
    - New alias .sl for .shitlist
    - New commands for this version:
        shuffle            requires access 80, toggles Winamp's Shuffle feature
        repeat            requires access 80, toggles Winamp's Repeat feature
        setcmdaccess -a- -b-    requires access 70, changes the required access for your custom command -a- to -b-
        findr -a- -b-        requires access 20, finds users with access between -a- and -b-
        detail -user-     requires access 60, pulls detailed information from the database about a user
                        last modified by/on, added by/on
        deldef -def-        requires access 50, erases the definition -def- that you provide (thanks Draco)
        checkmail        requires access 40, tells you whether or not you have new mail messages
        getmail            requires 0 access but will not respond at all unless you have unread mail
                        if you have unread mail, reads you the first message
        shitcheck -a-        requires access 60, tells you whether or not a given user is shitlisted or has flags of 'B'
                        alias "slcheck" (thanks Snap)

Script Support Class changelog:

    (version 2.7)
    - Ping() function renamed PingByName() to avoid variable name conflicts (thanks raylu)
    - Added GetQueueSize function (thanks 111787)
    - Added Event_MessageSent() event (thanks Snap)
    - Added Event_ClanInfo() event (thanks Jack)
        Sub Event_ClanInfo(Name, Rank, Online)
        Called once for each member of the clan - use it to fill a list of clan members
    - Fixed the method called in MonitoredUserIsOnline() (thanks Snap)
    - Added GetLastMonitorWhois() function (thanks Snap)
    - Added GetMonitorUserData() function (thanks Snap)
    - New argument in Event_UserJoins() event, thanks to Z1g0rro
        Banned will contain a boolean (TRUE = banned by the bot, FALSE = normal user)
        Add this argument at the end of the event signature
    - The message "All connections closed." will raise a ServerError message (thanks Jack)
    - Added ReloadScript() function (thanks various)
    - Added AddChatFont() function (thanks Imhotep[Nu])
    - Fixed a bug with GetInternalData() (thanks Jack)
    - Added FlashBotWindow() function (thanks LuC1Fr)
    - Fixed GetPositionByName() description (thanks J3m)
    - Added SetSCTimeout() function (thanks WoD[ActionD])
    - Added GetScriptControl() function (thanks HdxBmx)
    - Added CommandEx() function documented below (thanks Imhotep[Nu])
    - Removed the Sleep() function (thanks Draco)
    - 3() should now properly report the bot's idle time (thanks Konohamaru)
    - Fixed GetUserProfile() -- keys should now return properly to you one at a time in
        Event_KeyReturn(KeyName, KeyValue) (thanks Jack, Sinaps)
    - Added WhisperCmds to the BotVars object so you can toggle command-whisperedness
        in scripting (thanks Jack)
    - %me now works in calls to Command() (thanks Jack)
    - Added Event_FirstRun() which will execute only the first time the bot starts up
        and not on subsequent script control reloads (thanks Swent)
    - Signature change to Event_UserInChannel(): The new signature is
        Sub Event_UserInChannel(Username, Flags, Message, Ping, Product, StatUpdate)
         StatUpdate is a boolean that tells you whether or not the person is
         already in the channel and is merely having their information updated.
    - Added the following clan-related events: (thanks raylu)
        Event_ClanMemberList(Username, Rank, Online)
        Event_ClanMemberUpdate(Username, Rank, Online)
        Event_BotClanInfo(ClanTag, Rank)
    - Added an Event_Shutdown() that executes only when the bot is actually closing
        and not on script reloads (thanks Swent)
    - Added a ssc.ClearScreen() command (thanks Imhotep[Nu])
    - Added the C_Dec() function (thanks Imhotep[Nu])
    - Added the DeleteURLCache() mirror function (thanks Jack)
    - PadQueue() now inserts a blank queue message to add a delay before
        the queue's next message goes out. The old PadQueue is still
        present but has been more-accurately renamed to PadQueueCounter
         (thanks Snap)
    - SetBotProfile() no longer allows you to edit the Sex field (this is a
        Blizzard change)
    - Added GetApphInstance() which gives you the instance handle to StealthBot (thanks FrostWraith)
    - Added DoStatstringParse() which allows you to parse a statstring from GetInternalData() out
        just like the bot does (thanks Ribose)
    - Added a number of Windows API function mirrors (thanks FiftyToo)
    - Rewrote and integrated several Plugin System functions
        Dsp(), GetSetting(), SetSetting(), TimerInterval(), TimerEnabled(),
        GetTimerEnabled(), GetTimeLeft(), and GetTimerWaiting()
        Note: All integrated functions are backwards compatiable. No current calls need to be modified.
    - Added two new timer functions
        GetTimerInterval, TimeLeft()
    - Added two new functions to work with plugins
        PluginEnabled(), GetPluginEnabled()
    - Added six functions to work with the new Plugins menu
        AddMenuItem(), SetMenuItemCheck(), GetMenuItemCheck(), ToggleMenuItemCheck(),
        SetMenuItemEnabled(), and ReloadPluginMenus()
        For a more detailed explanation, see the function comments below, or visit:
    - Added new functions for creating UI forms
        CreateForm(), DestroyForm(), AddFormObject(), GetUIObject()
        For a detailed explination of each event and examples visit:
    - Added GetBotVersionNumber() function which returns only the numerical value of the bot version

Version 2.7.1

A quick bug-fixes version released 11 days after 2.7, on October 18, 2009.

Version 2.7.2

More accumulated bug fixes and slight improvements. During the year of development, development releases were made public in this topic.

Version 3.0

A rumored future version of StealthBot to be made in C# as a plugin-based bot, completely rewritten. It is unknown whether Stealth will have any involvement in this version.

See also