# [`tbot`](https://tbot.rs)
Make cool Telegram bots with Rust easily. For example, here's a simple echo bot:
```rust
use tbot::prelude::*;
#[tokio::main]
async fn main() {
let mut bot = tbot::from_env!("BOT_TOKEN").event_loop();
bot.text(|context| async move {
let echo = &context.text.value;
let call_result = context.send_message(echo).call().await;
if let Err(err) = call_result {
dbg!(err);
}
});
bot.polling().start().await.unwrap();
}
```
There are many [examples] to see `tbot` in action. If you want to see real-world
use of `tbot`, check out [this list][projects].
If you're a newcomer, we recommend you go through the [tutorial] first. We also
have several [How-to guides][how-to] to help you use `tbot`. You can always
refer to our API docs on [_docs.rs_][api-docs] (also, docs for `master`
are available [here][master-docs]).
If you have a question, ask it in [our group] on Telegram. If you find a bug,
file an issue on either our [GitLab] or [GitHub] repository.
[examples]: ./examples/
[projects]: https://gitlab.com/SnejUgal/tbot/-/wikis/Projects-built-with-tbot
[tutorial]: https://gitlab.com/SnejUgal/tbot/wikis/Tutorial
[how-to]: https://gitlab.com/SnejUgal/tbot/wikis/How-to
[api-docs]: https://docs.rs/tbot
[master-docs]: https://docs.tbot.rs
[our group]: https://t.me/tbot_group
[gitlab]: https://gitlab.com/SnejUgal/tbot
[github]: https://github.com/tbot-rs/tbot
## Features
- Full Telegram Bot API 4.9 support, as well as media download/upload, polling
and [webhooks];
- `async`/`.await` support, built upon `tokio`;
- Type-safe and idiomatic API;
- Easy to use, while scalable and configurable.
[webhooks]: https://gitlab.com/SnejUgal/tbot/wikis/How-to/How-to-use-webhooks
## Installation
Add `tbot` and `tokio` to your Cargo.toml:
```toml
[dependencies]
tbot = "0.6"
tokio = { version = "0.2", features = ["macros"] }
```
`tokio` is required to start the runtime. You'll also need the `macros` feature
of `tokio` if you're going to start the runtime using `#[tokio::main]`.
## Contribution
Glad you want to contribute to `tbot`! We develop the crate on [GitLab],
so create your merge request there if you can. We may accept pull requests
on [GitHub] as well, but we prefer [GitLab].