ساخت اولین ربات تلگرام با پایتون
ربات تلگرام یکی از لذتبخشترین پروژههای شروع پایتون است: با چند ده خط کد، چیزی میسازید که واقعاً کار میکند و میتوانید به دوستانتان نشان بدهید. من با همین مسیر رباتهایی ساختهام که الان کاربر واقعی دارند — مثل ربات رصد قیمت که در نمونهکارهایم هست.
پیشنیازها
- پایتون نصبشده (آموزش نصب)
- یک اکانت تلگرام
قدم اول: گرفتن توکن از BotFather
در تلگرام، ربات رسمی @BotFather را باز کنید و:
- دستور
/newbotرا بفرستید - یک اسم نمایشی بدهید (مثلاً «ربات اول من»)
- یک username که به
botختم شود بدهید (مثلاًmy_first_1234_bot)
BotFather یک توکن میدهد شبیه این:
7412345678:AAHfXw3v9tK2mQ...
این توکن کلید ربات شماست — به هیچکس ندهید و هیچوقت داخل کد در گیتهاب نگذارید.
قدم دوم: نصب کتابخانه
داخل یک محیط مجازی، محبوبترین کتابخانه ربات تلگرام را نصب کنید:
pip install python-telegram-bot
قدم سوم: رباتی که سلام میکند
فایل bot.py را بسازید:
from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters, ContextTypes
TOKEN = "توکن-خودت-را-اینجا-بگذار"
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text("سلام! من اولین ربات توام 🤖")
async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text(f"گفتی: {update.message.text}")
app = Application.builder().token(TOKEN).build()
app.add_handler(CommandHandler("start", start))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))
print("ربات روشن شد...")
app.run_polling()
اجرا کنید:
python bot.py
حالا در تلگرام ربات خودتان را پیدا کنید و /start بفرستید — جواب میدهد! هر پیام متنی دیگری هم بفرستید، عین همان را برمیگرداند.
کد را بفهمیم
CommandHandler("start", start)— وقتی کاربر/startبفرستد، تابعstartاجرا میشودMessageHandler(filters.TEXT & ~filters.COMMAND, echo)— هر پیام متنی (به جز دستورها) به تابعechoمیرودrun_polling()— ربات مدام از سرور تلگرام میپرسد «پیام جدیدی هست؟»
قدم چهارم: یک قابلیت واقعی
بیایید دستور /dollar بسازیم که (فعلاً) یک عدد ثابت برگرداند:
async def dollar(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text("دلار امروز: ۱۰۰,۵۰۰ تومان")
app.add_handler(CommandHandler("dollar", dollar))
قدم بعدی طبیعی؟ گرفتن قیمت واقعی از یک سایت — یعنی دقیقاً موضوع آموزش وباسکرپینگ با پایتون.
تمرین
دستور /help بسازید که لیست دستورهای ربات را نشان بدهد، و یک شرط به echo اضافه کنید که اگر کاربر «سلام» فرستاد، جواب خاصی بگیرد.