Expand description
A Telegram Bot API client library
TGBOT
A full-featured Telegram Bot API client
Installation
[dependencies]
tgbot = "0.18.0"
Versioning
This project adheres to ZeroVer
Example
Long polling:
use futures_util::future::BoxFuture;
use std::env;
use tgbot::{Api, UpdateHandler};
use tgbot::longpoll::LongPoll;
use tgbot::methods::SendMessage;
use tgbot::types::{Update, UpdateKind};
struct Handler {
api: Api,
}
impl UpdateHandler for Handler {
type Future = BoxFuture<'static, ()>;
fn handle(&self, update: Update) -> Self::Future {
println!("got an update: {:?}\n", update);
let api = self.api.clone();
Box::pin(async move {
if let UpdateKind::Message(message) = update.kind {
if let Some(text) = message.get_text() {
let chat_id = message.get_chat_id();
let method = SendMessage::new(chat_id, text.data.clone());
api.execute(method).await.unwrap();
}
}
})
}
}
#[tokio::main]
async fn main() {
let token = env::var("TGBOT_TOKEN").expect("TGBOT_TOKEN is not set");
let api = Api::new(token).expect("Failed to create API");
LongPoll::new(api.clone(), Handler { api }).run().await;
}
Webhook:
use futures_util::future::BoxFuture;
use tgbot::{UpdateHandler, types::Update, webhook};
struct Handler;
impl UpdateHandler for Handler {
type Future = BoxFuture<'static, ()>;
fn handle(&self, update: Update) -> Self::Future {
Box::pin(async move {
println!("got an update: {:?}\n", update);
})
}
}
#[tokio::main]
async fn main() {
webhook::run_server(([127, 0, 0, 1], 8080), "/", Handler).await.unwrap();
}
See more examples in examples directory.
In order to run an example you need to create a .env
file:
cp sample.env .env
Don’t forget to change value of TGBOT_TOKEN
and other variables if required.
Changelog
See CHANGELOG.md
Code of Conduct
See CODE_OF_CONDUCT.md.
LICENSE
The MIT License (MIT)
Re-exports
pub use mime;
Modules
Utilities to receive updates using long poll
Methods available in the Bot API
Types available in the Bot API
Services to receive updates via webhook
Structs
Telegram Bot API client
A wrapper for non-sync UpdateHandler
std::vec::Vec
wrapper which guarantees to have at least 1 element.
Enums
A general API error
An error when downloading file
An error when executing method
Traits
An update handler