Ин чӣ тавр кор мекунад · Дарси 1 аз 4Барои навомӯзон · 10 дақиқа хондан
Боти Telegram чӣ тавр кор мекунад — ба тавре шарҳ медиҳам, ки ҳатто кӯдак фаҳмад
Роҳи як паёмро аз телефон то бот ва бозгашт пайгирӣ кунед, дар худи саҳифа боти хурд созед ва коди воқеиро бинед. Таҷриба лозим нест.
🎯 Дар ин дарс шумо мефаҳмед
- бо паём байни телефон ва бот чӣ мешавад
- бот ҷавобро чӣ тавр интихоб мекунад — ва боти худро месозед
- фарқи polling ва webhook
- токени ботро чӣ тавр бехатар нигоҳ доштан
Мундариҷа
Шумо ба бот «/start» менависед ва камтар аз як сония ӯ ҷавоб медиҳад — бо номатон, бо тугмаҳо, баъзан бо расм. Чунин менамояд, ки дар он тараф одам нишастааст. Аммо ҳеҷ кас нест. Пас кӣ ҷавоб медиҳад?
Дар ин мақола ҳама чиз аз аввал шарҳ дода мешавад. Мо тамоми роҳи як паёмро пайгирӣ мекунем, шумо худатон дар ҳамин саҳифа боти хурд месозед ва дар охир коди воқеиро мебинед, ки ҳамин корро мекунад. Агар ягон бор код нанавишта бошед — хуб, мақола барои шумост. Агар навишта бошед — бахшҳои охир чуқуртар мераванд.
Ҷавоби кӯтоҳ: фурӯшандае, ки ҳеҷ гоҳ хоб намеравад
Як мағозаи хурдро бо фурӯшандаи хеле чаққон тасаввур кунед. Дар девор рӯйхати қоидаҳо овезон аст: «Агар нархро пурсанд — нархномаро нишон деҳ. Агар пурсанд, ки кай кушода аст — бигӯ: аз 9 то 6. Агар нафаҳмидӣ — бо эҳтиром аз нав пурс».
Боти Telegram маҳз ҳамин фурӯшанда аст. Ӯ барнома аст: рӯйхати қоидаҳое, ки бо код навишта шудааст. Ӯ мисли одам фикр намекунад ва хаста намешавад. Навиштаи шуморо мехонад, қоидаи мувофиқро меёбад ва ҷавоб медиҳад. Рӯзе ҳазорҳо маротиба, соати сеи шаб ҳам.
Се ёрдамчӣ кор мекунанд:
- Telegram — почта. Ҳар паёмро байни шумо ва бот мебарад.
- Сервери бот — мағзи сар. Компютере дар ягон ҷои дунё, ки барномаи бот дар он кор мекунад.
- Пойгоҳи додаҳо — дафтарча. Бот он чиро, ки фаромӯш кардан мумкин нест, дар он менависад: забони шумо, фармоиши шумо, саволи охирини шумо.
Сафари паём
Акнун як паёмро пайгирӣ мекунем. Интихоб кунед, ки чӣ фиристем, ва Қадами навбатӣ (ё Оғоз)-ро пахш кунед — бинед, ки паём дар ҳар лаҳза дар куҷост. Дар равзанаи торик намоён аст, ки додаҳо дар ин қадам воқеан чӣ гуна менамоянд.
Санҷед
Сафари паём
Қадами 1 аз 6 · Шумо → Telegram
Шумо «Фиристодан»-ро пахш мекунед. Телефон матнро ба серверҳои Telegram мефиристад — на мустақим ба бот.
"/start"Аҷибтарин чизро пай бурдед? Паёми шумо ҳеҷ гоҳ рост ба бот намеравад. Он ҳамеша аз Telegram мегузарад — ба ҳар ду тараф. Барои ҳамин бот метавонад ба шумо ҳамзамон дар телефон, ноутбук ва планшет ҷавоб диҳад: расонданро Telegram ба уҳда дорад, бот фақат фикр мекунад.
Се ёрдамчӣ, як ба як
Telegram: почта
Аввал паёми шуморо серверҳои Telegram мегиранд. Барои бот онҳо боз як кор мекунанд: паёмро ба навсозӣ (update) табдил медиҳанд — бастаи хурд бо тамға. Дар тамға навишта шудааст, ки кӣ фиристод, аз кадом чат, кай ва дар дохил чӣ ҳаст (матн, акс, пахш кардани тугма).
Инчунин Telegram ба ҳар бот дар интернет суроға медиҳад — Bot API. Бот бо Telegram фақат тавассути ҳамин суроға гап мезанад, бо хоҳишҳои содда: «бастаҳои навро деҳ» ё «ин матнро ба чати 123456 фирист».
Сервер: мағзи сар
Барномаи бот бояд дар ягон ҷо кор кунад — тамоми рӯз ва тамоми шаб. Ҳамин «ягон ҷо» сервер аст: компютери оддӣ дар маркази додаҳо, ки ҳеҷ гоҳ хомӯш намешавад. Боти хабарии ман дар сервери хурди иҷоравӣ дар абр кор мекунад, ва Kursi Tojik — сайти қурби асъор, ки ман сохтам, — дар шабакаи Cloudflare кор мекунад.
Вақте навсозӣ меояд, барнома бедор мешавад, онро мехонад, қоидаро интихоб мекунад ва ҷавоб медиҳад. Баъд навбатиро интизор мешавад.
Пойгоҳи додаҳо: дафтарча
Бе дафтарча бот шуморо фавран баъд аз ҷавоб фаромӯш мекард. Пурсед «Нархаш чанд?», баъд «Расонданаш чӣ?» — ва ӯ намефаҳмад, ки гап дар бораи ҳамон як фармоиш аст.
Барои ҳамин бот ҳама чизро дар пойгоҳи додаҳо менависад — дафтарчаи хеле батартиб аз ҷадвалҳо, монанди Excel. Барои ҳар одам як сатр: рақами чат, забон, чӣ фармоиш дод. Вақте боз менависед, бот аввал шуморо дар дафтарча меёбад.
Фармонҳо ва тугмаҳо
Фармон — паёмест, ки бо хати моил сар мешавад: /start, /help, /price. Фармонҳо дарҳои асосии бот мебошанд. Вақте «/» менависед, Telegram ҳатто менюи онҳоро нишон медиҳад. Ҳар бот аввал /start-ро мегирад: маҳз онро Telegram ба ҷои шумо мефиристад, вақте тугмаи калони Оғоз-ро пахш мекунед.
Тугмаҳо ду хел мешаванд:
- Клавиатураи бот — тугмаҳо ба ҷои клавиатураи шумо. Пахш кардан матни тугмаро мефиристад, гӯё шумо онро навиштед.
- Тугмаҳои инлайн — тугмаҳо рост дар зери паёми бот. Пахш кардан матн намефиристад: бот сигнали оромро (callback) мегирад, масалан
buy:42. Баъд бот метавонад паёмро иваз кунад, саҳифаи навбатиро нишон диҳад ё фармоишро тасдиқ кунад.
Тугмаҳо на барои зебоӣ лозиманд. Онҳо одамонро аз хатои чопӣ ва ботро аз тахмин наҷот медиҳанд.
Боти худро созед
Вақти барномасоз шудан расид. Дар поён боте бо ду қоида ҳаст. Калимаҳоро иваз кунед, қоида илова кунед ва дар чати санҷишӣ ба бот нависед. Ба навиштаи хурди хокистарранг дар зери ҳар ҷавоб нигоҳ кунед: он мегӯяд, ки кадом қоида кор кард.
Санҷед
Боти худро созед
Чати санҷишӣ
Ҳамин бот бо Python
@dp.message()
async def answer(message: Message):
text = (message.text or "").lower()
if "нарх" in text:
await message.answer("Нархҳои мо аз 500 сомонӣ сар мешаванд. Рӯйхати пурраро фиристам?")
elif "вақт" in text:
await message.answer("Мо ҳар рӯз аз соати 9:00 то 18:00 кор мекунем.")
else:
await message.answer("Бубахшед, нафаҳмидам. Дар бораи нарх ё вақти кор пурсед.")Ин таҷрибаҳоро санҷед:
- «нарх?» нависед, баъд «НАРХ!!!» — ҳар ду бор кор мекунад, зеро бот бо ҳарфҳои хурд муқоиса мекунад.
- Ду қоидае созед, ки ба як паём мувофиқанд. Кадомаш ҷавоб медиҳад? Ҳамеша аввалин аз боло. Тартиб муҳим аст.
- Чизе нависед, ки ягон қоида намедонад. Бот вайрон намешавад — ҷавоби пешфарзро мегирад. Боти хуб ҳамеша онро дорад.
- Ҳамин бот бо Python-ро кушоед. Ин коди воқеӣ аст. Ҳар қоидаи шумо ба сатри
elifтабдил меёбад. Шумо ҳоло барнома навиштед, бе он ки ягон сатр чоп кунед.
Ғояи «агар ин — пас он» дили ҳар бот аст. Ботҳои калон фақат қоидаҳои бештар ва роҳҳои зирактари санҷиши онҳоро доранд.
Бот «100 usd»-ро чӣ тавр мефаҳмад
Одамон мисли мошин намонависанд. Яке «100 usd» менависад, дигаре «100$», сеюмӣ «100 доллар», чорумӣ «1 000 сомонӣ». Боти хуб бояд ҳамаро фаҳмад.
Сирр дар он аст, ки корро ба қадамҳои хурд тақсим кунем, ки ҳар кадомаш осон бошад. Дар поён маблағҳои гуногун нависед ва ҳар қадамро бинед.
Санҷед
Бот «100 usd»-ро чӣ тавр мефаҳмад
- 1. Тартиб додан: ҳарфҳои хурд, як фосила
- "100 usd"
- 2. Рақамро ёфтан
- 100
- 3. Номи асъорро ёфтан
- USD
4. Бот чиро фаҳмидМаблағ 100, асъор USD. Акнун бот бо он кор карда метавонад.
Бинед, вақте чизе намерасад, чӣ мешавад: бот тахмин намекунад. Агар асъор набошад — мепурсад. Бо пул тахмин кардан роҳи рост ба хатост. Ин қоида дар ҳар лоиҳаи ман ҳаст: агар боварӣ надорӣ — аз одам пурс, ҳеҷ гоҳ рақам наофар.
Ду роҳи гирифтани паём: қуттии почта ва зангӯлаи дар
Бот чӣ тавр мефаҳмад, ки навсозии нав омад? Ду роҳ ҳаст, ва донистани онҳо арзиш дорад — сохти бот аз онҳо вобаста аст.
Polling — қуттии почтаро санҷидан. Бот ҳамеша аз Telegram мепурсад: «Чизи нав ҳаст? … Ҳозир чӣ?» Telegram ҳар саволро муддате кушода нигоҳ медорад (инро long polling меноманд) ва ҳамин ки паём омад, ҷавоб медиҳад. Ин содда аст, дар ҳар компютер кор мекунад — ҳатто дар ноутбуки хонагӣ — ва барои омӯзиш ва ботҳои хурд беҳтарин аст.
Webhook — зангӯлаи дар. Бот як бор суроғаи веби худро ба Telegram мегӯяд. Аз ҳамон лаҳза Telegram худаш «зангӯларо мезанад»: ҳар навсозиро ҳамон замон ба ин суроға мефиристад. Ба бот пурсидан лозим нест. Барои ин сервер бо суроғаи дурусти HTTPS лозим аст, аммо он захираҳоро сарфа мекунад ва бо зиёд шудани корбарон хуб кор мекунад. Платформаҳои бесервер монанди Cloudflare Workers фақат ҳамин тавр кор карда метавонанд: онҳо танҳо вақте бедор мешаванд, ки касе дарро мекӯбад.
| Polling (қуттӣ) | Webhook (зангӯла) | |
|---|---|---|
| Гуфтугӯро кӣ сар мекунад | бот аз Telegram мепурсад | Telegram ботро даъват мекунад |
| Суроғаи оммавии HTTPS лозим аст | не | ҳа |
| Барои чӣ мувофиқ аст | омӯзиш, ботҳои хурд, компютери хонагӣ | ботҳои корӣ, корбарони бисёр, serverless |
Токен: калиди бот
Вақте ботро тавассути ёрдамчии расмии Telegram — @BotFather месозед, шумо токен мегиред — сатри дарозе монанди 123456789:AAH.... Токен калиди бот аст. Касе, ки онро дорад, метавонад паёмҳои ботро хонад ва аз номи ӯ нависад.
Се қоида, бе истисно:
- Ҳеҷ гоҳ токенро ба коде, ки ба GitHub меравад, ба скриншот ё ба мукотиба нагузоред.
- Онро дар ҷои махфӣ нигоҳ доред, ки сервер ҳангоми оғоз мехонад: тағйирёбандаи муҳит ё анбори махфии хостинг.
- Агар токен фош шуд — @BotFather-ро кушоед, ботро интихоб кунед ва токенро бекор кунед (revoke). Калиди кӯҳна фавран кор намекунад ва шумо калиди нав мегиред.
Ботҳои ман маҳз ҳамин тавр сохта шудаанд: токен фақат дар анбори махфии сервер нигоҳ дошта мешавад ва код онро аз он ҷо мегирад.
Бот чиро карда наметавонад
Донистани маҳдудиятҳо — сарфаи пул ва асаб аст:
- Бот аввал навишта наметавонад. Одам бояд худаш ботро кушояд ва «Оғоз»-ро пахш кунад. Танҳо баъд аз ин бот ба ӯ навишта метавонад. Ин ҳамаро аз спам муҳофизат мекунад.
- Дар гурӯҳҳо бот бо пешфарз ҳама чизро намебинад. Дар «реҷаи махфият» ӯ фақат фармонҳо ва паёмҳоеро мегирад, ки ба худи ӯ нигаронида шудаанд.
- Бот фақат он чиро медонад, ки ба ӯ омӯхтанд. Ба саволе, ки барояш қоида — ё модели зеҳни сунъӣ — нест, ҷавоб намедиҳад. Зеҳни сунъӣ ҷавобҳоро оқилтар мекунад, аммо касе бояд ҳал кунад, ки ба бот чӣ гуфтан мумкин аст ва чӣ не.
- Telegram суръатро маҳдуд мекунад. Бот дар як сония ҳазорҳо паём фиристода наметавонад; фиристодани оммавиро бояд дар вақт тақсим кард.
Чуқуртар: коди воқеӣ
Ин боти пурраи хурд бо Python ва китобхонаи машҳури aiogram аст. Ба /start салом медиҳад ва ҳамаи паёмҳои дигарро такрор мекунад.
import asyncio
import os
from aiogram import Bot, Dispatcher
from aiogram.filters import CommandStart
from aiogram.types import Message
dp = Dispatcher()
@dp.message(CommandStart())
async def start(message: Message):
# Қоидаи 1: одам «Оғоз»-ро пахш кард.
await message.answer("Салом! Ҳар чӣ фиристед — ман такрор мекунам.")
@dp.message()
async def echo(message: Message):
# Қоидаи 2: ҳама чизи дигар. Ин «ҷавоби пешфарз» аст.
await message.answer(message.text or "Ҳоло ман фақат матнро хонда метавонам.")
async def main():
bot = Bot(token=os.environ["BOT_TOKEN"]) # токен аз анбори махфӣ, на аз код
await dp.start_polling(bot) # роҳи «қуттии почта»
asyncio.run(main())Онро мисли ҳикоя хонед:
Dispatcher— рӯйхати қоидаҳои бот.- Ҳар сатри
@dp.message(...)як қоидаро ба девор меовезад.CommandStart()маънои «фақат фармони /start»-ро дорад, қавсҳои холӣ — «ҳар паём». - Қоидаҳо аз боло ба поён санҷида мешаванд — мисли созандаи боло.
message.answer(...)аз Telegram хоҳиш мекунад, ки ҷавобро расонад. Дар паси он дархостиsendMessageаст, ки шумо дар сафари паём дидед.start_pollingсанҷиши қуттии почтаро сар мекунад — бепоён.
Ва ин аст, ки як навсозӣ ҳангоми расидан ба бот воқеан чӣ гуна менамояд (кӯтоҳ карда шуда):
{
"update_id": 81546203,
"message": {
"message_id": 52,
"from": { "id": 123456, "first_name": "Dilnoza", "language_code": "tg" },
"chat": { "id": 123456, "type": "private" },
"date": 1790930000,
"text": "/start"
}
}Ба language_code диққат диҳед. Telegram ба бот забони барномаи шуморо мегӯяд, барои ҳамин боти хуб метавонад аз паёми аввал бо шумо ба тоҷикӣ, русӣ ё англисӣ салом диҳад.
Боти воқеии тиҷоратӣ чӣ илова мекунад
Боти эхо — скелет аст. Боте, ки барои мағоза, клиника ё ташкилот кор мекунад, мушакҳо илова мекунад:
- Пойгоҳи додаҳо — мизоҷон, фармоишҳо, қабул ба духтур.
- Тугмаҳо ва қадамҳо — «хизматро интихоб кунед → рӯз → вақт → тасдиқ кунед», то касе бо даст чоп накунад.
- Одам дар раванд — бот дархостро ҷамъ мекунад, одам тасдиқ мекунад. Дар лоиҳаи хабарии ман зеҳни сунъӣ лоиҳаҳо менависад, аммо ҳар пост то он даме интизор мешавад, ки одам «Тасдиқ»-ро пахш кунад, ва танҳо баъд ба канал меравад.
- Ёдраскуниҳо — бот як рӯз пеш аз қабул ё пардохт менависад.
- Якчанд забон — ҳамон қоидаҳо, ҷавоб бо забони одам.
- Сабтҳо ва нусхаҳои эҳтиётӣ — то ҳеҷ чиз гум нашавад ва ҳар мушкилро пайгирӣ кардан мумкин бошад.
Худро санҷед
Санҷед
Худро санҷед
1. Вақте ба бот менависед, паёми шумо аввал ба куҷо меравад?
2. Ба як паём ду қоида мувофиқ аст. Кадомаш ҷавоб медиҳад?
3. Одам «100»-ро бе асъор навишт. Боти хуб чӣ бояд кунад?
4. Webhook чист?
5. Токени боти шумо дар скриншоти оммавӣ пайдо шуд. Чӣ бояд кард?
Луғати хурд
- Бот — барномае, ки дар Telegram аз рӯи қоидаҳо ҷавоб медиҳад.
- Bot API — суроғаи Telegram, ки ботҳо ба он дархост мефиристанд ва аз он навсозиҳо мегиранд.
- Навсозӣ (update) — бастаи Telegram: як паёми нав, пахши тугма ё ҳодисаи дигар.
- Фармон — паёме, ки бо «/» сар мешавад, масалан
/start. - Тугмаи инлайн — тугма дар зери паёми бот, ки ба бот сигнали ором мефиристад.
- Сервер — компютере, ки ҳамеша фаъол аст ва барномаи бот дар он кор мекунад.
- Пойгоҳи додаҳо — дафтарчаи батартиби бот.
- Polling — бот худаш доимо аз Telegram дар бораи навсозиҳо мепурсад.
- Webhook — Telegram худаш навсозиҳоро ба суроғаи веби бот мефиристад.
- Токен — калиди махфӣ, ки ботро идора мекунад.
Барои кори худ чунин бот лозим аст?
Ман барои тиҷорат ва ташкилотҳо ботҳои Telegram месозам: сабти қабул ва ёдраскуниҳо, фармоишҳо, ҷавоб ба саволҳои зуд-зуд, нашр дар канал — бо иштироки одам дар ҷое, ки муҳим аст, ба забонҳои тоҷикӣ, русӣ ва англисӣ. Дар Telegram ба ман нависед — @SimorghDev — ва бигӯед, кадом кор бештар вақти шуморо мегирад.