Make cool Telegram bots with Rust easily. For example, here's a simple echo bot:
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.
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.9 support, as well as media download/upload, polling and webhooks;
async
/.await
support, built upontokio
;- Type-safe and idiomatic API;
- Easy to use, while scalable and configurable.
Add tbot
and tokio
to your Cargo.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]
.
tbot
inherits tokio
's MSRV policy: the last three minor versions are
supported. Last time this paragraph was updated, the latest version was 1.53,
therefore tbot
's MSRV is 1.50. You can also look up it in our
.gitlab-ci.yml
, as it shows what version we're actually testing on.
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.