فهرست مطالب
در کمتر از یک ساعت، یک بات تلگرام واقعی میسازی که به پیامها جواب میدهد، دستور میفهمد و دکمه دارد — با پایتون و کتابخانهٔ python-telegram-bot نسخهٔ ۲۲٫۸. نیازی به سرور گران یا دانش عمیق شبکه نیست؛ همین لپتاپی که الآن دستت است کافی است.
در این آموزش قدمبهقدم، اول با BotFather بات را ثبت میکنی و توکن میگیری، بعد پایتون و کتابخانه را نصب میکنی، بعد خطبهخط یک بات کامل مینویسی — همان کدی که منطقش را تست کردهایم و اسکرینشات دقیقش را هم میبینی — و آخرش یاد میگیری چطور آن را ۲۴ ساعته روی سرور نگه داری. اگر تا حالا بات نساختهای، دقیقاً جای درستی آمدهای.
پاسخ کوتاه
بات تلگرام یک «اکانت خودکار» است: شماره تلفن نمیخواهد و با یک رشتهٔ محرمانه به اسم توکن (یعنی «کلید شناسایی بات») به کد تو وصل میشود.
ساخت بات داخل خود تلگرام انجام میشود: گفتوگو با اکانت رسمی BotFather@ و فرستادن دستور /newbot — حدود دو دقیقه طول میکشد.
موتور باتِ این آموزش، کتابخانهٔ python-telegram-bot نسخهٔ ۲۲٫۸ است و به پایتون ۳٫۱۰ یا جدیدتر نیاز دارد.
تا پایان آموزش، بات تو سه دستور (/start، /help، /menu)، دکمههای تعاملی و حالت «اکو» (برگرداندن حرف خودت) دارد.
برای اینکه بات همیشه روشن بماند، آن را روی یک سرور اجرا میکنی؛ روی لپتاپ فقط تا وقتی روشن و به اینترنت وصل است کار میکند.
اول زمینه: بات تلگرام دقیقاً چیست؟
قبل از اینکه دست به کد بزنی، بگذار سه مفهوم را روشن کنیم؛ بعدش همهچیز سر جایش مینشیند.
بات چه فرقی با یک اکانت عادی دارد؟
به گفتهٔ تلگرام، باتها «اکانتهای خاص»اند: برای ساختنشان شماره تلفن لازم نیست و بیش از ۱۰ میلیون بات روی این پلتفرم فعالاند. سه فرق مهم با اکانت تو دارند: اول اینکه در چت، برچسب bot کنار اسمشان است. دوم اینکه نمیتوانند خودشان سر صحبت را باز کنند — اول تو باید به آنها پیام بدهی یا آنها را به گروه اضافه کنی. سوم اینکه آدرسشان همیشه با یوزرنیم است، مثل t.me/my_amoozesh_bot، و یوزرنیم بات معمولاً باید به bot ختم شود. اگر بات را به گروه اضافه کنی، بهصورت پیشفرض فقط پیامهای «مرتبط» را میبیند — به این میگویند حالت حریم خصوصی (یعنی بات فضول همهٔ حرفهای گروه نیست، فقط وقتی صدایش میزنی گوش میدهد).
Bot API یعنی چه؟
یعنی «رابط برنامهنویسی بات» — یک درگاه اینترنتی (HTTPS) که کد تو از طریق آن با سرور تلگرام حرف میزند. همهٔ درخواستها شکل ثابتی دارند: https://api.telegram.org/bot<توکن>/METHOD_NAME. مثلاً با همین آدرس میتوانی در مرورگر هم توکنت را تست کنی؛ جلوتر نشان میدهم. خوبیاش این است که تو اصلاً لازم نیست مستقیم با این آدرسها کار کنی — کتابخانه همهاش را قایم میکند.
چرا python-telegram-bot؟
چون رسمیترین و پراستفادهترین کتابخانهٔ پایتون برای همین کار است: یک «لفافهٔ» تمیز دور Bot API میپیچد تا تو بهجای ساختن دستی درخواستهای HTTP، فقط بگویی «وقتی کاربر /start را زد، این کار را بکن». نسخهای که در این آموزش استفاده میکنیم ۲۲٫۸ است که با Bot API نسخهٔ ۱۰٫۰ کار میکند. یک نکتهٔ فنی که باید بدانی: از نسخهٔ ۲۰ به بعد، این کتابخانه بر پایهٔ asyncio است — یعنی «ناهمگام»؛ به زبان ساده، بات میتواند همزمان به چند نفر جواب بدهد بدون اینکه قفل کند. به همین دلیل در کد، تابعها با async def نوشته میشوند و دستورهای شبکهای با await (یعنی «صبر کن تا جواب بیاید»).
اگر کنجکاوی باتهای واقعی در عمل چه شکلیاند، معرفی بات دانلودر تلگرام را ببین — همانجا توضیح دادهایم باتها چطور فایل میفرستند و چه محدودیتهایی دارند.
پیشنیازها
یک اکانت تلگرام (روی گوشی یا نسخهٔ دسکتاپ — فرقی نمیکند).
پایتون ۳٫۱۰ یا جدیدتر روی کامپیوترت (ویندوز، مک یا لینوکس).
آشنایی خیلی اولیه با پایتون: بدانی متغیر چیست، تابع چیست و چطور یک فایل را اجرا میکنی. اگر کاملاً صفر هستی، اول یک آموزش مقدماتی کوتاه پایتون ببین و بعد برگرد — این آموزش، آموزش پایتون نیست.
یک ویرایشگر متن. VS Code پیشنهاد میشود ولی نوتپد ساده هم جواب میدهد.
مرحلهٔ ۱ — بات را در BotFather بساز و توکن بگیر
هدف: یک بات رسمی ثبت کنی و «توکن» — کلید محرمانهٔ بات — را بگیری.
اقدام دقیق: تلگرام را باز کن و در جستوجو بنویس BotFather@ (همان اکانت رسمی با تیک آبی). دکمهٔ Start را بزن و بعد دستور /newbot را بفرست. باتفادر دو سؤال میپرسد: اول یک «نام نمایشی» — همان اسمی که کاربرها میبینند، مثلاً «بات آموزشی من». بعد یک «یوزرنیم» — همان آدرس بات — که حتماً باید به bot ختم شود، مثلاً my_amoozesh_bot. اگر یوزرنیم تکراری باشد، باتفادر میگوید و یکی دیگر انتخاب میکنی.
نتیجهای که باید ببینی: یک پیام تبریک میگیری که داخلش لینک بات (مثل t.me/my_amoozesh_bot) و مهمتر از همه، توکن است — رشتهای شبیه 4839574812:AAFD39kkdpWt3ywyRZergyOLMaJhac60qc (این نمونه از سند رسمی تلگرام است؛ مال تو فرق میکند). همین حالا آن را یک جای امن کپی کن.
خطای رایج: توکن را در گروه، کانال یا گیتهاب عمومی نگذار. به گفتهٔ تلگرام، توکن مثل رمز عبور است: هر که توکن را داشته باشد، کنترل کامل بات را دارد. اگر لو رفت، با دستور /revoke در باتفادر میتوانی باطلش کنی و یکی تازه بگیری.

گفتوگوی واقعی با BotFather: بعد از /newbot، نام نمایشی و یوزرنیم را میدهی و توکن را میگیری
مرحلهٔ ۲ — پایتون و کتابخانه را نصب کن
هدف: محیط برنامهنویسی را آماده کنی تا کد بات اجرا شود.
اقدام دقیق: ترمینال (یا CMD در ویندوز) را باز کن و بنویس:
python --version
باید نسخهٔ ۳٫۱۰ یا بالاتر را نشان بدهد — این شرط کتابخانه است، نه سلیقهٔ ما. اگر قدیمیتر است، از python.org نسخهٔ تازه را نصب کن. بعد کتابخانه را نصب کن:
pip install python-telegram-bot --upgrade
نتیجهای که باید ببینی: چند خط دانلود و در آخر Successfully installed python-telegram-bot-22.8 (یا نسخهای نزدیک به آن). هیچ خطای قرمزی نباید بماند.
خطای رایج: اگر بعداً خطای No module named 'telegram' دیدی، یعنی نصب کامل نشده یا داری با پایتون دیگری اجرا میکنی. دوباره همان دستور pip را بزن و مطمئن شو python و pip مال یک نصباند (با pip --version مسیرش را چک کن).

یک ویرایشگر مثل VS Code کارت را راحتتر میکند، ولی اجباری نیست
مرحلهٔ ۳ — اولین بات: سلامگو
هدف: کدی بنویسی که وقتی کسی /start را زد، بات با اسم خودش سلام کند.
اقدام دقیق: یک پوشهٔ تازه بساز (مثلاً mybot) و داخلش فایل bot.py را درست کن. اول این بخش را بنویس — ایمپورتها، خواندن توکن و تابع start:
import os
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes
TOKEN = os.environ.get("TELEGRAM_BOT_TOKEN", "توکن-بات-خودت-را-اینجا-بگذار")
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
** user = update.effective_user**
** await update.message.reply_text(f"سلام {user.first_name}! من بات آموزشی توام.")**
چند توضیح کوتاه که باید بدانی: خط TOKEN توکن را از متغیر محیطی (یعنی «تنظیمی که بیرون از کد، در سیستمعامل تعریف میشود») میخواند — این تمیزترین راه نگهداشتن رمز است و توکن را از داخل کد جدا نگه میدارد. تابع start یک «هندلر» است — یعنی «واکنشگر»؛ هر وقت آپدیتی از نوع دستور start آمد، این تابع صدا زده میشود. update همان «پیام رسیده» است و update.effective_user فرستندهاش را میدهد.
حالا ته فایل، بخش «روشن کردن بات» را اضافه کن:
def main() -> None:
** application = Application.builder().token(TOKEN).build()**
** application.add_handler(CommandHandler("start", start))**
** application.run_polling()**
if name == "main":
** main()**
اینجا سه کار انجام میشود: با Application.builder()...build() موتور بات ساخته میشود (همان الگوی رسمی مستندات)؛ با add_handler میگویی «دستور start را به تابع start وصل کن»؛ و run_polling یعنی «شروع کن به گوش دادن» — بات هر چند ثانیه از تلگرام میپرسد پیام تازهای هست؟ به این روش پولینگ (یعنی «پرسوجوی دورهای») میگویند.

کد واقعی بات (تستشده)؛ تورفتگیها را دقیق از روی همین تصویر ببین
حالا بات را اجرا کن. در ترمینال، از داخل همان پوشه:
TELEGRAM_BOT_TOKEN=توکن_واقعی_خودت python bot.py
(در ویندوز: اول set TELEGRAM_BOT_TOKEN=توکن_واقعی_خودت را بزن، بعد python bot.py.)

اجرای بات در ترمینال؛ وقتی بات گوش میدهد، ترمینال منتظر میماند
نتیجهای که باید ببینی: ترمینال چیزی چاپ نمیکند و فقط منتظر میماند — این طبیعی است؛ یعنی بات گوش میدهد. حالا در تلگرام، بات خودت را پیدا کن، Start را بزن یا /start را بفرست. باید جواب بگیری: «سلام [اسمت]! من بات آموزشی توام.» تبریک — بات تو زنده است!
خطای رایج: اگر بات جواب نداد، یادت باشد: اول تو باید به بات پیام بدهی. بات نمیتواند خودش شروعکنندهٔ گفتوگو باشد — این قانون تلگرام است، نه باگ کد تو.
مرحلهٔ ۴ — دستور /help را اضافه کن
هدف: بات یک راهنمای واقعی داشته باشد.
اقدام دقیق: بعد از تابع start، این تابع را اضافه کن:
async def help_command(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
** await update.message.reply_text("/start - شروع گفتگو\n/help - همین راهنما")**
و در main، قبل از run_polling، این خط را اضافه کن:
** application.add_handler(CommandHandler("help", help_command))**
نتیجهای که باید ببینی: بات را متوقف کن (Ctrl+C در ترمینال) و دوباره اجرا کن. حالا /help راهنما را برمیگرداند. قانون طلایی: بعد از هر تغییر کد، بات را ریاستارت کن — وگرنه نسخهٔ قدیمی در حافظه میماند.
مرحلهٔ ۵ — دکمههای شیشهای: بات تعاملی
هدف: بات با دکمه جواب بدهد و هر متن سادهای را «اکو» کند (یعنی همان را برگرداند).
اقدام دقیق: اول ایمپورتها را کامل کن:
from telegram import InlineKeyboardButton, InlineKeyboardMarkup, Update
from telegram.ext import Application, CallbackQueryHandler, CommandHandler, ContextTypes, MessageHandler, filters
بعد این دو تابع را اضافه کن — یکی منوی دکمهها، یکی واکنش به زدن دکمه:
async def menu(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
** keyboard = [[InlineKeyboardButton("ساعت چنده؟", callback_data="time")],**
** [InlineKeyboardButton("یک جوک بگو", callback_data="joke")]]**
** await update.message.reply_text("یکی را انتخاب کن:", reply_markup=InlineKeyboardMarkup(keyboard))**
async def button(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
** query = update.callback_query**
** await query.answer()**
** if query.data == "time":**
** from datetime import datetime**
** await query.edit_message_text(f"ساعت الان: {datetime.now():%H:%M}")**
** elif query.data == "joke":**
** await query.edit_message_text("چرا برنامهنویسها تاریکی را دوست دارند؟ چون نور باگها را نشان میدهد!")**
دکمههای «شیشهای» (InlineKeyboard) همان دکمههاییاند که زیر پیام میچسبند، نه جای کیبورد گوشی. هر دکمه یک callback_data دارد — یعنی «کد شناسایی دکمه»؛ وقتی کاربر میزند، تلگرام همین کد را برای بات میفرستد و تابع button تصمیم میگیرد. نکتهٔ مهم: اول query.answer() را صدا بزن — این به تلگرام میگوید «فهمیدم»، وگرنه دکمه ساعتشنی میماند.
و در آخر، هندلر «اکو» — برای هر متنی که دستور نیست:
async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
** await update.message.reply_text(f"تو گفتی: {update.message.text}")**
ثبت هر سه در main:
** application.add_handler(CommandHandler("menu", menu))**
** application.add_handler(CallbackQueryHandler(button))**
** application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))**
خط آخر یعنی: «فقط متنهایی که با / شروع نمیشوند» — چون filters.COMMAND دستورهاست و علامت ~ یعنی «نه». ترتیب مهم است: هندلرهای دستور را قبل از اکو ثبت کن تا /start بهاشتباه اکو نشود.

ادامهٔ کد واقعی بات؛ همین فایل را کامل در bot.py داری
نتیجهای که باید ببینی: بعد از ریاستارت، /menu دو دکمه نشان میدهد؛ زدن هر دکمه، همان پیام را با جواب تازه عوض میکند (edit_message_text یعنی «متن همان پیام را ویرایش کن»). فرستادن یک متن ساده مثل «سلام» هم برمیگرداند: «تو گفتی: سلام».
یک نکتهٔ فنی دربارهٔ تورفتگی: در پایتون، فاصلهٔ ابتدای خط (ایندنت) بخشی از زبان است. در متن مقاله فاصلهها ممکن است بههم بچسبند؛ قالب دقیق و نهایی را از روی تصویر کد بالا ببین — همان فایلی است که منطقش را تست کردهایم.
مرحلهٔ ۶ — بات را در تلگرام واقعی تست کن
هدف: مطمئن شوی همهچیز سر جایش کار میکند.
اقدام دقیق: بات در حال اجراست؛ در تلگرام این چکلیست را برو:
/start را بفرست — باید با اسمت سلام کند.
/help را بفرست — راهنما را ببین.
/menu را بفرست و هر دو دکمه را بزن — پیام باید عوض شود، نه اینکه پیام تازهای بیاید.
یک متن ساده مثل «هوا چطوره؟» بفرست — باید برگرداند: «تو گفتی: هوا چطوره؟»
یک دستور اشتباه مثل /blah بفرست — نباید کرش کند؛ فقط جوابی نمیدهد (چون هندلری برایش ثبت نکردهای).
نتیجهای که باید ببینی: هر پنج مورد درست کار میکند و در ترمینال هیچ خطای قرمزی نیست. اگر جایی خطا دیدی، همانجا نگه دار — بخش «عیبیابی» پایین برای همین است.

بات تو همینجا زندگی میکند: داخل اپ تلگرام، کنار بقیهٔ چتها
مرحلهٔ ۷ — اجرای ۲۴ ساعته روی سرور
هدف: بات با بستن لپتاپ نمیرد.
اقدام دقیق: تا اینجا بات روی کامپیوتر خودت اجراست و تا وقتی ترمینال باز است کار میکند. برای ۲۴ ساعته شدن، به یک کامپیوتر همیشهروشن نیاز داری — همان سرور مجازی (VPS) (یعنی «یک کامپیوتر اجارهای روی اینترنت که همیشه روشن است»). قدمها:
۱. فایل bot.py را به سرور منتقل کن (با scp یا با git).
۲. روی سرور هم پایتون ۳٫۱۰+ و کتابخانه را نصب کن: pip install python-telegram-bot
۳. برای اینکه با بستن ترمینال بات نمیرد، از systemd (یعنی «مدیر سرویسهای لینوکس») استفاده کن. یک فایل سرویس ساده بساز:
[Unit]
Description=بات تلگرام من
After=network.target
[Service]
Environment=TELEGRAM_BOT_TOKEN=توکن_واقعی_خودت
ExecStart=/usr/bin/python3 /home/user/mybot/bot.py
Restart=always
[Install]
WantedBy=multi-user.target
این فایل را با اسم mybot.service در /etc/systemd/system/ بگذار و بعد:
sudo systemctl enable --now mybot
نتیجهای که باید ببینی: با sudo systemctl status mybot وضعیت active (running) را میبینی. حالا ترمینال را ببند، لپتاپ را خاموش کن — بات همچنان جواب میدهد. خط Restart=always یعنی اگر بات به هر دلیلی کرش کرد، خودش دوباره بالا میآید.

بات ۲۴ ساعته روی چنین سرورهایی زندگی میکند — همیشه روشن، همیشه در دسترس
خطای رایج: اگر سرویس بالا نیامد، با journalctl -u mybot -e لاگ را ببین — نود درصد وقتها یا توکن اشتباه است یا مسیر فایل پایتون.
پولینگ یا وبهوک؟
تا اینجا از پولینگ استفاده کردیم — یعنی بات خودش هی میپرسد «پیام تازه هست؟». راه دوم وبهوک (یعنی «قلاب وب») است: تو یک آدرس اینترنتی به تلگرام میدهی و تلگرام هر پیام تازه را خودش به آن آدرس «هل» میدهد. جدول زیر کمک میکند انتخاب کنی:
| پولینگ (Polling) | وبهوک (Webhook) |
|---|---|---|
روش کار | بات هر چند ثانیه از تلگرام سؤال میکند | تلگرام خودش پیام را به سرور تو میفرستد |
نیاز به سرور عمومی | نه؛ روی لپتاپ هم کار میکند | بله؛ آدرس HTTPS عمومی لازم دارد |
پیچیدگی راهاندازی | کم — همان run_polling کافی است | بیشتر — دامنه و گواهی SSL میخواهد |
مناسب برای | شروع، تست و باتهای کمترافیک | باتهای پرترافیک و محصول واقعی |
جدول را اینطور بخوان: اگر تازه شروع کردهای یا باتت قرار است روزی چند ده پیام جواب بدهد، پولینگ نهتنها کافی است، بلکه سادهتر و کمدردسرتر است. وبهوک را برای وقتی نگه دار که باتت واقعاً گرفت و ترافیکش بالا رفت — کتابخانه با run_webhook از آن هم پشتیبانی میکند.
عیبیابی: شش خطای رایج
بات اصلاً جواب نمیدهد → اول تو به بات پیام بده. بات طبق قانون تلگرام نمیتواند گفتوگو را شروع کند. بعد چک کن توکن درست در متغیر محیطی نشسته باشد.
خطای 401 Unauthorized → یعنی «توکن نامعتبر است». یا اشتباه کپی کردهای یا باطل شده؛ از باتفادر با /revoke یکی تازه بگیر.
خطای Conflict: terminated by other getUpdates → یعنی «دو نسخه همزمان با یک توکن در حال اجراست». فقط یکی میتواند پولینگ کند؛ نسخهٔ قبلی (مثلاً روی لپتاپ) را ببند.
No module named 'telegram' → کتابخانه نصب نشده یا با پایتون دیگری اجرا میکنی. pip install python-telegram-bot را با همان پایتونی بزن که فایل را اجرا میکند.
بات در گروه به همهٔ پیامها واکنش نشان نمیدهد → حالت حریم خصوصی فعال است؛ بات فقط دستورها و ریپلایها را میبیند. اگر لازم داری همه را ببیند، در تنظیمات باتفادر (/setprivacy) آن را خاموش کن — ولی معمولاً لازم نیست.
پیام خیلی طولانی خطا میدهد → سقف هر پیام متنی در Bot API ۴۰۹۶ کاراکتر است (یعنی حدود یک صفحهٔ A4). متنهای بلند را تکهتکه بفرست.
سه قدم بعدی برای حرفهایتر شدن
بات تو الآن کامل و سالم است. اگر خواستی یک پله بالاتر بروی، این سهتا را به ترتیب یاد بگیر:
پیام زمانبندیشده با JobQueue: کتابخانه یک «صف کار» (یعنی «زمانبند داخلی») دارد که با آن میتوانی مثلاً هر صبح ساعت ۸ یک پیام یادآور بفرستی — بدون اینکه کدت همیشه بیدار بماند. برای فعالش باید کتابخانه را با افزونهٔ job-queue نصب کنی.
احترام به محدودیت نرخ: تلگرام برای جلوگیری از اسپم، به باتهایی که خیلی تند پیام میفرستند خطای 429 میدهد. هیچوقت در حلقه پیام پشت سر هم نفرست؛ بین پیامها کمی مکث بگذار.
امنیت توکن: توکن را هیچوقت داخل کد «هاردکد» نکن (یعنی مستقیم ننویس) و در گیتهاب عمومی نگذار. همین روش متغیر محیطی که در این آموزش استفاده کردیم، استاندارد است.
و اگر اصلاً حوصلهٔ کد نداری ولی ایدهٔ بات داری، راهنمای ساخت ابزار بدون کدنویسی با AI Studio را ببین — مسیر دیگری به همان مقصد است.
نکتهای برای خوانندهٔ فارسیزبان
دو نکتهٔ عملی که مخصوص شرایط توست: اول اینکه بات برای کار کردن باید بتواند به آدرس api.telegram.org دسترسی داشته باشد. اگر سرورت در ایران است، این اتصال ممکن است برقرار نشود؛ به همین دلیل بیشتر توسعهدهندههای ایرانی بات را روی یک سرور مجازی خارج از ایران اجرا میکنند — این یک واقعیت فنیِ رایج است، نه توصیهٔ ما. دوم اینکه خود کتابخانه در مستندات رسمیاش، گزینههای پیکربندی شبکه (از جمله SOCKS) را مستند کرده؛ اگر با شبکههای خاص کار میکنی، سند رسمی را بخوان و متناسب با شرایطت تصمیم بگیر.
یک نکتهٔ زبانی هم بگویم: بات تو فارسی را کامل پشتیبانی میکند — تلگرام و پایتون هر دو با یونیکد مشکلی ندارند. فقط یادت باشد متن فارسی را داخل رشتهها (کوتیشن) بنویسی، نه بهجای نام متغیرها.
جمعبندی
حالا تو یک بات تلگرام واقعی داری: با BotFather ثبتش کردی، با python-telegram-bot به آن جان دادی، سه دستور و دکمهٔ تعاملی به آن یاد دادی و بلدی ۲۴ ساعته روی سرور نگهش داری. قدم بعدی با توست: اگر ایدهای داری — بات یادآور، بات قیمت ارز، بات نظرسنجی برای کانالت — همین امروز شروعش کن؛ اسکلتی که ساختی برای همهشان یکی است. و اگر میخواهی باتت را به چیزهای بزرگتر وصل کنی، آموزش خودکارسازی پرپلکسیتی ایدههای خوبی برای قدم بعدی میدهد.
سؤالهای پرتکرار
آیا ساخت بات تلگرام هزینه دارد؟
نه. به گفتهٔ تلگرام، پلتفرم بات هم برای کاربر و هم برای توسعهدهنده رایگان است. تنها هزینهٔ احتمالی، اجارهٔ سرور مجازی است — و تا وقتی بات را روی کامپیوتر خودت اجرا میکنی، همان هم صفر است.
اگر اصلاً برنامهنویسی بلد نباشم چه؟
این آموزش فرض میکند دستکم مقدمات پایتون را میدانی (متغیر، تابع، اجرای فایل). اگر کاملاً صفر هستی، اول یک آموزش مقدماتی کوتاه پایتون ببین و بعد برگرد؛ خودِ باتسازی چیز پیچیدهای نیست.
باتم به پیامها جواب نمیدهد؛ مشکل کجاست؟
سهتا را به ترتیب چک کن: ۱) آیا اول تو به بات پیام دادهای؟ ۲) آیا توکن درست در متغیر محیطی است؟ ۳) آیا نسخهٔ دیگری از بات (مثلاً روی لپتاپ) همزمان اجراست؟ نود درصد مشکلها یکی از همینهاست.
توکن باتم لو رفته؛ چه کار کنم؟
در گفتوگو با BotFather دستور /revoke را بفرست تا توکن فعلی باطل و یکی تازه صادر شود. بعد توکن تازه را جایگزین کن. این کار را سریع انجام بده چون هر که توکن را داشته باشد کنترل بات را دارد.
میتوانم بات را به گروه اضافه کنم؟
بله. ولی بدان که بهصورت پیشفرض «حالت حریم خصوصی» روشن است و بات فقط دستورها و پیامهایی که ریپلای باتاند را میبیند. برای باتهای مدیریتی گروه معمولاً همین کافی است.
فرق پولینگ و وبهوک دقیقاً چیست؟
در پولینگ، باتِ تو سؤال میکند «پیام تازه هست؟»؛ در وبهوک، تلگرامِ پیام تازه را به آدرس سرور تو میفرستد. برای شروع و باتهای کوچک، پولینگ سادهتر است؛ جزئیات را در جدول همین مقاله ببین.
بات میتواند فایل هم بفرستد؟
بله — عکس، ویدیو، صدا و فایل. طبق سند Bot API، باتها فعلاً میتوانند فایل تا ۵۰ مگابایت ارسال کنند (یعنی حدود یک قسمت سریال با کیفیت متوسط). متدهایی مثل send_photo و send_document برای همیناند.
منابع
مستندات رسمی python-telegram-bot: docs.python-telegram-bot.org (نسخهٔ ۲۲٫۸، بازدید ۱۹ مهر ۱۴۰۵)
راهنمای رسمی باتهای تلگرام: core.telegram.org/bots
آموزش رسمی «از BotFather تا Hello World»: core.telegram.org/bots/tutorial
مرجع کامل Bot API: core.telegram.org/bots/api
صفحهٔ شروع کتابخانه: python-telegram-bot.org




