تیم فنی Source360 — این آموزش توسط توسعهدهندگان Source360 نوشته و روی Python 3.11 + Ubuntu 22.04 و Windows 11 تست شده است. محصولات ربات تلگرام ما در فروشگاه سورس موجود است.
ساخت ربات تلگرام با Python — خلاصه ۴ گام:
- ساخت بات در BotFather و دریافت توکن
- نصب
python-telegram-botدر محیط مجازی Python - نوشتن
bot.pyباCommandHandler - اجرای بات با
run_polling()و تست/start
فهرست مطالب
- پیشنیازها
- ساخت بات در BotFather
- نصب و ساختار پروژه
- نوشتن اولین ربات
- مقایسه کتابخانهها
- Polling و Webhook
- گامهای بعدی
- عیبیابی
- سوالات متداول
- جمعبندی
کاربر تلگرام → Telegram Bot API → bot.py (Python) → پاسخ به کاربر
شکل ۱ — جریان کار ربات تلگرام با Python
پیشنیازهای ساخت ربات تلگرام با Python
قبل از شروع ساخت ربات تلگرام با Python، این موارد را آماده کنید:
- Python 3.11 یا بالاتر — بررسی:
python --version - حساب فعال Telegram
- آشنایی پایه با Terminal و
pip - اتصال اینترنت پایدار (برای
getUpdatesدر حالت Polling)
اگر تازه با پایتون آشنا میشوید، مستندات Python و Telegram Bot API و مستندات python-telegram-bot سه منبع اصلی شما هستند. برای پروژههای آماده، خدمات توسعه Source360 را هم ببینید.
ساخت بات در BotFather
BotFather ربات رسمی تلگرام برای مدیریت Bot Entityهاست. هر بات یک API Token منحصربهفرد دارد.
- در تلگرام به @BotFather بروید.
/newbot→ نام نمایشی → username با پسوندbot- توکن را کپی کنید — شبیه:
7123456789:AAH... - اختیاری:
/setdescriptionو/setcommandsبرای منوی بات
امنیت: توکن را در .env بگذارید، نه در کد. افشای توکن = دسترسی کامل مهاجم به بات شما. اگر لو رفت، فوراً از BotFather با /revoke باطل کنید.
نصب کتابخانه و ساختار پروژه Python
mkdir telegram-bot && cd telegram-bot
python -m venv venv
venv\Scripts\activate # ویندوز
# source venv/bin/activate # لینوکس
pip install "python-telegram-bot==21.6" python-dotenvفایل requirements.txt:
python-telegram-bot==21.6
python-dotenv==1.0.1telegram-bot/
├── .env
├── .gitignore
├── bot.py
└── requirements.txtفایل .gitignore:
venv/
.env
__pycache__/
*.pycفایل .env:
BOT_TOKEN=توکن_دریافتی_از_BotFatherنوشتن اولین ربات — کد کامل bot.py
در python-telegram-bot نسخه ۲۱، همه Handlerها async هستند. این کد را تیم Source360 روی Python 3.11 تست کرده است:
import os
import logging
from dotenv import load_dotenv
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes
load_dotenv()
logging.basicConfig(
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
level=logging.INFO,
)
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
user = update.effective_user
await update.message.reply_text(
f"سلام {user.first_name}! من اولین ربات تلگرام شما هستم.\n"
"دستور /help را بزنید."
)
async def help_command(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
await update.message.reply_text(
"دستورات:\n/start — شروع\n/help — راهنما"
)
def main() -> None:
token = os.getenv("BOT_TOKEN")
if not token:
raise ValueError("BOT_TOKEN در .env تنظیم نشده است.")
app = Application.builder().token(token).build()
app.add_handler(CommandHandler("start", start))
app.add_handler(CommandHandler("help", help_command))
print("بات در حال اجرا... Ctrl+C برای توقف")
app.run_polling(allowed_updates=Update.ALL_TYPES)
if __name__ == "__main__":
main()python bot.pyدر تلگرام به بات بروید و /start بزنید. اگر پیام خوشآمد دریافت کردید، ساخت ربات تلگرام با Python با موفقیت انجام شده است.
نکته: برای دریافت chat_id، موقتاً print(update.effective_chat.id) در تابع start بگذارید. به chat_id برای ارسال پیام گروهی یا کانال نیاز دارید.
مقایسه کتابخانههای Python برای Telegram Bot
| کتابخانه | مدل | نقطه قوت | مناسب برای |
|---|---|---|---|
python-telegram-bot | async | مستندات رسمی، جامعه بزرگ | پروژه production |
aiogram | async | Middleware، FSM قوی | باتهای پرترافیک |
pyTelegramBotAPI | sync/async | سینتکس ساده | پروتوتایپ سریع |
برای یادگیری عمیق Telegram Bot API، python-telegram-bot بهترین نقطه شروع است. اگر به سورس آماده نیاز دارید، محصولات ربات تلگرام Source360 شامل باتهای تستشده با پشتیبانی فارسی است.
Polling در مقابل Webhook — کدام را انتخاب کنیم؟
| روش | مکانیزم | مناسب |
|---|---|---|
| Polling | بات مرتب getUpdates میزند | توسعه محلی، تست |
| Webhook | تلگرام Update را به URL سرور POST میکند | production، هاست cPanel |
روی هاست اشتراکی ایران معمولاً Webhook با HTTPS لازم است. برای اتصال بات به فروشگاه وردپرس، افزونههای اختصاصی Source360 این کار را ساده میکنند.
گامهای بعدی — توسعه ربات تلگرام
بعد از اولین بات، این قابلیتها را اضافه کنید:
- Inline Keyboard — دکمههای شیشهای زیر پیام
- MessageHandler — پاسخ به متن آزاد، نه فقط دستور
- ConversationHandler — گفتگوی چندمرحلهای (فرم سفارش)
- اتصال دیتابیس — SQLite یا PostgreSQL برای ذخیره کاربران
- Webhook روی سرور — برای استقرار روی سرور اختصاصی
اگر وقت کافی ندارید، سورس آماده ربات تلگرام را از Source360 بگیرید و سفارشیسازی کنید.
عیبیابی رایج ربات تلگرام Python
- 401 Unauthorized — توکن اشتباه؛
/tokenدر BotFather - بات پاسخ نمیدهد —
run_polling()اجرا نیست یا فایروال - Conflict: other getUpdates — دو نمونه
bot.pyهمزمان - ModuleNotFoundError — venv فعال نیست یا
pip installنشده - Webhook SSL error — گواهی HTTPS نامعتبر روی دامنه
سوالات متداول درباره ساخت ربات تلگرام با Python
ربات تلگرام با Python چقدر زمان میبرد؟
برای اولین بات با /start، ۳۰ تا ۶۰ دقیقه — شامل BotFather و کدنویسی.
بهترین کتابخانه Python برای ربات تلگرام کدام است؟
python-telegram-bot برای production و pyTelegramBotAPI برای شروع سریع.
آیا ساخت ربات تلگرام رایگان است؟
بله. Telegram Bot API رایگان است؛ هزینه فقط سرور در Webhook است.
Polling یا Webhook برای شروع بهتر است؟
Polling برای لپتاپ؛ Webhook برای سرور با HTTPS.
چطور توکن بات را امن نگه دارم؟
.env + .gitignore — هرگز commit نکنید.
آیا میتوان ربات را به وردپرس وصل کرد؟
بله — با افزونه یا Webhook. محصولات در فروشگاه Source360.
جمعبندی
در این آموزش ساخت ربات تلگرام با Python را از BotFather و Telegram Bot API تا اجرای run_polling() با python-telegram-bot پوشش دادیم. گام بعدی: Inline Keyboard، Webhook روی سرور، یا سورس آماده از Source360.
مطالب مرتبط: بلاگ فنی Source360 · خدمات توسعه · صفحه اصلی
نیاز به سورس آماده دارید؟
رباتهای تستشده تلگرام و افزونه وردپرس — با پشتیبانی فارسی
نظرات کاربران
فقط نظرات تاییدشده مدیر نمایش داده میشود.