PYTHON· TELEGRAM BOT API · AIOGRAM 3

Pythonдо
Telegram-бот
түзүү

Бот деген эмне, ал кантип иштейт жана аны 32 саптык код менен кантип жазабыз

bot.py
@dp.message(CommandStart())
async def start(message: Message):
    await message.answer("Салам!")
/start
Салам! Мага бир нерсе жазыңыз.

02Бот

Telegram-бот деген эмне?

Бот — Telegramдагы атайын аккаунт. Ага адам эмес, программа жооп берет.

Кадимки аккаунттан айырмасы

@BotFather аркылуу түзүлөт

Телефон номери керек эмес.

Онлайн статусу жок

Атынын жанында «бот» деп жазылып турат.

Биринчи жаза албайт

Адам өзү /start басышы керек. Бул спамдан коргойт.

Эмне үчүн колдонушат

  • Суроолорго жооп берет
  • Эскертме жиберет
  • Тест жана сурамжылоо өткөрөт
  • Буйрутма кабыл алат
  • Онлайн жазылууну кабыл алат
Мисалы, мектептин боту /schedule деп жазсаң, эртеңки сабактардын тизмесин жиберет.

Булак: core.telegram.org/bots

03Архитектура

Бот кантип иштейт?

Колдонуучу

Телефондо же компьютерде Telegram

1
4

Telegram

Серверлер жана Bot API

2
3

Биздин программа

Python + aiogram, сиздин компьютерде

1Колдонуучу ботко /start жазат.
2Telegram билдирүүнү сактап турат. Биздин программа аны сурап алат.
3Программа жооп даярдап, Telegramга жөнөтөт.
4Telegram жоопту колдонуучуга жеткирет.
Bot API — программалар Telegram менен ушул аркылуу байланышат. Суроо HTTPS аркылуу жөнөтүлөт, жооп JSON форматында келет.

Булак: core.telegram.org/bots/api

04Даярдык

Эмне керек?

Python

3.12 – 3.14

python.org сайтынан жүктөп алыңыз. Орнотуп жатканда «Add python.exe to PATH» белгисин коюңуз.

Редактор

VS Code же IDLE

Кодду ушул жерде жазабыз. IDLE Python менен кошо орнотулат.

aiogram

3.31.0

Telegram менен иштөө үчүн даяр библиотека. pip менен орнотулат.

Токен

@BotFather

Боттун сырсөзү. Аны кийинки кадамда алабыз.

Библиотека деген эмне? Башка программисттер жазып койгон даяр код. aiogram болбосо, Telegram менен иштөөнү нөлдөн өзүбүз жазмакпыз.

!Python 3.15 азырынча aiogram 3.31 менен иштебейт.

Булак: python.org/downloads · pypi.org/project/aiogram

05BotFather

BotFather жана токен

1

@BotFather'ди табыңыз

Атынын жанында көк белги болушу керек.

2

/newbot деп жазыңыз

BotFather боттун атын сурайт.

3

Атын жазыңыз

Мисалы: Мектеп жардамчысы.

4

Username ойлоп табыңыз

Латынча, аягы bot менен бүтөт: school_helper_bot.

Токенди эч кимге көрсөтпөңүз. Ал кимде болсо, ошол адам ботуңузду толук башкарат. Ачыкка чыгып кетсе: /mybots → бот → API Token → Revoke current token.
BotFatherбот
/newbot
Боттун атын жазыңыз.
Мектеп жардамчысы
Эми username. Ал bot менен бүтүшү керек.
school_helper_bot
Даяр! Токен:
1234567890:AAH…ЖАСАЛМА-МИСАЛ

Схема. Чыныгы BotFather англисче жазат.

Булак: core.telegram.org/bots/tutorial

06Проект

Проектти даярдоо

Папка
telegram-bot/
├── .venv/   библиотекалар ушул жерде
└── bot.py   боттун коду

Токен эмне үчүн өзгөрмөдө?

Код аны os.getenv("BOT_TOKEN") менен окуйт. Ошондо токен файлда калбайт жана кокустан GitHub'га кетпейт.

1

Виртуалдык окружение түзүү

Сап башында (.venv) чыгат.

py -m venv .venv
.\.venv\Scripts\Activate.ps1
2

aiogram орнотуу

Бир жолу гана жасалат.

python -m pip install aiogram==3.31.0
3

Токенди берүү

PowerShell'ди жапсаңыз, кайра жазасыз.

$env:BOT_TOKEN = "токениңиз"

Бул буйруктар PowerShell'ге жазылат. Activate.ps1 иштебесе, бир жолу: Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

07Код

Боттун коду

bot.py
1import asyncio
2import logging
3import os
4
5from aiogram import Bot, Dispatcher, F
6from aiogram.filters import CommandStart
7from aiogram.types import Message
8
9dp = Dispatcher()
10
11
12@dp.message(CommandStart())
13async def start(message: Message) -> None:
14    await message.answer("Салам! Мага бир нерсе жазыңыз.")
15
16
17@dp.message(F.text)
18async def echo(message: Message) -> None:
19    await message.answer(f"Сиз жаздыңыз: {message.text}")
20
21
22async def main() -> None:
23    bot = Bot(token=os.getenv("BOT_TOKEN"))
24    await dp.start_polling(bot)
25
26
27if __name__ == "__main__":
28    logging.basicConfig(level=logging.INFO)
29    try:
30        asyncio.run(main())
31    except KeyboardInterrupt:
32        print("Бот токтоду.")

Сактоо

Бул кодду bot.py деп сактаңыз.

Ар бир бөлүк

1–7: библиотекалар
9: диспетчер
12–14: /start'ка жооп
17–19: текстти кайталайт
22–24: ботту иштетет
27–32: баштоо жана Ctrl+C

Өзүңүз кошуп көрүңүз

Стикер жөнөтсө, бот унчукпайт: ал үчүн функция жазылган эмес.

08Талдоо

Код эмне кылат

1

Импорт

from aiogram import Bot, Dispatcher, F

Библиотекадан керектүү бөлүктөрдү алабыз.

2

Диспетчер

dp = Dispatcher()

Келген билдирүүнү туура функцияга жөнөтөт. Почточу сыяктуу.

3

Декоратор

@dp.message(CommandStart())
@dp.message(F.text)

«/start келсе, ушул функцияны иштет». F.text — каалаган текст. Биринчи туура келгени иштейт.

4

async / await

async def start(message):
    await message.answer(...)

Бот бир адамга жооп жөнөтүп жатканда, башкаларды күттүрбөйт.

5

Polling

await dp.start_polling(bot)

Бот Telegramдан «жаңы билдирүү барбы?» деп улам сурап турат.

Булак: docs.aiogram.dev

09Ишке киргизүү

Иштетүү жана каталар

PowerShell
(.venv) PS C:\telegram-bot> python bot.py
INFO:aiogram.dispatcher:Start polling
INFO:aiogram.dispatcher:Run polling for bot
  @school_helper_bot id=1234567890
1«Start polling» чыкса, бот иштеп жатат.
2Telegramдан ботуңузду таап, /start басыңыз.
3Токтотуу үчүн терминалда Ctrl + C басыңыз.

Мисал: username жана id сиздикинде башкача болот.

Көп кездешкен каталар

Token is invalid!

Токен жок же туура эмес көчүрүлгөн. $env:BOT_TOKEN сабын кайра жазыңыз.

Unauthorized

Токен эскирген же жокко чыгарылган. BotFather'ден жаңысын алыңыз.

No module named 'aiogram'

.venv активдештирилген эмес же aiogram орнотулган эмес.

Conflict: terminated by other getUpdates request

Бир бот эки жерде иштеп жатат. Бирөөсүн токтотуңуз.

Булак: core.telegram.org/bots/faq

10Жыйынтык

Андан ары

Бот дайыма иштеши үчүн

Компьютер өчсө, бот да өчөт. Ошондуктан ботту серверге коюшат: VPS же cloud-сервис. Көбү акылуу, акысыз тарифтер чектелүү.

Эмнени кошсо болот

Баскычтар жана меню
Маалымат базасы
Аба ырайы, валюта курсу
Webhook жана сервер

Булак: core.telegram.org/bots

АВТОР

Асангазиев Атай