PYTHON· TELEGRAM BOT API · AIOGRAM 3
Pythonдо
Telegram-бот
түзүү
Бот деген эмне, ал кантип иштейт жана аны 32 саптык код менен кантип жазабыз
@dp.message(CommandStart()) async def start(message: Message): await message.answer("Салам!")
02Бот
Telegram-бот деген эмне?
Бот — Telegramдагы атайын аккаунт. Ага адам эмес, программа жооп берет.
Кадимки аккаунттан айырмасы
@BotFather аркылуу түзүлөт
Телефон номери керек эмес.
Онлайн статусу жок
Атынын жанында «бот» деп жазылып турат.
Биринчи жаза албайт
Адам өзү /start басышы керек. Бул спамдан коргойт.
Эмне үчүн колдонушат
- Суроолорго жооп берет
- Эскертме жиберет
- Тест жана сурамжылоо өткөрөт
- Буйрутма кабыл алат
- Онлайн жазылууну кабыл алат
Булак: core.telegram.org/bots
03Архитектура
Бот кантип иштейт?
Колдонуучу
Телефондо же компьютерде Telegram
Telegram
Серверлер жана Bot API
Биздин программа
Python + aiogram, сиздин компьютерде
Булак: 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
Боттун сырсөзү. Аны кийинки кадамда алабыз.
!Python 3.15 азырынча aiogram 3.31 менен иштебейт.
05BotFather
BotFather жана токен
@BotFather'ди табыңыз
Атынын жанында көк белги болушу керек.
/newbot деп жазыңыз
BotFather боттун атын сурайт.
Атын жазыңыз
Мисалы: Мектеп жардамчысы.
Username ойлоп табыңыз
Латынча, аягы bot менен бүтөт: school_helper_bot.
1234567890:AAH…ЖАСАЛМА-МИСАЛСхема. Чыныгы BotFather англисче жазат.
06Проект
Проектти даярдоо
telegram-bot/ ├── .venv/ библиотекалар ушул жерде └── bot.py боттун коду
Токен эмне үчүн өзгөрмөдө?
Код аны os.getenv("BOT_TOKEN") менен окуйт. Ошондо токен файлда калбайт жана кокустан GitHub'га кетпейт.
Виртуалдык окружение түзүү
Сап башында (.venv) чыгат.
py -m venv .venv .\.venv\Scripts\Activate.ps1
aiogram орнотуу
Бир жолу гана жасалат.
python -m pip install aiogram==3.31.0
Токенди берүү
PowerShell'ди жапсаңыз, кайра жазасыз.
$env:BOT_TOKEN = "токениңиз"
Бул буйруктар PowerShell'ге жазылат. Activate.ps1 иштебесе, бир жолу: Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
07Код
Боттун коду
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Талдоо
Код эмне кылат
Импорт
from aiogram import Bot, Dispatcher, F
Библиотекадан керектүү бөлүктөрдү алабыз.
Диспетчер
dp = Dispatcher()
Келген билдирүүнү туура функцияга жөнөтөт. Почточу сыяктуу.
Декоратор
@dp.message(CommandStart()) @dp.message(F.text)
«/start келсе, ушул функцияны иштет». F.text — каалаган текст. Биринчи туура келгени иштейт.
async / await
async def start(message): await message.answer(...)
Бот бир адамга жооп жөнөтүп жатканда, башкаларды күттүрбөйт.
Polling
await dp.start_polling(bot)Бот Telegramдан «жаңы билдирүү барбы?» деп улам сурап турат.
Булак: docs.aiogram.dev
09Ишке киргизүү
Иштетүү жана каталар
(.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
Мисал: 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