October 27

Aiogram 3.22 + Wikipedia API

Aiogram 3.22 + Wikipedia API – Telegram bot yaratish (o‘zbek tilida)


1. Maqsad

  • Telegram bot yaratamiz.
  • Foydalanuvchi matn yuborsa, o‘zbekcha Wikipediadan qisqa ma’lumot (summary) olib, javob qaytaradi.
  • Barcha kod Aiogram 3.22 asosida, asinxron usulda ishlaydi.

2. Kerakli kutubxonalar

bash

pip install aiogram==3.22.0 wikipedia-api
  • aiogram – Telegram Bot API bilan ishlash.
  • wikipedia-api – Wikipedia sahifalarini oson olish uchun.

3. Bot yaratish (BotFather)

  1. Telegramda @BotFather ga yozing.
  2. /newbot → bot nomini va username kiriting.
  3. Token olasiz → 7627050170:AAF2w-NYia_7u1GaTD6lW5wSLwEx4C9Tepc (masalan). Muhim: Tokenni hech kimga ko‘rsatmang!

4. Kod (to‘liq, izohli)

python

# 1. Importlar
import asyncio
from aiogram import Bot, Dispatcher, F
from aiogram.types import Message
from wikipediaapi import Wikipedia

# 2. Bot va sozlamalar
TOKEN = "7627050170:AAF2w-NYia_7u1GaTD6lW5wSLwEx4C9Tepc"   # <-- O'z tokeningiz
bot = Bot(token=TOKEN)
dp = Dispatcher()

# Wikipedia (o'zbek tili)
wiki = Wikipedia(
    user_agent="WikiBot (siz@email.com)",   # O'z emailingizni yozing!
    language="uz"
)

# 3. Handler: har qanday matnli xabar
@dp.message(F.text)
async def wiki_handler(message: Message):
    query = message.text.strip()          # foydalanuvchi so'zi
    page = wiki.page(query)               # Wikipedia sahifasini izlash

    if page.exists():                     # sahifa topilsa
        # 200 belgigacha qisqartiramiz
        summary = page.summary[:200] + "..." if len(page.summary) > 200 else page.summary
        # Javob yuborish (HTML format)
        await message.answer(
            f"<b>{page.title}</b>\n\n{summary}\n\n{page.fullurl}",
            parse_mode="HTML"
        )
    else:                                 # sahifa topilmasa
        await message.answer(f"'{query}' topilmadi. Boshqa so'z kiriting.")

# 4. Botni ishga tushirish
async def main():
    print("Bot ishga tushdi...")
    await dp.start_polling(bot)

if __name__ == "__main__":
    asyncio.run(main())

5. Kodni qator-qator tushuntirish (dars uchun)

Qator

Nima qiladi?

Nima uchun kerak?

import asyncio

Asinxron ishlash uchun

Bot bir vaqtda ko‘p xabarlarni qayta ishlay oladi

from aiogram import ...

Bot, Dispatcher, F

Botni boshqarish uchun asosiy vositalar

from aiogram.types import Message

Xabar tipini aniqlash

message.text ni olish uchun

from wikipediaapi import Wikipedia

Wikipedia API

Sahifalarni olish uchun

TOKEN = "..."

Bot tokeni

Botni Telegramga ulash

bot = Bot(token=TOKEN)

Bot obyekti yaratish

API bilan aloqa

dp = Dispatcher()

Xabarlarni yo‘naltiruvchi

Handlerlarni bog‘lash

wiki = Wikipedia(...)

Wikipedia sozlamalari

Til va identifikatsiya

@dp.message(F.text)

Dekorator – faqat matnli xabarlarga javob ber

/start emas, faqat oddiy matn

async def wiki_handler(message: Message):

Asinxron funksiya

await ishlatish uchun

query = message.text.strip()

Foydalanuvchi so‘zini olish

Bo‘sh joylarni olib tashlash

page = wiki.page(query)

Wikipedia sahifasini izlash

Ma’lumot olish

if page.exists():

Sahifa bor yoki yo‘qligini tekshirish

Xato oldini olish

summary = ...

200 belgigacha qisqartirish

Telegram xabarlari cheklangan

await message.answer(...)

Javob yuborish

Foydalanuvchiga ko‘rsatish

parse_mode="HTML"

<b> tegi ishlasin

Sarlavha qalin bo‘lsin

else:

Sahifa topilmasa

Foydalanuvchiga xabar berish

async def main():

Botni ishga tushirish

start_polling chaqirish

asyncio.run(main())

Asinxron dasturni ishga tushirish

Python tomonidan talab qilinadi


6. Botni sinash

  1. Faylni wiki_bot.py deb saqlang.
  2. Terminalda:

bash

python wiki_bot.py
  1. Telegramda botga yozing:
    • O'zbekiston → qisqa ma’lumot chiqadi
    • Toshkent → shahar haqida
    • Python → inglizcha sahifa (agar uz da bo‘lmasa) topilmaydi

7. Qo‘shimcha vazifalar (uyga)

Vazifa

Nima qilish kerak?

/start qo‘shish

Salomlashuv xabari

/help qo‘shish

Botdan foydalanish qo‘llanmasi

try-except qo‘shish

API xatolarini ushlash

Tilni tanlash

/lang uz yoki /lang en

Tugma qo‘shish

“To‘liq o‘qish” → havola


8. Xulosa

  • Aiogram – zamonaviy, tez, asinxron.
  • Wikipedia API – bepul, oddiy.
  • Bot – 30 qatordan kam kod bilan ishlaydi!