Aiogram 2
from aiogram import Bot, Dispatcher, types, F
from asyncio import run
dp = Dispatcher()
async def echo(message: types.Message, bot: Bot):
await message.copy_to(chat_id=message.chat.id)
async def start():
dp.message.register(echo)
bot = Bot("6923568104:AAG5CQQmPU0_CG-Ym3dwdGNC5ZFjRcYB9cY")
await dp.start_polling(*bots: bot, polling_timeout=1)
run(start()) AIOGRAM kutubxonasi yordamida yozilgan oddiy Telegram echo-boti
(ya’ni foydalanuvchi yuborgan xabarni o‘ziga qaytaradigan bot).
🧩 KOD IZOHLI HOLDA
from aiogram import Bot, Dispatcher, types, F from asyncio import run
aiogram— Telegram bot yaratish uchun asinxron (async) Python kutubxonasi.Bot— Telegram API bilan ishlash uchun obyekt (token orqali bog‘lanadi).Dispatcher— xabarlarni qayta ishlovchi tizim.types— Telegramdagi turli xabar turlari (message, photo, video va boshqalar) uchun tiplash.run—asynciokutubxonasidan, asinxron funksiyani ishga tushirish uchun kerak.
dp = Dispatcher()
- Bu yerda Dispatcher obyektini yaratdik.
- U botga kelgan barcha xabarlarni ushlab, kerakli handler (funksiya)ga yuboradi.
async def echo(message: types.Message, bot: Bot):
await message.copy_to(chat_id=message.chat.id)echo— handler (ya’ni xabarni qayta ishlovchi funksiya).message.copy_to()— foydalanuvchi yuborgan xabarni o‘sha chatga qayta yuboradi.
Natijada bot siz yozgan xabarni sizga qaytaradi.async— bu funksiya asinxron ishlashini bildiradi.
async def start():
dp.message.register(echo)
bot = Bot("6923568104:AAG5CQQmPU0_CG-Ym3dwdGNC5ZFjRcYB9cY")
await dp.start_polling(*bots: bot, polling_timeout=1)
start()— botni ishga tushirish uchun asosiy funksiya.dp.message.register(echo)—echofunksiyasini har bir yangi xabar uchun handler sifatida ro‘yxatdan o‘tkazadi.bot = Bot("...")— sizning bot tokeningiz bilanBotobyektini yaratadi (tokenni @BotFather dan olasiz).dp.start_polling()— Telegram serveridan yangi xabarlarni doimiy ravishda olishni boshlaydi.
polling_timeout=1— har bir so‘rov orasidagi kutish vaqti (sekundda).
⚠️ Ammo bu yerda xato bor —*bots: botnoto‘g‘ri yozilgan, to‘g‘risi shunday bo‘lishi kerak:await dp.start_polling(bot, polling_timeout=1)
run(start())
- Bu
asyncio.run()yordamida asinxronstart()funksiyasini ishga tushiradi. - Natijada bot onlayn bo‘ladi va foydalanuvchi yuborgan xabarlarni qaytarishni boshlaydi.
⚙️ JARAYON QISQACHA
- Bot Telegram serveriga ulanadi (
Bottoken orqali). Dispatcheryangi xabarlarni kuzatadi.- Har safar foydalanuvchi xabar yuborganda →
echo()funksiyasi ishga tushadi. - Xabar nusxasi (copy) qayta yuboriladi → “echo” effekti hosil bo‘ladi.
- Bot polling rejimida doimiy ishlaydi (to’xtamaguncha).
2-Amaliyot
Bot foydalanuvchi yuborgan xabarni:
Lotin ↔ Кирилл avtomatik tarjima qiluvchi Telegram bot
from aiogram import Bot, Dispatcher, types
from asyncio import run
from transliterate import to_cyrillic, to_latin # transliteratsiya uchun kutubxona
# 🔑 Bot tokeningiz
BOT_TOKEN = "6923568104:AAG5CQQmPU0_CG-Ym3dwdGNC5ZFjRcYB9cY"
# 🧠 Bot va Dispatcher obyektlari
bot = Bot(token=BOT_TOKEN)
dp = Dispatcher()
# 🔄 Har bir kelgan xabarni avtomatik tarjima qiladi
@dp.message()
async def convert_text(message: types.Message):
text = message.text
# Agar matnda faqat lotin harflar bo‘lsa → kirillga o‘giradi
if text.isascii():
response = to_cyrillic(text)
else:
# Aks holda → lotinga o‘giradi
response = to_latin(text)
# Natijani qaytarish
await message.answer(response)
# 🚀 Botni ishga tushirish
async def main():
print("Bot ishga tushdi ✅")
await dp.start_polling(bot)
if __name__ == "__main__":
run(main())
🧩 Qanday ishlaydi:
- Foydalanuvchi botga yozadi (
salomyokiсалом). - Kod matndagi belgilarni tekshiradi:
- Bot avtomatik tarjima qilib, javob yuboradi.
⚙️ Kerakli kutubxona
Bu kod ishlashi uchun avval quyidagi kutubxonani o‘rnating:
pip install transliterate
Kodning izohi:
from aiogram import Bot, Dispatcher, types from asyncio import run from transliterate import to_cyrillic, to_latin # transliteratsiya uchun kutubxona
🔹 aiogram — Telegram bot yaratish uchun asinxron Python kutubxonasi.
🔹 Bot — Telegram bilan aloqa qiladi (token orqali).
🔹 Dispatcher — xabarlarni boshqaradi, ularni kerakli funksiyaga yuboradi.
🔹 types — Telegramdagi obyektlar (xabar, chat, foydalanuvchi va h.k.).
🔹 run — asyncio modulidan, asinxron dasturlarni ishga tushiradi.
🔹 to_cyrillic, to_latin — transliterate kutubxonasidagi funksiyalar,
ular matnni lotindan kirillga yoki kirilldan lotinga o‘giradi.
BOT_TOKEN = "6923568104:AAG5CQQmPU0_CG-Ym3dwdGNC5ZFjRcYB9cY"
🔹 Bu — botning tokeni (siz uni @BotFather dan olasiz).
U Telegram bilan bog‘lanish uchun kalit vazifasini bajaradi.
bot = Bot(token=BOT_TOKEN) dp = Dispatcher()
🔹 bot obyekt — Telegram API bilan aloqa qiladi.
🔹 dp (Dispatcher) — botga kelgan har bir xabarni kuzatadi
va mos funksiya (handler)ni ishga tushiradi.
@dp.message()
async def convert_text(message: types.Message):
text = message.text
🔹 Bu — handler (ya’ni xabarni qabul qiluvchi funksiya).
@dp.message() dekoratori orqali convert_text() funksiyasi
har safar foydalanuvchi yangi xabar yuborganda avtomatik ishga tushadi.
🔹 message.text — foydalanuvchi yuborgan matn.
if text.isascii():
response = to_cyrillic(text)
else:
response = to_latin(text)
🔹 .isascii() — agar matndagi belgilar lotincha bo‘lsa, True qaytaradi.
Shunda bot lotindan kirillga o‘giradi.
🔹 Aks holda (False) — demak, matn kirillchada.
Bu holda bot kirilldan lotinga o‘giradi.
- foydalanuvchi:
salom
→isascii()= True →response = "салом" - foydalanuvchi:
салом
→isascii()= False →response = "salom"
await message.answer(response)
🔹 Bot o‘girgan matnni foydalanuvchiga javob sifatida yuboradi.
async def main():
print("Bot ishga tushdi ✅")
await dp.start_polling(bot)
🔹 main() — botni ishga tushirish uchun asinxron funksiya.
🔹 dp.start_polling(bot) — bot polling rejimida ishlaydi, ya’ni
Telegram serveridan yangi xabarlar kelganini doim kuzatib turadi.
Har bir yangi xabar kelganda — convert_text() funksiyasi ishlaydi.
🔹 print() — konsolda bot ishga tushganini ko‘rsatadi.
if __name__ == "__main__":
run(main())
🔹 Bu Python’ning standart yozuvi:
agar fayl to‘g‘ridan-to‘g‘ri ishga tushirilsa → main() funksiyasini chaqiradi.
🔹 run(main()) — asinxron funksiya ishga tushadi.
⚙️ Jarayon qanday ishlaydi:
- Bot Telegram bilan ulanadi (token orqali).
- Foydalanuvchi xabar yuboradi (
salomyokiсалом). - Bot matnning yozuv turini aniqlaydi (
isascii()). - Matnni lotin ↔ кирилл shaklida o‘giradi.
- Natijani foydalanuvchiga yuboradi.
- Bot doimiy ravishda yangi xabarlarni kuzatadi (polling).