Crate tgbot

source · []
Expand description

A Telegram Bot API client library

TGBOT

A full-featured Telegram Bot API client

CI Coverage Version Downloads Release Documentation Master Documentation Telegram Chat License

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