tbot 0.6.4

Make cool Telegram bots with Rust easily.


Make cool Telegram bots with Rust easily. For example, here's a simple echo bot:

use tbot::prelude::*;

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 {


There are many examples to see tbot in action. If you want to see real-world use of tbot, check out this list.

If you're a newcomer, we recommend you go through the tutorial first. We also have several How-to guides to help you use tbot. You can always refer to our API docs on docs.rs (also, docs for master are available here).

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.


  • Full Telegram Bot API 4.8 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.


Add tbot and tokio to your Cargo.toml:

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].


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.