Example Bare Minimum Simple Telegram Client - OTR/Kotlin-Telegram-Client GitHub Wiki

package com.example

import it.tdlight.client.APIToken
import it.tdlight.client.AuthenticationData
import it.tdlight.client.SimpleTelegramClient
import it.tdlight.client.TDLibSettings
import it.tdlight.common.ExceptionHandler
import it.tdlight.common.Init
import it.tdlight.jni.TdApi
import it.tdlight.jni.TdApi.AuthorizationState
import kotlin.io.path.Path

/**
 * FIXME: Aint working yet
 */
private class MyTelegramClient {

    val client: SimpleTelegramClient = SimpleTelegramClient(
        TDLibSettings.create(APIToken.example()).apply {
            databaseDirectoryPath = Path("tdlib")
            isMessageDatabaseEnabled = true
        }
    )


}

fun main() {
    Init.start()
    val client: SimpleTelegramClient = MyTelegramClient().client
    client.start(AuthenticationData.consoleLogin())
    client.addUpdateExceptionHandler { ExceptionHandler {
        println("${it.message} ${it.cause}")
    } }
    client.addUpdateHandler(TdApi.UpdateAuthorizationState::class.java) {updateState ->
        updateHandler(updateState)
    }
    client.waitForExit()
}

private fun updateHandler(updateState: TdApi.UpdateAuthorizationState) {
    val authState: AuthorizationState = updateState.authorizationState
    when (authState) {
        is TdApi.AuthorizationStateReady -> {
            client.send(TdApi.SendMessage().apply {
                chatId = System.getenv("TELEGRAM_RECIPIENT_CHAT_ID").toLong()
                inputMessageContent = TdApi.InputMessageText().apply {
                    text = TdApi.FormattedText().apply { text = "Oh, Hi mark" }
                }
            }) {
                // Result Handler
            }
        }
        else -> println(authState.toString())
    }
}