# Installation

Add `botrs` to your `Cargo.toml` together with an async runtime:

```toml
[dependencies]
botrs = "0.11.0"
tokio = { version = "1", features = ["full"] }
async-trait = "0.1"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
```

`tokio` with `features = ["full"]` is required because the framework spawns gateway/heartbeat tasks and uses timer/IO drivers internally. `async-trait` is required because `EventHandler` uses `#[async_trait::async_trait]`.

## Feature flags

The crate ships with no default features. The only feature you may want to opt into is `examples`, which pulls in `clap` and `toml` for the binaries under `examples/`. Library users do not need it.

```toml
botrs = { version = "0.11.0", features = ["examples"] }
```

## Sanity check

```rust
use botrs::{Token, Intents};

fn main() {
    let _ = Token::new("app_id", "secret");
    let _ = Intents::default();
    println!("botrs {}", botrs::VERSION);
}
```

If this compiles you have a working install. From here:

- [Quick start](/guide/quick-start) for a minimal end-to-end bot.
- [Configuration](/guide/configuration) for `Token::from_env` and sandbox vs production.
