TGBOT

A full-featured Telegram Bot API client

CI Coverage Version Downloads Release Documentation Master Documentation Telegram Chat License

Installation

toml [dependencies] tgbot = "0.13.0"

Example

Long polling:

```rust norun use futuresutil::future::BoxFuture; use std::env; use tgbot::{Api, Config, 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("TGBOTTOKEN").expect("TGBOTTOKEN is not set"); let api = Api::new(Config::new(token)).expect("Failed to create API"); LongPoll::new(api.clone(), Handler { api }).run().await; } ```

Webhook:

```rust norun use futuresutil::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: sh 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 CODEOFCONDUCT.md.

LICENSE

The MIT License (MIT)