Telegram bot tuzishni o’rganamiz (kirish qismi)

Assalomu Alaykum. Ushbu kursimizda siz bilan python dasturlash tilida, aiogram frameworkida Telegram Bot tuzishni o’rganamiz!

Aiogram python dasturlash tilida Telegram Bot yozish uchun eng mashhur frameworklardan biri hisoblanadi. Ushbu framework ham boshqa Telegram Bot tuzish uchun mo’ljallangan kutubxona/framework lar kabi Telegram Bot API‘dan kelayotgan yangilanishlarni olish (GetUpdates) va foydalanuvchilarga javob qaytarish uchun ishlab chiqilgan bo’lib,katta jamoa(community) tomonidan rivojlantirib kelinmoqda.

Kursimiz uchun sizga kerak bo’ladi:

  • Kamida Python’ning 3.7 versiyasi o’rnatilgan bo’lishi;
  • Python dasturlash tilini kamida boshlang’ich darajada bilish;
  • pip va venv (virtual environment) bilan ishlashni bilish.

Foydali manbalar:

Kursimizning mundarijasi:

  • BotFather orqali bot ochish;
  • Xabarlar bilan ishlash;
  • Tugmalar bilan ishlash;
  • Ketma-ketlik bo’yicha foydalanuvchidan ma’lumotlarni qabul qilish(FSM).

BotFather orqali bot ochish

  1. Dastlab @BotFather‘ni telegramdagi qidiruv qismidan qidirib olamiz:
Rasmdagi kabi rasmiy belgisi bor bot haqiqiy @BotFather hisoblanadi.

2. Botga kirganingizdan so’ng “Запустить” (Boshlash,Start) tugmasini bosing.

Bunga javoban bot sizga botdagi mavjud buyruqlarni yuboradi.

3. “/newbot” buyrug’ini yuboring;

4. O’chmoqchi bo’lgan botingizni nomini kiriting;

5.O’chmoqchi bo’lgan botingizning username’ni kiriting;

Bot username’mining oxiri bot so’zi bilan tugashi shart!

Bot muvvaffaqiyatli ochilgan bo’lsa BotFather sizga shunday xabar jo’natadi:

Kirish qismi

Keling avval bizga kerakli frameworkni, yani Aiogram’ni o’rnatib olamiz:

pip install aiogram

Kod yozishga kirishishdan avval alohida vertual muhut yaratib olish tavsiya etiladi!

Bot yozish uchun yangi papka yaratib olib, o’sha papkaning ichida bot.py nomli fayl yaratib olamiz. Endi kod yozish qismiga o’tsak bo’ladi, quyidagi kodni bot.py faylimizga yozamiz:

import logging
from aiogram import Bot, Dispatcher, executor, types


# Muhim xabarlarni o'tkazib yubormaslik uchun loglarni sozlab, yoqib qo'yamiz
logging.basicConfig(level=logging.INFO)

# Bot obyekti
bot = Bot(token="API_TOKEN")
# Bot uchun dispetcher
dp = Dispatcher(bot)

# Botga jo'natilgan /start buyrug'ini qabul qilib olish uchun handler
@dp.message_handler(commands=['start'])
async def start_cmd(message: types.Message):
    # foydalanuvchiga javoban salom beradi
    await message.answer("Assalomu alaykum!")

# Foydalanuvchilardan kelgan matnni(textni) qabul qilib olish uchun handler
@dp.message_handler(content_types=['text'])
async def echo(message: types.Message):
    # Foydalanuvchi jo'natgan matnga javoban jo'natgan matnini o'ziga yuboradi
    await message.reply(message.text)


if __name__ == '__main__':
    # Botimizni ishga tushiramiz
    executor.start_polling(dp,skip_updates=True)

API_TOKEN o’rniga @BotFather jo’natgan botimizning Tokenini qo’yamiz.

Keling endi yuqoridagi kodga biroz to’xtalib o’tsak:

E’tibor bergan bo’lsangiz aiogram asinxron(async) framework hisoblanadi. Shuning uchun funksiyadan oldin async, Telegram Bot API‘dagi metodlarga murojaat qilishdan avval esa await qo’shib yoziladi.

Foydalanuvchidan kelayotgan xabarlarni “ushlab” olish uchun dekoratordan foydalaniladi va handler yoziladi, handlerning ichiga esa sharti yoziladi. Handler’ning ichidagi sharti bizga foydalanuvchidan kelayotgan xabarni tekshirishga, agar biz yozgan shartga to’g’ri kelsa tagidagi funksiyaga o’tkazib yuborishi uchun kerak bo’ladi.

Hozir shunchaki yuzaki tushuntirdik, kursimiz davomida InshaAlloh ko’proq tushunchaga ega bo’lasiz. Keling endi yuqoridagi kodni run qilib ko’ramiz, agar botimiz muvaffaqiyatli ishga tushirilsa run qilganimizda terminalda shunga o’xshash yozuv chiqadi:

INFO:aiogram:Bot: TexnoKun.Uz uchun [@TexnoKunUzBot]
WARNING:aiogram:Updates were skipped successfully.
INFO:aiogram.dispatcher.dispatcher:Start polling.

Botimiz muvaffaqiyatli ishga tushganidan so’ng keling uni ishlatib ko’ramiz:

Biz siz bilan foydalanuvchi /start buyrug’ini jo’natsa unga Assalomu alaykum! deb xabar jo’natadigan va har qanday matnli xabar jo’natsa, usha matnli xabarini o’ziga javoban qaytaradigan kichik bot qildik. Shu o’rinda aytib o’tish kerakki /startga bot bizga jo’natgan xabar oddiy xabar hisoblanadi, har-qanday matn jo’natsak bizning xabarimizga javoban jo’natgani esa reply xabar hisoblanadi.

Keyingi qism: Xabarlar bilan ishlash(1-dars).

Mavzuga oid maqolalar