I created a chat bot for the Stack Exchange chat rooms, called FOX 9000. It's mainly for the chat.meta.stackexchange.com chat room [Shadow's Den](http://chat.meta.stackexchange.com/rooms/721/shadows-den), but can also be used in other rooms, because the Shadow's Den-specific code is separated from the global code, and you can tell the bot whether it runs in that room or not.

[The bot is open-source and the code is hosted on GitHub.](https://github.com/ProgramFOX/SE-Chatbot)

The bot is licensed under [CPOL (The Code Project Open License) v1.02](http://www.codeproject.com/info/cpol10.aspx). You can find a copy of this license in `LICENSE.htm`.

### Setup ###

The bot uses Python 2.7. Before you can use the bot, you need to install some dependencies such as ChatExchange and BeautifulSoup4. You can install them by running `setup.sh`.

You'll also need to rename `ConfigTemplate.py` to `Config.py` and `SecretSpellsTemplate.py` to `SecretSpells.py`. Spells are a Shadow's Den feature, but as they are secret, I only post a template here, not the real spells.

You will also need to add some required configuration data in `Config.py`. The comments in that file tell you which values you can add and how to add them.

### Running ###

When you run the bot, it will prompt you for necessary information that you have not provided in Config.py. If you wish to use a specific configuration, run the bot with the argument `-c configuration_name`. You can also use `-s site_name`, `-r room_number`, `-e email_address` and `-p password`. The last four items will always override data stored in a configuration, if set.

### Logging ###

You can use logging on the bot. It is disabled by default, but you can enable it by un-commenting the `self.setup_logging()` line in `Chatbot.py` (in the `main` method).

### Executing commands/posting messages using the command line ###

You can execute commands from the bot by providing input on the command line. `$+command args` will execute the command and post the result to the chat room, and `$-command args` will only post the result to the command line. If your input does not start with a `$`, the bot will post the given input to the chat room.

### Commands in a chat room ###

Commands in a chat room are executed like `>>command optional arguments`. To get a list of all commands, run `>>listcommands`. To get help on a specific command, run `>>help command`.