TDL Coroutines is a Kotlin Multiplatform library that provides a coroutine-based client for the
Telegram Database Library (TDLib). It simplifies sending requests and handling updates, making
integration with TDLib more straightforward and idiomatic for Kotlin Multiplatform projects.
repositories {
mavenCentral()
}Replace X.X.X with the version from the Maven Central badge.
dependencies {
implementation("dev.g000sha256:tdl-coroutines:X.X.X")
}Caution
The upstream TDLib library frequently introduces breaking changes even in patch versions.
Since TDL Coroutines wraps TDLib, these changes propagate to this library as well.
To minimize the impact, use named arguments when calling generated constructors and request methods,
as parameters may be added, renamed, or removed in future releases.
val client = TdlClient.create()Important
Start collecting the update flows you need before sending the first request.
The TdlClient provides 182 update flows and the allUpdates flow, which combines all update events.
coroutineScope.launch {
client.authorizationStateUpdates.collect { update ->
val authorizationState = update.authorizationState
// TODO
}
}coroutineScope.launch {
client.allUpdates.collect { update ->
when (update) {
is UpdateAuthorizationState -> {
val authorizationState = update.authorizationState
// TODO
}
is UpdateOption -> {
val name = update.name
val value = update.value
// TODO
}
// TODO
}
}
}The TdlClient provides 1001 request methods.
coroutineScope.launch {
val result = client.getAuthorizationState()
when (result) {
is TdlResult.Failure -> {
val code = result.code
val message = result.message
// TODO
}
is TdlResult.Success -> {
val authorizationState = result.result
// TODO
}
}
}Tip
You can use the .toResult() extension to convert the TdlResult<T> into the standard Kotlin Result<T>.