Chat-bots em Kotlin: criando um assistente inteligente do zero

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Por que Kotlin é a linguagem ideal para chat-bots?

\n

Você já se perguntou por que cada vez mais desenvolvedores escolhem Kotlin para criar chat-bots? Esta linguagem é um verdadeiro canivete suíço no mundo da programação. Ela combina a concisão do Python, o poder do Java e recursos modernos que transformam a escrita de um bot de rotina em prazer.

\n

Imagine: você está escrevendo um bot para o Telegram que precisa processar centenas de requisições por segundo. Em Python, você lutaria contra o GIL (Global Interpreter Lock); em Java, se afogaria em código boilerplate. Kotlin, por outro lado, oferece corrotinas (coroutines) para assincronia e custo zero de abstrações. Neste guia, criaremos um chat-bot completo do zero — desde o registro no Telegram até o deploy no servidor.

\n\n

O que você obterá no final?

\n
    \n
  • Um bot funcional que responde a comandos e mantém um diálogo
  • \n
  • Compreensão da arquitetura de chat-bots em Kotlin
  • \n
  • Código pronto que pode ser usado imediatamente em seus projetos
  • \n
\n\n

Passo 1: Configuração do ambiente e obtenção do token

\n

Primeiramente, você precisará de um token de bot. Vá ao Telegram, encontre @BotFather e crie um novo bot. O comando /newbot — e você receberá o tão esperado token no formato 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11. Salve-o em local.properties — nunca commite tokens no repositório!

\n\n

Agora, crie o projeto. Recomendo usar Gradle Kotlin DSL — é o padrão moderno. Aqui está o build.gradle.kts mínimo:

\n\n
plugins {\n    kotlin("jvm") version "1.9.22"\n    application\n}\n\ndependencies {\n    implementation("io.ktor:ktor-client-core:2.3.7")\n    implementation("io.ktor:ktor-client-cio:2.3.7")\n    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0")\n    implementation("com.google.code.gson:gson:2.10.1")\n}\n\napplication {\n    mainClass.set("MainKt")\n}
\n\n

Observe: estamos usando Ktor Client para requisições HTTP à Telegram API e Gson para parsing de JSON. A serialização Kotlin também funcionaria, mas Gson é mais simples para começar.

\n\n

Passo 2: Estrutura básica do bot

\n

Qualquer chat-bot é um loop infinito: receber atualização → processar → enviar resposta. No Telegram, usa-se long polling (método getUpdates) ou webhooks. Implementaremos polling — é mais simples para desenvolvimento local.

\n\n

Crie a classe base TelegramBot:

\n\n
class TelegramBot(private val token: String) {\n    private val client = HttpClient(CIO)\n    private val baseUrl = "https://api.telegram.org/bot$token"\n\n    suspend fun getUpdates(offset: Long = 0): List<Update> {\n        val response: HttpResponse = client.get("$baseUrl/getUpdates") {\n            parameter("offset", offset)\n            parameter("timeout", 30)\n        }\n        val body = response.body<String>()\n        val apiResponse = Gson().fromJson(body, ApiResponse::class.java)\n        return apiResponse.result ?: emptyList()\n    }\n\n    suspend fun sendMessage(chatId: Long, text: String) {\n        client.post("$baseUrl/sendMessage") {\n            parameter("chat_id", chatId)\n            parameter("text", text)\n        }\n    }\n}
\n\n

A classe Update é um data class que mapeia a resposta JSON do Telegram. Veja como ela se parece:

\n\n
data class Update(\n    @SerializedName("update_id") val updateId: Long,\n    val message: Message? = null\n)\n\ndata class Message(\n    @SerializedName("message_id") val messageId: Long,\n    val text: String? = null,\n    val chat: Chat\n)\n\ndata class Chat(val id: Long)\ndata class ApiResponse(\n    val ok: Boolean,\n    val result: List<Update>? = null\n)
\n\n

Passo 3: Processamento de comandos — o coração do bot

\n

Agora a parte mais interessante — ensinar o bot a entender comandos. Em Kotlin, isso pode ser feito de forma el

Blogs

Book Recommendations