pub struct ClientBuilder { /* private fields */ }Expand description
Fluent builder for Config + Client::connect.
Obtain one via Client::builder().
Implementations§
Source§impl ClientBuilder
impl ClientBuilder
Sourcepub fn api_id(self, id: i32) -> Self
pub fn api_id(self, id: i32) -> Self
Set the Telegram API ID (from https://my.telegram.org).
Sourcepub fn api_hash(self, hash: impl Into<String>) -> Self
pub fn api_hash(self, hash: impl Into<String>) -> Self
Set the Telegram API hash (from https://my.telegram.org).
Sourcepub fn session(self, path: impl AsRef<Path>) -> Self
pub fn session(self, path: impl AsRef<Path>) -> Self
Use a binary file session at path.
Mutually exclusive with session_string and
in_memory: last call wins.
Sourcepub fn session_string(self, s: impl Into<String>) -> Self
pub fn session_string(self, s: impl Into<String>) -> Self
Use a portable base64 string session.
Pass an empty string to start fresh: the exported session string
from Client::export_session_string can be injected here directly
(e.g. via an environment variable).
Mutually exclusive with session and
in_memory: last call wins.
Sourcepub fn in_memory(self) -> Self
pub fn in_memory(self) -> Self
Use a non-persistent in-memory session (useful for tests).
Mutually exclusive with session and
session_string: last call wins.
Sourcepub fn session_backend(self, backend: Arc<dyn SessionBackend>) -> Self
pub fn session_backend(self, backend: Arc<dyn SessionBackend>) -> Self
Inject a fully custom SessionBackend implementation.
Useful for [LibSqlBackend] (bundled SQLite, no system dep) or any
custom persistence layer:
use std::sync::Arc;
let (client, _) = Client::builder()
.api_id(12345).api_hash("abc")
.session_backend(Arc::new(LibSqlBackend::new("my.db")))
.connect().await?;Sourcepub fn catch_up(self, enabled: bool) -> Self
pub fn catch_up(self, enabled: bool) -> Self
When true, replay missed updates via updates.getDifference on connect.
Default: false.
Sourcepub fn dc_addr(self, addr: impl Into<String>) -> Self
pub fn dc_addr(self, addr: impl Into<String>) -> Self
Override the first DC address (e.g. "149.154.167.51:443").
Sourcepub fn socks5(self, proxy: Socks5Config) -> Self
pub fn socks5(self, proxy: Socks5Config) -> Self
Route all connections through a SOCKS5 proxy.
Sourcepub fn mtproxy(self, proxy: MtProxyConfig) -> Self
pub fn mtproxy(self, proxy: MtProxyConfig) -> Self
Route all connections through an MTProxy.
The proxy transport is set automatically from the secret prefix;
you do not need to also call .transport().
Build the [MtProxyConfig] with crate::parse_proxy_link.
Sourcepub fn proxy_link(self, url: &str) -> Self
pub fn proxy_link(self, url: &str) -> Self
Set an MTProxy from a https://t.me/proxy?... or tg://proxy?... link.
Empty string is a no-op; proxy stays unset. Transport is selected from the secret prefix automatically.
Sourcepub fn allow_ipv6(self, allow: bool) -> Self
pub fn allow_ipv6(self, allow: bool) -> Self
Allow IPv6 DC addresses (default: false).
Sourcepub fn transport(self, kind: TransportKind) -> Self
pub fn transport(self, kind: TransportKind) -> Self
Choose the MTProto transport framing (default: TransportKind::Abridged).
Sourcepub fn retry_policy(self, policy: Arc<dyn RetryPolicy>) -> Self
pub fn retry_policy(self, policy: Arc<dyn RetryPolicy>) -> Self
Override the flood-wait / retry policy.
pub fn restart_policy(self, policy: Arc<dyn ConnectionRestartPolicy>) -> Self
Sourcepub fn device_model(self, model: impl Into<String>) -> Self
pub fn device_model(self, model: impl Into<String>) -> Self
Set the device model string sent in InitConnection (default: "Linux").
This shows up in Telegram’s active sessions list as the device name.
Sourcepub fn system_version(self, version: impl Into<String>) -> Self
pub fn system_version(self, version: impl Into<String>) -> Self
Set the system/OS version string sent in InitConnection (default: "1.0").
Sourcepub fn app_version(self, version: impl Into<String>) -> Self
pub fn app_version(self, version: impl Into<String>) -> Self
Set the app version string sent in InitConnection (default: crate version from CARGO_PKG_VERSION).
Sourcepub fn system_lang_code(self, code: impl Into<String>) -> Self
pub fn system_lang_code(self, code: impl Into<String>) -> Self
Set the system language code sent in InitConnection (default: "en").
Sourcepub fn lang_pack(self, pack: impl Into<String>) -> Self
pub fn lang_pack(self, pack: impl Into<String>) -> Self
Set the language pack name sent in InitConnection (default: "").
Sourcepub fn lang_code(self, code: impl Into<String>) -> Self
pub fn lang_code(self, code: impl Into<String>) -> Self
Set the language code sent in InitConnection (default: "en").
Sourcepub async fn connect(self) -> Result<(Client, ShutdownToken), BuilderError>
pub async fn connect(self) -> Result<(Client, ShutdownToken), BuilderError>
Build and connect in one step.
Returns Err(BuilderError::MissingApiId) / Err(BuilderError::MissingApiHash)
before attempting any network I/O if the required fields are absent.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for ClientBuilder
impl !RefUnwindSafe for ClientBuilder
impl Send for ClientBuilder
impl Sync for ClientBuilder
impl Unpin for ClientBuilder
impl UnsafeUnpin for ClientBuilder
impl !UnwindSafe for ClientBuilder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more