Expand description
High-level Telegram client — design mirrors grammers exactly.
§Full flow
use layer_client::{Client, SignInError};
// Reuse session if it exists, otherwise fresh DH + initConnection(GetConfig)
let mut client = Client::load_or_connect("session.bin", API_ID, API_HASH)?;
if !client.is_authorized()? {
let token = client.request_login_code(PHONE)?;
let code = prompt("Enter code: ");
match client.sign_in(&token, &code) {
Ok(name) => println!("Welcome, {name}!"),
Err(SignInError::PasswordRequired(token)) => {
let pw = prompt("Enter 2FA password: ");
client.check_password(token, pw.trim())?;
}
Err(SignInError::InvalidCode) => eprintln!("Wrong code"),
Err(SignInError::SignUpRequired) => eprintln!("Sign up via official app first"),
Err(SignInError::Other(e)) => return Err(e.into()),
}
client.save_session("session.bin")?;
}
client.send_message("me", "Hello from layer!")?;Structs§
- Client
- Login
Token - Opaque token from
super::Client::request_login_code. Pass tosuper::Client::sign_in. - Password
Token - Holds the server’s 2FA challenge. Pass to
super::Client::check_password.
Enums§
- Error
- Sign
InError - Errors that can occur during
super::Client::sign_in.