بوتات الدردشة بلغة Kotlin: بناء مساعد ذكي من الصفر

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

لماذا Kotlin هي اللغة المثالية لبوتات الدردشة؟

\n

هل تساءلت يومًا لماذا يختار المزيد من المطورين Kotlin لبناء بوتات المحادثة؟ هذه اللغة هي بمثابة سكين الجيش السويسري في عالم البرمجة. فهي تجمع بين إيجاز Python، وقوة Java، وميزات حديثة تحول كتابة البوت من روتين ممل إلى متعة حقيقية.

\n

تخيل: أنت تكتب بوتًا لـ Telegram يجب أن يعالج مئات الطلبات في الثانية. في Python، ستواجه مشكلة GIL (قفل المفسر العام)، وفي Java ستغرق في الكود النمطي. أما Kotlin فتقدم لك coroutines للبرمجة غير المتزامنة وتكلفة صفرية للتجريدات. في هذا الدليل، سنبني بوت محادثة كامل من الصفر — من التسجيل في Telegram إلى النشر على الخادم.

\n\n

ماذا ستحصل عليه في النهاية؟

\n
    \n
  • بوتًا يعمل ويستجيب للأوامر ويدير حوارًا
  • \n
  • فهمًا معماريًا لبوتات الدردشة بلغة Kotlin
  • \n
  • كودًا جاهزًا يمكنك استخدامه فورًا في مشاريعك
  • \n
\n\n

الخطوة 1: إعداد البيئة والحصول على التوكن

\n

أولاً، ستحتاج إلى توكن البوت. اذهب إلى Telegram، وابحث عن @BotFather وأنشئ بوتًا جديدًا. الأمر /newbot — وستحصل على التوكن المطلوب مثل 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11. احفظه في ملف local.properties — لا تقم أبدًا بإضافة التوكنات إلى المستودع!

\n\n

الآن، أنشئ المشروع. أوصي باستخدام Gradle Kotlin DSL — وهو المعيار الحديث. إليك ملف build.gradle.kts الأدنى:

\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

لاحظ: نحن نستخدم Ktor Client لطلبات HTTP إلى Telegram API و Gson لتحليل JSON. مكتبة Kotlin Serialization مناسبة أيضًا، لكن Gson أسهل للبدء.

\n\n

الخطوة 2: الهيكل الأساسي للبوت

\n

أي بوت محادثة هو عبارة عن حلقة لا نهائية: استقبل التحديث → عالجه → أرسل الرد. في Telegram، يتم استخدام long polling (طريقة getUpdates) أو webhooks. سنقوم بتنفيذ polling — فهو أسهل للتطوير المحلي.

\n\n

أنشئ الفئة الأساسية 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

الفئة Update هي data class يتم تعيينها إلى استجابة JSON من Telegram. إليك شكلها:

\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

الخطوة 3: معالجة الأوامر — قلب البوت

\n

الآن الجزء الممتع — سنعلم البوت فهم الأوامر. في Kotlin، يمكن القيام بذلك بسهولة

المدونات

توصيات الكتب