# Interactive bots
Zulip's API has a powerful framework for interactive bots that react
to messages in Zulip. This page documents how to run a bot
implemented using that framework, both on your laptop for quick
testing as well in a production server environment.
On this page you'll find:
* A step-by-step [tutorial](#running-a-bot) on how to run a bot.
* Common [problems](#common-problems) when developing/running bots and their solutions.
## Installing the Zulip bots package
## Running a bot
This guide will show you how to run an **existing** Zulip bot
found in [`zulip_bots/bots`](
https://github.com/zulip/python-zulip-api/tree/master/zulip_bots/zulip_bots/bots).
You need:
* An account in an organization on a Zulip server
(e.g. [chat.zulip.org](https://chat.zulip.org) or
yourSubdomain.zulipchat.com, or your own development server).
Within that Zulip organization, users will be able to interact with
your bot.
* A computer where you're running the bot from.
**Note: Please be considerate when testing experimental bots on public servers such as chat.zulip.org.**
1. Run `pip install zulip_bots` to install the package.
*Hint: Do you want to install the latest development version? Check
out [this](
writing-bots#installing-a-development-version-of-the-zulip-bots-package)
guide.*
1. Register a new bot user on the Zulip server's web interface.
* Log in to the Zulip server.
* Navigate to *Settings ()* -> *Your bots* -> *Add a new bot*.
Select *Generic bot* for bot type, fill out the form and click on *Create bot*.
* A new bot user should appear in the *Active bots* panel.
1. Download the bot's `zuliprc` configuration file to your computer.
* Go to *Settings* -> *Your bots*.
* In the *Active bots* panel, click on the little green download icon
to download its configuration file *zuliprc* (the structure of this file is
explained [here](writing-bots#configuration-file)).
* The file will be downloaded to some place like `~/Downloads/zuliprc` (depends
on your browser and OS).
* Copy the file to a destination of your choice, e.g. to `~/zuliprc-my-bot`.
1. Start the bot process.
* Run
```
zulip-run-bot --config-file ~/zuliprc-my-bot
```
(using the path to the `zuliprc` file from step 3).
* Check the output of the command. It should include the following line:
INFO:root:starting message handling...
Congrats! Your bot is running.
1. To talk with the bot, mention its name `@**bot-name**`.
You can now play around with the bot and get it configured the way you
like. Eventually, you'll probably want to run it in a production
environment where it'll stay up, by deploying it on a server using the
Zulip Botserver.
## Common problems
* My bot won't start
* Ensure that your API config file is correct (download the config file from the server).
* Ensure that your bot script is located in `zulip_bots/bots//`
* Are you using your own Zulip development server? Ensure that you run your bot outside
the Vagrant environment.
* Some bots require Python 3. Try switching to a Python 3 environment before running
your bot.