در این راهنما یاد میگیرید
- ربات را با BotFather بسازید و توکن را در فایل خصوصی نگه دارید.
- با سورس کامل، پاسخ به دستور و متن را در گفتوگوی خصوصی آزمایش کنید.
- پس از تست محلی، پردازش ربات را روی هاست اجرا و مدیریت کنید.
۱. در BotFather ربات بسازید و توکن بگیرید
در این آموزش ساخت ربات تلگرام با پایتون، یک ربات پاسخگو میسازیم. ربات به /start و /help پاسخ میدهد و متن را در گفتوگوی خصوصی تکرار میکند. برای اجرا، حساب تلگرام، Python نسخهٔ ۳.۱۰ یا جدیدتر و اتصال به Telegram Bot API لازم دارید.
- در تلگرام، BotFather رسمی را باز کنید و دستور
/newbotرا بفرستید. - یک نام نمایشی و سپس نام کاربری یکتا با پسوند
botانتخاب کنید. - توکن را برای مرحلهٔ تنظیم پروژه نگه دارید. اگر توکن افشا شد، آن را در BotFather باطل کنید و توکن تازه بگیرید.
ویدئوی آپارات برای مرحلهٔ BotFather
توکن مثل رمز ربات است. آن را در کد عمومی، اسکرینشات، گیت یا لاگ منتشر نکنید. راهنمای رسمی دریافت توکن تلگرام
۲. محیط پایتون و فایلهای پروژه را آماده کنید
یک پوشه برای پروژه بسازید و ترمینال را در همان پوشه باز کنید. فایل requirements.txt را با این محتوا ذخیره کنید. نسخهٔ کتابخانهٔ اصلی را ثابت میکنیم تا کد نمونه با همان رابط اجرا شود.
python-telegram-bot==22.8
python-dotenv
ویندوز در PowerShell
py -3 --version
py -3 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
لینوکس و macOS
python3 --version
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
کنار requirements.txt فایلی به نام .env بسازید و مقدار نمونه را با توکن خودتان جایگزین کنید. اگر از Git استفاده میکنید، .env و .venv/ را به .gitignore اضافه کنید.
TELEGRAM_BOT_TOKEN=PASTE_YOUR_BOTFATHER_TOKEN_HERE
۳. سورس ربات تلگرام با پایتون را بنویسید
کد زیر را در فایل bot.py کنار .env ذخیره کنید. CommandHandler دستورها را به تابع مناسب میفرستد و MessageHandler متن معمولی را به تابع echo میرساند. فیلترها پاسخگویی را به گفتوگوی خصوصی محدود میکنند.
import os
from pathlib import Path
from dotenv import load_dotenv
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes, MessageHandler, filters
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
if update.effective_message:
await update.effective_message.reply_text("سلام! یک پیام متنی بفرستید یا /help را بزنید.")
async def help_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
if update.effective_message:
await update.effective_message.reply_text("هر متن را در همین گفتوگو برایتان تکرار میکنم.")
async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE):
message = update.effective_message
if message and message.text:
await message.reply_text(message.text)
def main():
load_dotenv(Path(__file__).resolve().with_name(".env"))
token = os.getenv("TELEGRAM_BOT_TOKEN", "").strip()
if not token:
raise SystemExit("Set TELEGRAM_BOT_TOKEN in .env before running the bot.")
app = Application.builder().token(token).build()
private_chat = filters.ChatType.PRIVATE
app.add_handler(CommandHandler("start", start, filters=private_chat))
app.add_handler(CommandHandler("help", help_command, filters=private_chat))
app.add_handler(MessageHandler(private_chat & filters.TEXT & ~filters.COMMAND, echo))
app.run_polling()
if __name__ == "__main__":
main()
توابع پاسخ با async def تعریف شدهاند و با await منتظر ارسال پاسخ میمانند. run_polling() برنامه را فعال نگه میدارد تا پیامهای تازه را از تلگرام دریافت کند. مستندات polling در python-telegram-bot
۴. ربات را روی رایانه اجرا کنید
از همان پوشه، در PowerShell دستور .\.venv\Scripts\python.exe bot.py و در لینوکس یا macOS دستور .venv/bin/python bot.py را اجرا کنید. ترمینال را باز نگه دارید و گفتوگوی خصوصی ربات را در تلگرام باز کنید.
/startرا بفرستید و منتظر پیام خوشآمد باشید./helpرا بزنید تا توضیح کوتاه ربات را ببینید.- متنی مثل «سلام» بفرستید. ربات باید همان متن را برگرداند.
با Ctrl+C اجرای محلی را متوقف کنید. برای تمرین طراحی ربات تلگرام با پایتون، یک دستور مثل /about اضافه کنید. یک تابع پاسخ بنویسید و با CommandHandler آن را ثبت کنید.
۵. ربات پایتونی را روی هاست اجرا کنید
برای اینکه ربات با خاموششدن رایانه همچنان پاسخ دهد، هاست ربات تلگرام یا محیط دیگری با امکان اجرای پیوستهٔ پردازش انتخاب کنید. پیش از راهاندازی روی هاست، اجرای محلی همان ربات را متوقف کنید.
bot.pyوrequirements.txtرا در پوشهای خارج ازpublic_htmlقرار دهید. فایل.envرا خصوصی روی هاست بسازید.- محیط مجازی را روی هاست از نو بسازید و وابستگیها را نصب کنید. اجرای کوتاه در ترمینال کمک میکند اتصال به تلگرام و پاسخ به
/startرا بسنجید. - اجرای دستی را متوقف کنید و برای اجرای مداوم، پردازش را با ابزار میزبان مثل BotCTL مدیریت کنید. بعد از بستن ترمینال، دوباره به ربات پیام بدهید و وضعیت و لاگ را ببینید.
برای مسیر دقیق آپلود، ساخت محیط مجازی و ثبت فرایند، آموزش اجرای ربات تلگرام روی هاست cPanel را دنبال کنید.
رفع خطاهای رایج ساخت ربات تلگرام
خطای ModuleNotFoundError: No module named 'telegram' یعنی چه؟
کتابخانه باید در همان محیطی نصب شود که bot.py را اجرا میکند. دستور نصب requirements.txt را با مفسر داخل .venv اجرا کنید. نام بسته python-telegram-bot است.
چرا خطای InvalidToken یا Unauthorized میگیرم؟
توکن و نام متغیر TELEGRAM_BOT_TOKEN را بررسی کنید. فایل .env باید کنار bot.py باشد. اگر توکن را در BotFather عوض کردهاید، مقدار تازه را وارد کنید و برنامه را دوباره اجرا کنید.
چرا هنگام polling خطای Conflict میگیرم؟
بررسی کنید فقط یک پردازش با این توکن polling میکند و webhook قبلی فعال نیست. اگر قصد دارید از webhook به polling برگردید، تنظیم webhook را با deleteWebhook بردارید. مستندات تغییر به polling