[][src]Crate rust_tdlib

rust-tdlib is a wrapper for TDlib (Telegram Database library). It allows you to make all the things that you can do with real telegram. So, yes, you can build your own telegram client using Rust language.

First of all you have to initialize client. Your steps:

  1. initialize TdlibParameters with two required parameters: api_id and api_hash.
  2. use ConsoleAuthStateHandler with default builder or write you own AuthStateHandler.
  3. use them as parameters of an ClientBuilder.
  4. start the client.
  5. write your own code to interact with Telegram.
use rust_tdlib::{types::{TdlibParameters, GetMe}, client::Client};
#[tokio::main]
async fn main() {
    let tdlib_params = TdlibParameters::builder().api_id(env!("API_ID").parse::<i64>().unwrap()).api_hash(env!("API_HASH")).build();
    let client = rust_tdlib::client::Client::builder().with_tdlib_parameters(tdlib_params).build();
    client.start().await.unwrap();
    let me = client.api().get_me(GetMe::builder().build()).await.unwrap();
    eprintln!("{:?}", me);
}

You can read all updates, received from Telegram server, such as: new messages, chats updates, new chats, user updates and so on. All updates varians declared within Update.

use rust_tdlib::{types::{TdlibParameters, GetMe, TdType}, client::Client};
#[tokio::main]
async fn main() {
    let tdlib_params = TdlibParameters::builder().api_id(env!("API_ID").parse::<i64>().unwrap()).api_hash(env!("API_HASH")).build();
    let (sender, mut receiver) = tokio::sync::mpsc::channel::<TdType>(10);
    let client = rust_tdlib::client::Client::builder().with_updates_sender(sender).with_tdlib_parameters(tdlib_params).build();
    client.start().await.unwrap();
    if let Some(message) = receiver.recv().await.unwrap() {
        eprintln!("updates handler received {:?}", message);
    }
}

Modules

client

Module contains structs and traits, required for proper interaction with Telegram server.

errors
types

Module provides all TDlib types. For types details you can see TDlib API Scheme