Tarkibga o'tish

Telegram bot (JavaScript / grammY) β€” 0 dan Expertgacha

Bu kitob JavaScript va Node.js asoslarini biladigan o'quvchini Telegram bot yozish bo'yicha noldan ishonchli darajaga olib chiqadi. Oddiy echo botdan boshlab β€” handler va Composer, filtrlar (filter queries), klaviaturalar, callback, conversations (suhbatlar), middleware, sessiya va ma'lumotlar bazasi, to'lovlar, webhook va deploy orqali β€” yakuniy to'liq botgacha; so'ng real amaliyot: guruh/kanal boshqaruvi, majburiy obuna, Telegram Mini App integratsiyasi va Hamster uslubidagi clicker o'yin kapstoni. Hamma kod grammY 1.x (zamonaviy, ESM, async/await) bilan yoziladi.

πŸ€– grammY 1.x. Bu kitob faqat grammY idiomidan foydalanadi (Bot, bot.command, bot.on("message:text") filter query, Composer, InlineKeyboard/Keyboard quruvchilari, @grammyjs/conversations v2 plugini). Internetdagi Telegraf (ctx.scene, bot.on("text")) yoki node-telegram-bot-api misollari bu yerda ishlamaydi β€” grammY API'si boshqacha, ehtiyot bo'ling.

⚠️ HALOL eslatma. Botning mantig'i β€” handlerlar, Composer, filter query'lar, conversations, klaviaturalar, callback, middleware va sessiya β€” offline ishga tushirib tekshirilgan (soxta Update ni bot.handleUpdate ga uzatib va API chaqiruvlarini transformer bilan ushlab). Ammo jonli ishlash β€” Telegram'ga polling/xabar yuborish, webhook qabul qilish, to'lovlar β€” @BotFather dan olingan token va internet talab qiladi; bu bloklar to'g'ri, lekin matnda "illustrativ" deb belgilangan. Botingizni o'z tokeningiz bilan ishga tushiring.

ℹ️ Bu kitob siz JavaScript va Node.js asoslarini (async/await, Promise, ESM import, npm, obyekt/massiv) bilasiz deb hisoblaydi. JS/Node yangi bo'lsa, avval JavaScript β€” 0 dan Expertgacha va Node.js β€” 0 dan Expertgacha kitoblarini o'qing.


Qanday o'qish kerak

  1. Boblarni tartib bilan o'qing (01 β†’ 02 β†’ ...). Har biri oldingisiga tayanadi.
  2. @BotFather dan token oling (/newbot) va uni .env (BOT_TOKEN) da saqlang β€” hech qachon kodga yozmang.
  3. Har bir misolni o'zingiz tering va o'z botingizda sinab ko'ring β€” bot o'qib emas, yozib o'rganiladi.
  4. conversations, middleware va DB kabi mavzular amaliyotsiz mavhum tuyuladi β€” har bir handlerni o'zingiz ishga tushiring.

Talab

Kerak Daraja
JavaScript asoslari (async/await, Promise, ESM) Shart
Node.js 18+ va npm Shart
Telegram hisobi va @BotFather token Shart (jonli sinov uchun)
Terminal bilan tanishlik Foydali
SQL/ma'lumotlar bazasi asoslari Foydali

Mundarija

I qism β€” Asoslar

# Bob Mavzu
01 Telegram botlar va grammY bilan tanishuv Bot nima, Bot API qanday ishlaydi, @BotFather token, polling vs webhook, grammY nega va Telegraf'dan farqi.
02 Birinchi bot: echo va /start Minimal bot: new Bot, bot.command, bot.on, bot.start(), token .env da, ctx.reply.
03 Update'lar, handlerlar va Composer ctx obyekti, bot.use, Composer bilan modullash, next(), handler tartibi, middleware daraxti.
04 Filtrlar va buyruqlar (filter queries) bot.command, deep-link payload, bot.hears, filter query (message:text, :photo), maxsus filtr (bot.filter).

II qism β€” Foydalanuvchi bilan muloqot

# Bob Mavzu
05 Xabar yuborish, formatlash va media ctx.reply/reply_parameters, parse_mode (HTML/MarkdownV2), InputFile, media (rasm/hujjat/audio), albom.
06 Klaviaturalar: reply va inline Keyboard, InlineKeyboard quruvchilari, callback tugmalar, .resized()/.oneTime(), klaviaturani olib tashlash.
07 Callback query va inline rejim bot.callbackQuery, ctx.answerCallbackQuery, xabarni tahrirlash, pagination, bot.inlineQuery.
08 Conversations β€” suhbatlar (ko'p qadamli forma) @grammyjs/conversations v2, createConversation, conversation.wait/waitFor, conversation.external, conversation.form.

III qism β€” Arxitektura va ma'lumot

# Bob Mavzu
09 Middleware va Composer daraxti bot.use, next(), o'tish/to'xtatish, Composer, bot.errorBoundary, throttling, logging.
10 Sessiya va ma'lumotlar bazasi session() middleware, storage adapter (file/DB), better-sqlite3, foydalanuvchilarni saqlash, repository.
11 Loyiha tuzilishi va konfiguratsiya Katta botni modullash (handlers/keyboards/conversations/services), .env config, context flavor.
12 Maxsus xususiyatlar va plaginlar Fayl yuklab olish (getFile/download), @grammyjs/menu, buyruqlar menyusi, @grammyjs/hydrate, WebApp tugma.

IV qism β€” Ilg'or

# Bob Mavzu
13 Webhook va deploy server Polling vs webhook chuqur, webhookCallback, Express/Hono server, bot.api.setWebhook, qachon qaysi.
14 To'lovlar va Telegram Stars replyWithInvoice, pre_checkout_query, successful_payment, provider token, Telegram Stars (XTR).
15 Rejalashtirilgan vazifalar va broadcast node-cron bilan rejali xabar, @grammyjs/runner bilan konkurensiya, ommaviy tarqatish, flood-control, @grammyjs/auto-retry.

V qism β€” Sifat va deploy

# Bob Mavzu
16 Testlash va xatolarni boshqarish Handlerlarni offline test (handleUpdate + transformer mock), Vitest, bot.catch, GrammyError/HttpError.
17 Production va deploy VPS, Docker, pm2/systemd, @grammyjs/runner, sirlar/.env, polling vs webhook prod, graceful shutdown.
18 Yakuniy kapston: to'liq bot Boshidan oxirigacha to'liq bot: conversation forma, sessiya/DB, klaviatura, middleware, admin, deploy. Yo'l yakuni.

VI qism β€” Guruh, kanal va Mini App (real amaliyot)

# Bob Mavzu
19 Guruhlarda ishlash Guruh turlari, privacy mode, getChatMember bilan a'zo/admin tekshirish, my_chat_member, bot.chatType.
20 Guruh moderatsiyasi Welcome (chat_member), ban/kick/mute (banChatMember/restrictChatMember + ChatPermissions), admin-filtr, captcha.
21 Kanallar bilan ishlash Kanalga post, channel_post, linked discussion group, forwardMessage/copyMessage, reaksiyalar (bot.reaction).
22 Majburiy obuna Obuna middleware, gate klaviatura, bir nechta kanal, private kanal (chat_join_request), kesh.
23 Telegram Web App (Mini App) asoslari WebAppInfo, 3 tugma turi, telegram-web-app.js SDK, sendData β†’ bot.on("message:web_app_data").
24 Web App xavfsizligi: initData initData HMAC validatsiya (Node crypto), data_check_string, replay himoyasi, serverda tekshirish.
25 Mini App backend Hono/Express backend, har so'rovda initData auth, DB holat, bot↔WebApp↔backend uchburchagi.
26 Kapston: Hamster uslubidagi clicker Mini App Tap-to-earn: balans/energiya/upgrade, anti-cheat (serverda hisoblanadi), to'liq loyiha.

Muallif

Oqil Imomnazarov β€” ioqil.uz Β· Telegram Β· YouTube

Kitob bepul tarqatiladi (CC BY-NC-SA 4.0). Savdo qilish taqiqlanadi.