Welcome to StealthBot!

StealthBot is a versatile, highly-customizable Battle.net bot designed to help you chat on Battle.net and control and organize your Battle.net channel. This readme, and our website forums, will help you make the most of your new StealthBot.

This readme is compiled for version 2.6.

Be sure to check out my extensive list of thank-yous inside the bot by clicking the Help menu and choosing "About...".

- Stealth


StealthBot Readme

StealthBot Project Contributors

The following is a list of people who have donated money -- yes, their hard-earned real dollars -- to the StealthBot project. You can always find a totally up-to-date list at http://contributors.stealthbot.net.

Andrew W.
Troy R.
[Anonymous]
K(L-Pink_Floyd@USEast
IrOnMaN)DK(@USEast
Ted B.
Mike C. (Distant.Echo)
Dana L. (Ayla-Babe)
Brad N. (rokras)
ahchao (CyberMew)
Clan Combat Talon
Fernando L.
Jeff M.
JoeTheOdd
Kameron S.
NaZZaG
Joey W.
JT-Networks
James D. (InternationaL)
James (Feanor)

If you're interested in donating, visit http://support.stealthbot.net for information on how you can help. :)


Shameless Plugs

Time to shamelessly promote things I like!

> The StealthBot website! http://www.stealthbot.net
Home of StealthBot, of course. The epitome of cool. ;)

> MadzBots - http://www.madzlair.net
A great site for anything bot-related. StealthBot was born on MadzBots.

> Valhalla Legends - http://www.valhallalegends.com
Members of [vL] are responsible for much of the research behind modern Battle.net bots. They also operate the BNLS service used by StealthBot to connect.

> Blizzard Entertainment http://www.blizzard.com (and World of Warcraft)
Congratulations to Blizzard on their release of World of Warcraft. I am thoroughly addicted. Hopefully they'll keep Battle.net around for a little while longer. :)

> Mozilla Firefox http://www.getfirefox.com
Arguably the world's best web browser. For Windows and Linux - Mac people should use Safari


StealthBot Setup

StealthBot setup is pretty straightforward. When you run the bot, choose Setup under the Bot menu and fill in the necessary info on the Connection tab.

If you're new to bots, click the Step-By-Step Configuration button to ease your setup. Once you're done with that, click Apply and Close and hit the Connect button at the top of the bot. It will connect through [vL]'s BNLS system and log onto Battle.net.

Thanks to BNLS, this bot requires NO hash files, so setup is a breeze. If you choose to use hash files, they must go in folders by game code in the bot's folder. Example: logging in with Starcraft, your bot is in the C:\Program Files\StealthBot\ folder. Make a folder within that folder named "STAR" (without quotes) - hash files go here.


Adding Yourself to the Userlist (in other words, WHY WON'T IT LISTEN TO ME?!)

Here's the deal: The bot can't read your mind. It just compares letters and numbers and decides whether or not you are who you say you are.

So, how do you get it to recognize your in-game account so that it listens to what you tell it to do?

The easiest way to go about this is to do the following:

1) Click in the text box where you would type to talk to people on Battle.net.
2) Type (without quotes): "/add"
3) Hit the spacebar
4) Double-click on your name in the channel list on the right side of the bot
5) Hit the spacebar again, then type (without quotes): "999"
6) Press ENTER.

After following those steps, you should be able to use any commands listed in the other section of this readme.


Using Flags and Custom Access Requirements

StealthBot features a powerful flag-based access system, in addition to its default numeric one. The flag system allows you to customize flags, and perform additional desired functions using flags instead of numeric access. To begin, there are six hardcoded flags. They are as follows:

Letter | Full Name | Description
A | Admin | Admins have full access to all the bot's commands. The 'A' flag is equivalent to having access 100.
B | Banned | Users with flags of 'B' are shitlisted -- they will be banned upon entry to the channel.
D | Designated | Users with flags of 'D' will be automatically designated, if nobody else is. This includes times in which the currently designated user leaves the channel. In version 2.25, the D flag will automatically GIVE OPS to the flagged user. Use with caution!
L | Locked | The access and flags of users with 'L' as part of their flags cannot be modified except by someone with 'A' flags or 100+ access. This effectively "locks" the user's access so that those with less than master-access cannot modify it.
S | Safelisted | Users with flags of 'S' are considered part of the Safelist.
Z | Tagbanned | Tags can be added with flags of 'Z', which functions equivalently to tagbanning the tag.

In addition to the six hardcoded flags, the bot's owner (you!) can use the 'access.ini' file to make flags of your own. I've included a sample access.ini file, it is located in your StealthBot directory and shows you how to assign flags to commands. Basically it works like this:

1. I'm recruiting someone to join my clan. They want to talk with the bot, such as use the .say command. I don't want to give them 50 access because they can do other things.
2. I open flags.ini and make a new line. On that line, I put the command word I'm trying to give them access for: "say", then an equal sign "=", then any flag letters I want to assign to the command. "T".
3. The line now reads say=t. (Caps don't matter.)
4. I can now give my recruit access 'T', and they can ONLY use commands which are assigned to the 'T' flag. In this case, the only command I've assigned to 'T' is "say", so they can use .say only.

(You can assign as many flags as you want to a command.)

The flag system allows you to create a completely different command rank structure to suit your needs. :)

Since version 2.3, access.ini has been expanded to include customizable access levels!
Here's the new format of access.ini:

[Flags]
command=flags
command=flags

[Numeric]
command=requiredAccess
command=requiredAccess

For example, if I want to make the Kick command require only 50 access, I would add the following line under [Numeric]:

kick=50

The kick command would then require only 50 access to use.
You can completely disable commands by setting their required access over 1000. Be sure to add only numbers after the equals sign, or the command will require access 0.


Warcraft III Clan Features

New in version 2.2, StealthBot has partial support for Blizzard's WarCraft III Clan system. The bot can invite, promote, demote, remove people from the clan, accept invitations to join clans, view a list of clan members, and change the clan channel Message Of The Day. You can find this functionality by clicking the Clan tab under the channel list and right-clicking on a person in your clan.

Some features may be unavailable depending on your rank in the clan.


 Wildcard Banning, Kicking and Unbanning

Picture this: There are 6 bots spamming your channel, and they're all named WaR[#]BoT. You can type:

.ban WaR*

and they will all be banned in the order they appear in the channel list. They key to remember is that a * means "ANYTHING", so you're effectively saying:

.ban WaR[then anything here]

So it's important to note that your buddy "Warmonger" will get banned as well. Use common sense. :)

Safelisting users/tags or adding them to access 20 will let them evade wildcarded banning and kicking. In 2.0+, you can also use ".unban name*" or simply ".unban *" (without quotes) to unban any user that has been banned matching that tag.


 Flood Protection

Not to be confused with "floodBOT protection", flood protection will attempt to prevent you from being disconnected by typing too fast by Battle.net. It does its best to keep you online even when banning lots of things at once or sending lots of greet messages; however, it's not perfect, so use common sense.


StealthBot Commands

The example trigger is "." , if you configure your bot differently it will be whatever you specify in the Settings -> Configuration window.

If you're typing within the bot, you can replace the trigger with a slash ( " / " ) to execute them internally.


ACCESS LEVEL 0

!inbox - no aliases: This command cannot change, it is always !inbox regardless of the bot's trigger. This command is accessible only to people with unread mail.

(there's only one lonely command in this section.)


ACCESS LEVEL 20

.find - alias .whois: Displays the requested user's access to the bot.

.about - alias .ver: Displays the bot's version information.

.server - no aliases: Displays the server the bot is connected to.

.add <username> <access> <flags> - alias .set: Adds a user (<username>) to the bot's access list with access <access> (10-998) and/or <flags> (A - Z)

.whoami : Displays the access of the person using the command.

.cq : Clears the bot's queue! Useful if your bot is stuck spamming many messages, banning many people, or the like.

.designated - Displays the user that the bot last designated.

.flip - Flips a coin.

.findflag / .findattr <flag> : Lists all users with the specified flag.

.roll : Generates a random number between 0 and 100.

.roll <number> : Generates a random number between 0 and <number>.


ACCESS LEVEL 40

.time - no aliases: Displays the current time and date on the computer.

?trigger - no aliases: Displays the bot's current trigger.

.pingme / .getping : Returns the ping of the person who used the command.


ACCESS LEVEL 50

.say <message> - no aliases: Repeats the message following the command.

.shout <message> - Repeats the message following the command in all uppercase. ;)

.ignore <username> alias .ign : Squelches the <username>.

.unignore <username> - no aliases: Unsquelches the <username>.

.addquote <quote> - no aliases: Adds the <quote> to the quotes.txt file.

.quote - no aliases: Displays a randomly selected quote from the quotes.txt file.

.away - no aliases: Turns /away mode on.

.back - no aliases: Turns /away mode off.

.ping <username>: Retrieves <username>'s current ping.

.uptime: Displays the computer's uptime and the time since the bot logged on.

.mp3: Displays the MP3 that Winamp [VERSION 2.9 AND BELOW] is playing.

.mail <username> <message>: Adds mail to the mail queue for <username>.

.vote <duration> : Begins a general vote lasting <duration> seconds.

.voteban <username> : Begins a 30-second voteban vote. If the vote passes, the user is banned.

.votekick <username> : Begins a 30-second votekick vote. If the vote passes, the user is kicked.

.tally : Displays the current results of the active vote.

.info <username> : Displays information available on the specified user: time in channel, product, ping, flags.

.scq : Silently clears the queue.

.expand <text> : Adds spaces in between each letter of a specified phrase.

.where : Replies in a whisper as to the bot's current channel.


ACCESS LEVEL 60

.kick <username> <message>: Kicks <username> with <message>. Accepts wildcards (*)

.ban <username> <message>: Bans <username> with <message>. Acceps wildcards (*)

.unban <username>: unbans <username>.

.lastwhisper: Displays the username of the last person who messaged the bot.

.define <term> alias .def : Defines <term>.

.fadd <user> : Adds <user> to the account's friends list.

.frem <user> : Removes <user> from the accuont's friends list.

.bancount : Returns the number of users banned since the bot joined the channel.

.allseen : Returns the names of the last 15 people the bot has seen.

.levelbans - With access 60+, this will display the current status of Warcraft III level-based banning.

.d2levelbans - With access 60+, this will display the current status of Diablo II level-based banning.

.tagcheck <expression> : Returns any tagbans that the specified expression matches.

Cuphead was right, readmes suck ;)


ACCESS LEVEL 70 (now it's getting good!)

.shitlist <user> aliases .pban .shitadd : Adds the user to the shitlist.

.shitlist all by itself: Lists the users in the shitlist.

.shitdel <user> : Removes the user from the shitlist.

.safeadd <user> aliases .safelist <user> : Adds a user or tag to the safelist.

.safedel <user> : Removes an item from the safelist.

.safelist all by itself: Lists the users and tags in the safelist.

.tagbans : Lists tagbans

.tagadd aliases .tagban .addtag : Adds a tag to the tagbans list

.tagdel : Deletes a tag from the tagbans list

.protect on/off : Turns Lockdown on or off, all users in the channel or that join the channel and are not safelisted or with access less than 20 will be banned.

.mimic <username> : Repeats everything that the person says.

.nomimic : Turns Mimic off.

.check <username> : Checks the user monitor to see if <username> is online.

.online : Lists the users currently "ONLINE" on the User Monitor.

.monitor <username> : Adds <username> to the monitor.

.unmonitor <username> : Removes <username> from the monitor.

(Custom Commands)

.cmdadd <r> <q> <a> alias .addcmd: Adds Custom Commands. Click here for more information.

.cmddel <commandname> alias .delcmd: Deletes Custom Commands.

.cmdlist alias .listcmds : Lists the current custom commands and their required access levels.

(Phrasebans)

.plist / .phrases : Lists currently banned phrases.

.padd / .addphrase : Adds a phrase to the PhraseBans list.

.pdel / .delphrase : Deletes a PhraseBan.

.phrasebans (on/off/status) : Enables, disables, or displays the status of PhraseBans.

.pon / .poff - Enables/disables phrasebans.

.pstatus - Same as .phrasebans status.

.ipban <username> - IPBans the specified username.

.unipban <username> - Un-IPBans the specified username.

.ipbans (on/off/status) - Enables, disables, or displays the status of IPBans.

.banned - Displays a list of users that have been banned.

.setpmsg - Sets the message used to ban users during Channel Protection.

.notify <username> : Uses the bot's User Monitor to watch for when a user has signed on Battle.net.

.denotify <username> : Deactivates notifications for a specific user.

.mmail <flags> <message> : Botmails all users with <flags> flags the specified <message>.

.mmail <access> <message> : Botmails all users with <access> the specified <message>.


ACCESS LEVEL 80

.reconnect : Disconnects, pauses, then reconnects the bot.

.des <user> alias .designate: Designates the user.

.rejoin : Rejoins the channel.

.settrigger <trigger> : Sets the bot trigger.

.igpriv / .unigpriv : Runs the "/o igpriv" or "/o unigpriv" battle.net command. Don't use this unless you know what it does.

.rem <user> : Removes a user from the access list.

.next : Plays the next track in Winamp [All versions except 3.X]

.stop : Stops Winamp [All versions except 3.X]

.play : Starts play in Winamp [All versions except 3.X]

.play <tracknumber> : Plays the specified track in Winamp [All versions except 3.X]

Both Play commands do not have responses anymore to reduce spam.

.play <track name> : Plays the specified track, by name, in Winamp [All versions except 3.X]

.setvol <volume> : Sets Winamp's current volume. (0-100) [All versions except 3.X]

.fos : Runs a Fade-Out Stop in Winamp [All versions except 3.X]

.pause : Pauses Winamp [All versions except 3.X]

.sethome : Sets the bot's home channel.

.idle on/off : Turns idle messages on or off.

.setidle <message> : changes the idle message.

.idletype [quote, mp3, uptime, msg, message] : Changes the idle type setting.

.idletime [minutes] : Changes the time between idle messages.

.block <username>: If filtering is on, blocks messages from that username(s). Accepts wildcards (*)

.filter <message> : If filtering is on, messages containing this phrase will be blocked.

.whispercmds : Toggles whispering of command responses. If they're on, they get turned off by the command, and vice versa.

.profile <username> : Displays any user's profile to the channel. WARNING: If a person's description is more than one line long, it will not be displayed, and if it's long enough it will DISCONNECT THE BOT! Use with caution.

.greet <message> : Sets the channel join greeting message.

.greet off : Disables the channel join greeting message.

.levelban <level> : Sets or eliminates the current Warcraft III LevelBan level.

.d2levelban <level> : Sets or eliminates the current Diablo II LevelBan level.

.clist/.clientbans/.cbans: Displays the current ClientBans.

.cadd <client> alias .addclient : Adds a ClientBan.

.cdel <client> alias .delclient : Removes a ClientBan.

.koy on / off : Enables/disables Kick-On-Yell.

.plugban on / off / status : Enables/disables/displays the status of banning of users with UDP plugs (flags of 16).

.useitunes : Causes play, stop, next, back/prev, and pause commands to talk to iTunes instead of Winamp.

.useewinamp : Reverts the abovementioned commands back to Winamp control.


ACCESS LEVEL 90

.join <channel> : Joins the specified channel.

.home alias .joinhome : Joins the bot's home channel.

.resign : The bot relinquishes ops.

.setname <name> : Sets the bot's username to <name>.

.setpass <pass> : Sets the bot's password to <pass>.

.setserver <server> : Sets the bot's server to <server>.

.setkey <cdkey> : Sets the bot's current cdkey to <cdkey>, automatically replaces hypens and spaces.

.setexpkey <cdkey> : Sets the bot's current expansion (LOD or Frozen Throne) cdkey to <cdkey>, same as above.

.quiettime <on>, <off>, <status> alias .qt : Enables, disables, or displays the status of QuietTime. (QuietTime bans any users who aren't safelisted and talk.)

.giveup <username> alias .op :Designates, then resigns ops to the specified user.

.readfile <filename> : Reads a specified text file. The file must be present in the bot's folder.

.chpw <arguments> : Channel Passwording commands are as follows:

-- .chpw on <password> : Activates channel passwording and sets the password to <password>. If no delay has been previously set, it will use the default 30 seconds.
-- .chpw off / kill : Deactivates channel passwording and erases the channel password.
-- .chpw delay <value> : Sets the amount of time given to whisper a valid password (in seconds).
-- .chpw info : Displays the current status of channel passwording.

.ib <arguments> / .idlebans <arguments> : IdleBan arguments are as follows:

-- .ib on <optional delay> : Activates IdleBans. If no delay is specified, the default of 400 will be used.
-- .ib off : Disables IdleBans.
-- .ib delay <value> : Sets the amount of time before idle users are banned (in seconds).
-- .ib status : Displays the status of idlebans.
-- .ib kick <on/off> : Determines whether or not the idle user will be KICKED or BANNED.

.cb / .sweepban <channelname> : Bans every user in the specified channel.

.cs / .sweepsquelch <channelname> : Squelches and IPbans every user in the specified channel.

.setmotd <message> : Sets the Warcraft III Clan channel Message of the Day.

.invite <username> : Invites a Warcraft III user to join your clan.

.clan <private / public> : Changes the status of your Warcraft III Clan channel. Private status allows only members to join, public status is open to everyone.

.peonban <on / off / status> : Retrieves the status of, activates and deactivates banning of Warcraft III users with the Peon icon.

.exile <username> <message> : Shitlists the specified user, then IP-bans them.

.unexile <username> : Reverses the effects of "exile".

.clearbanlist / .cbl : Clears the list of Banned users. Use this if you are having problems with overzealos Ban Evasion.

.c pub / .c priv : Sets your clan channel to Public or Private status in less letters than ever before. ;)


ACCESS LEVEL 100

.quit : Quits the program.

.locktext : Locks the chat window.

.efp/.floodmode on/off/status : Emergency Floodbot Protection, covered elsewhere in this readme

.loadwinamp : Attempts to load Winamp from its default directory (C:\Program Files\Winamp\winamp.exe) or from one you specify by adding a WinampPath= line to the [Other] section of the config.ini file.


FORMAT FOR CUSTOM COMMANDS

.cmdadd <r> <w> <a>

<r> = Required access to use the command, between 0 and 999. (For public commands like !help, use 0.)
<w> = Command keyword
<a> = Actions to take if a user uses the command

The custom commands are used like other bot commands, ".commandword arguments".
This system is very similar to zDSBot's system.
You can use unlimited arguments in your custom commands; number them accordingly. Argument 1 would be %1, Argument 2 is %2 and so on.

You can define another line by using "&_" (without quotes, _ is a space) in your command. Please note THERE MUST BE A SPACE after the &.


COMMAND EXAMPLES

COMMAND:
.cmdadd 50 argtest Argument 1: %1& Argument 2: %2& Argument 3: %3

USAGE:
<Stealth> .argtest First Second Third

BOT'S RESPONSE:
<StealthBot> Argument 1: First
<StealthBot> Argument 2: Second
<StealthBot> Argument 3: Third

Notice how the "& " breaks up lines. You can theoretically achieve something like 32,000 arguments (%32767).

Now the classic UltimateBot command:

COMMAND:
.cmdadd 50 serve /me pours a refreshing glass of %rest& /me hands the glass to %1, compliments of %0 :)

USAGE:
<Stealth> .serve Mad Pepsi One

BOT'S RESPONSE:
<StealthBot pours a refreshing glass of pepsi>
<StealthBot serves the pepsi to Mad, compliments of Stealth :)>

%0 stands for the user who executed the command.
%1 is the first argument, or the person being served.
%rest is the rest of the message, after the highest-numbered argument you used in making the Custom Command.
In this case, what you want to serve to them.


Config.ini Hacks: (ADVANCED USERS ONLY)
StealthBot does quite a bit of reading out of its config.ini file that was previously not publicly recorded. The following are modifications that must be made directly in the config.ini file itself under the section header they specify:

SECTION | LINE TO ADD | PURPOSE
Main | XXXXVerByte=YY | Overrides the default product version byte for product XXXX. YY is a single byte in hex format. Example product codes: STAR, SEXP, D2DV, D2XP, WAR3, W3XP, W2BN
Main | ForceDefaultLocaleID=Y | Causes the bot to override your default Locale and Language IDs with US English.
Main | UppercasePassword=Y | Forces the bot to hash your password upper-cased.
Main | DisableSBNews=Y | Disables automatic downloading of StealthBot News and its concurrent update check.
Main | SetBNLSServer=[address] | Forces the bot to use an alternate server for BNLS. [address] is the server's IP address or hostname.
Main | OwnerName=(value) | Overrides the bot's default CDkey owner name, using your value instead.
Main | PeonBanMsg=(msg) | Overrides the default Warcraft III peonban message with your custom one.
Main | ShitlistPath=(path) | Tells StealthBot to read and write to a remote shitlist file.
Main | SafelistPath=(path) | Tells StealthBot to read and write to a remote safelist file.
Main | UserlistPath=(path) | Tells StealthBot to read and write to a remote userlist file.
Other | LevelbanMsg=(msg) | Overrides the default Warcraft III levelban message with your custom one.
Other | D2LevelbanMsg=(msg) | Overrides the default Diablo II levelban message with your custom one.
Other | WinampPath=(path) | Points StealthBot's loadwinamp command at a different Winamp path.
Hashes | (client)=(path) | Overrides the default hash file path for the client you specify, ex: STAR=C:\Program Files\Starcraft\ Valid clients are: STAR (Starcraft / Brood War) D2DV (Diablo II / LOD) W2BN (Warcraft II BNE)

For example, ConnectOnStartup goes in the config file underneath the [Main] heading:
[Main]
... (other config information)
VerByte=C7

Be sure to choose Reload Config under the Settings menu or restart the bot after making any changes to config.ini.


StealthBot VBScripting System

StealthBot has a very extensive, advanced VBScript system that allows you near-complete flexibility in designing Visual Basic scripts that interact with the bot. For more information on the Scripting system, you can see the pseudo-SDK in the form of the two files in your bot's folder:

script.txt is the actual script file itself, for your modifying pleasure

ScriptSupportClass.txt is the interface with which you can communicate with the bot's internal functionality

I am heavily dependent on community suggestions when it comes to the VBScript system, so feel free to send me your thoughts about additions or problems with it.


Getting Help

Step 1: SEARCH the FORUMS

There is a wealth of information available to you in the form of previously-asked questions on our forums. You can search the forums very easily; simply find one or two words or numbers that aren't ordinary and appear to be unique to the error you're getting and plug them in at http://search.stealthbot.net.

Step 2: POST on the FORUMS or ASK STEALTH

If you want to post on the forums, you should receive a pretty quick response from the experts there (myself included). You will need to sign up for an account there, which requires a valid e-mail address, then post as much detail as possible about your problem.

If you want to "Ask Stealth", consider that he's a fairy busy guy but he'll try to get back to you. You can send me e-mail at stealth@stealthbot.net.

Step 3: PROFIT

Obscure South Park reference.


StealthBot Legal Information

Welcome! IANAL, but here's my attempt at a brief English-language legal disclaimer. The more professional one you can find in your bot's folder (eula.txt) or at the realtime EULA website.

StealthBot is my copyright. Please do not abuse StealthBot for your own personal gain. I have put a lot of time and effort into this project and don't like to see it used to spread trojan viruses and their ilk.

Blizzard Entertainment is awesome. Blizzard, Battle.net, Starcraft, Brood War, Diablo II, Lord of Destruction, Warcraft III, The Frozen Throne, World of Warcraft and any other terms I have forgotten are trademarks of Blizzard Entertainment.

All other trademarks belong to their respective owners. For example, Visual Basic and Windows are trademarks of Microsoft Corp.

The StealthBot website is http://www.stealthbot.net. Any other websites, excluding MadzBots, that are distributing this program and are not official mirrors could potentially contain viruses. Get a virus scanner (Avast is free for home use and works well.) and be careful -- not all websites are reputable.