🔥یلدا با راکت با (( ۷۰ درصد‌ )) تخفیف! یلدا طولانی است، اما این تخفیف نه.

مشاهده دوره‌ها
ثانیه
دقیقه
ساعت
روز
آموزش ساخت ربات تلگرام با پایتون از صفر تا صد
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 12 دقیقه

آموزش ساخت ربات تلگرام با پایتون از صفر تا صد

ربات‌های تلگرام به یکی از پرکاربردترین ابزارهای ارتباطی و اتوماسیون در فضای دیجیتال تبدیل شده‌اند. از پاسخ‌گویی خودکار در کانال‌های خبری گرفته تا مدیریت سفارش‌ها، نظرسنجی‌ها، و حتی آموزش‌های تعاملی، ربات‌ها نقش مهمی در ساده‌سازی تعاملات و افزایش بهره‌وری ایفا می‌کنند. اما برای بسیاری از علاقه‌مندان به برنامه‌نویسی، ساخت یک ربات از صفر ممکن است کاری پیچیده و مبهم به نظر برسد.

در این مطلب، قصد داریم مسیر ساخت یک ربات تلگرام با زبان پایتون را از ابتدایی‌ترین مراحل تا پیاده‌سازی حرفه‌ای و انتشار روی سرور، به‌صورت گام‌به‌گام و با مثال‌های عملی بررسی کنیم. این مقاله نه‌تنها برای مبتدی‌ها طراحی شده، بلکه برای توسعه‌دهندگانی که به دنبال ساخت ربات‌های کاربردی، قابل توسعه و امن هستند نیز مفید خواهد بود.

در طول مسیر، با مفاهیم کلیدی مانند دریافت توکن از BotFather، مدیریت پیام‌ها و دستورات، طراحی منوهای تعاملی، ذخیره‌سازی داده‌ها، و اجرای ربات روی سرور آشنا خواهید شد. همچنین با چالش‌های امنیتی، محدودسازی کاربران، و نگهداری پروژه در محیط واقعی روبه‌رو می‌شوید و راه‌حل‌های عملی برای آن‌ها دریافت می‌کنید.

پیش‌نیازها

پیش از آن‌که وارد دنیای کدنویسی و ساخت ربات شویم، لازم است چند ابزار و مفهوم پایه را بشناسیم و آماده کنیم. این مرحله نه‌تنها از بروز خطاهای رایج جلوگیری می‌کند، بلکه مسیر یادگیری را روان‌تر و قابل پیش‌بینی‌تر می‌سازد.

1. آشنایی مقدماتی با پایتون

اگر تاکنون با پایتون کار نکرده‌اید، نگران نباشید. برای ساخت ربات تلگرام، تنها به دانستن مفاهیم پایه‌ای مانند متغیرها، توابع، شرط‌ها و حلقه‌ها نیاز دارید. اگر با این مفاهیم آشنا نیستید، پیشنهاد می‌شود ابتدا یک آموزش مقدماتی پایتون را مشاهده کنید.

2. نصب پایتون و ابزارهای توسعه

برای شروع، باید پایتون را روی سیستم خود نصب کنید. آخرین نسخه را از python.org دریافت و نصب نمایید. پس از نصب، با اجرای دستور زیر در ترمینال، مطمئن شوید که پایتون به‌درستی نصب شده است:

python --version

همچنین نصب ابزار مدیریت بسته‌ها (pip) ضروری است. معمولاً همراه با پایتون نصب می‌شود، اما می‌توانید با دستور زیر بررسی کنید:

pip --version

برای نوشتن و اجرای کدها، استفاده از محیط توسعه‌ای مانند VS Code یا PyCharm توصیه می‌شود.

3. ساخت حساب تلگرام و دریافت توکن از BotFather

برای ساخت ربات، باید یک حساب تلگرام داشته باشید. سپس مراحل زیر را طی کنید:

  • در تلگرام، کاربر @BotFather را جستجو کنید.
  • دستور /newbot را ارسال کنید.
  • نام و نام کاربری (username) ربات را انتخاب کنید.
  • پس از تأیید، BotFather یک توکن (کلید دسترسی) برای شما ارسال می‌کند.

این توکن مانند رمز عبور ربات شماست، آن را در جای امنی نگه دارید و در کدهای خود استفاده کنید.

4. نصب کتابخانه‌های مورد نیاز

برای تعامل با API تلگرام، کتابخانه‌های مختلفی وجود دارند. یکی از محبوب‌ترین‌ها python-telegram-bot است. برای نصب آن، کافی‌ست دستور زیر را اجرا کنید:

pip install python-telegram-bot

در ادامه مطلب، از این کتابخانه برای ساخت ربات استفاده خواهیم کرد. اگر کتابخانه دیگری مدنظر دارید (مثل telebot یا aiogram)، می‌توانید مسیر را با آن‌ها نیز تطبیق دهید.

شروع پروژه

اکنون که ابزارها و توکن ربات را در اختیار داریم، وقت آن رسیده که اولین قدم عملی را برداریم و پروژه ساخت ربات را آغاز کنیم. در این بخش، پوشه پروژه را ایجاد می‌کنیم، فایل اصلی را می‌نویسیم، کتابخانه را فراخوانی می‌کنیم و اتصال ربات به تلگرام را تست می‌کنیم.

1. ایجاد پوشه و فایل اصلی

در سیستم خود یک پوشه جدید برای پروژه بسازید. مثلاً:

mkdir telegram_bot
cd telegram_bot

سپس یک فایل پایتون با نام دلخواه ایجاد کنید، مثلاً:

touch bot.py

2. فراخوانی کتابخانه و تنظیم توکن

در فایل bot.py، ابتدا کتابخانه python-telegram-bot را فراخوانی کرده و توکن دریافتی از BotFather را وارد کنید:

from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes

TOKEN = 'place token here'

3. تعریف دستور /start

در ادامه، یک تابع ساده برای پاسخ‌گویی به دستور /start تعریف می‌کنیم:

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text('Hello World.')

4. راه‌اندازی اپلیکیشن و افزودن هندلر

اکنون باید اپلیکیشن ربات را راه‌اندازی کرده و هندلر مربوط به دستور /start را به آن اضافه کنیم:

if __name__ == '__main__':
    app = ApplicationBuilder().token(TOKEN).build()
    app.add_handler(CommandHandler('start', start))
    app.run_polling()

5. اجرای ربات

برای اجرای ربات، کافی‌ست دستور زیر را در ترمینال وارد کنید:

python bot.py

اگر همه چیز درست باشد، ربات شما فعال می‌شود و با ارسال دستور /start در تلگرام، پاسخ «سلام! ربات شما فعال شد.» را دریافت خواهید کرد.

پاسخ‌گویی به پیام‌ها و ارسال محتوا

در این بخش، ربات خود را از حالت ایستا خارج می‌کنیم و به آن یاد می‌دهیم چگونه به پیام‌های کاربران پاسخ دهد، فایل ارسال کند، و دستورات مختلف را مدیریت کند. این مرحله نقطه‌ی آغاز تعامل واقعی با کاربران است.

1. پاسخ به پیام‌های متنی

برای اینکه ربات به هر پیام متنی پاسخ دهد، از MessageHandler و filters.TEXT استفاده می‌کنیم:

from telegram.ext import MessageHandler, filters

async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text(f'You said: {update.message.text}')

app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))

در این مثال، ربات هر پیام متنی غیر از دستورات را دریافت کرده و همان را بازمی‌گرداند.

2. ارسال عکس

برای ارسال عکس، می‌توانیم از دستور /photo استفاده کنیم و یک فایل تصویری را از مسیر محلی یا URL ارسال کنیم:

async def send_photo(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_photo(photo='https://example.com/image.jpg')

app.add_handler(CommandHandler('photo', send_photo))

اگر فایل عکس روی سیستم شماست، می‌توانید مسیر محلی را جایگزین کنید:

await update.message.reply_photo(photo=open('image.jpg', 'rb'))

3. ارسال فایل

برای ارسال فایل (PDF ،ZIP، یا هر نوع دیگر)، از reply_document استفاده می‌کنیم:

async def send_file(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_document(document=open('file.pdf', 'rb'))

app.add_handler(CommandHandler('file', send_file))

4. ارسال استیکر

ارسال استیکر نیز مشابه ارسال عکس است، با این تفاوت که از reply_sticker استفاده می‌شود:

async def send_sticker(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_sticker(sticker='CAACAgUAAxkBAAIBQ2QZ...')  # فایل یا شناسه استیکر

app.add_handler(CommandHandler('sticker', send_sticker))

شناسه استیکر را می‌توانید از پیام‌های قبلی یا ربات‌های مخصوص دریافت کنید.

5. پاسخ به دستورات خاص

برای مدیریت دستورات مانند /start، /help یا هر دستور دلخواه، از CommandHandler استفاده می‌کنیم. مثلاً:

async def help_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text('Available commands:\n/start\n/help\n/photo\n/file\n/sticker')

app.add_handler(CommandHandler('help', help_command))

مدیریت پیام‌ها و دستورات

در این مرحله، ربات را به سطحی بالاتر از پاسخ‌گویی ساده ارتقا می‌دهیم. با استفاده از هندلرهای حرفه‌ای، می‌توانیم پیام‌ها را فیلتر کنیم، دستورات خاص را مدیریت کنیم، و رفتار ربات را بر اساس نوع ورودی کاربر تنظیم کنیم.

1. استفاده از CommandHandler

برای پاسخ‌گویی به دستورات مشخص مانند /start، /help یا هر دستور دلخواه، از CommandHandler استفاده می‌کنیم. این هندلر فقط پیام‌هایی را دریافت می‌کند که با / شروع شده‌اند:

from telegram.ext import CommandHandler

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text('Welcome! Type /help to see available commands.')

async def help_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text('Commands:\n/start\n/help\n/photo\n/file\n/sticker')

app.add_handler(CommandHandler('start', start))
app.add_handler(CommandHandler('help', help_command))

2. استفاده از MessageHandler برای فیلتر کردن پیام‌ها

اگر بخواهیم ربات فقط به پیام‌های متنی غیر دستوری پاسخ دهد، از MessageHandler همراه با فیلتر مناسب استفاده می‌کنیم:

from telegram.ext import MessageHandler, filters

async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text(f'You said: {update.message.text}')

app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))

در این مثال، ربات فقط به پیام‌هایی پاسخ می‌دهد که متنی هستند و با / شروع نمی‌شوند.

3. فیلتر کردن پیام‌ها بر اساس شرایط خاص

می‌توانیم از فیلترهای پیشرفته‌تر استفاده کنیم، مثلاً فقط پاسخ‌گویی به پیام‌هایی که شامل کلمه خاصی هستند:

async def keyword_reply(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text('You mentioned Python!')

app.add_handler(MessageHandler(filters.TEXT & filters.Regex('.*Python.*'), keyword_reply))

همچنین می‌توان پیام‌های عکس، ویدیو، یا فایل را نیز فیلتر کرد:

app.add_handler(MessageHandler(filters.PHOTO, handle_photo))
app.add_handler(MessageHandler(filters.DOCUMENT, handle_document))

4. مدیریت چند هندلر هم‌زمان

می‌توان چندین هندلر را به اپلیکیشن اضافه کرد تا ربات بتواند به انواع مختلفی از ورودی‌ها پاسخ دهد. ترتیب اضافه‌کردن هندلرها مهم است، هندلرهایی که زودتر اضافه شوند، اول بررسی می‌شوند.

ساخت رابط کاربری درون‌تلگرامی

یکی از جذاب‌ترین قابلیت‌های ربات‌های تلگرام، امکان نمایش دکمه‌ها و منوهای قابل کلیک برای کاربران است. این ویژگی باعث می‌شود ربات شما از حالت متنی ساده به یک ابزار تعاملی و کاربرپسند تبدیل شود. در این بخش، با انواع دکمه‌ها آشنا می‌شویم و نحوه مدیریت پاسخ‌ها را بررسی می‌کنیم.

1. دکمه‌های ReplyKeyboardMarkup

این نوع دکمه‌ها مانند کیبورد جایگزین هستند و در پایین صفحه چت ظاهر می‌شوند. برای مثال، می‌توانیم یک منوی ساده با گزینه‌های «عکس»، «فایل» و «استیکر» بسازیم:

from telegram import ReplyKeyboardMarkup

async def show_menu(update: Update, context: ContextTypes.DEFAULT_TYPE):
    keyboard = [['Photo', 'File'], ['Sticker']]
    reply_markup = ReplyKeyboardMarkup(keyboard, resize_keyboard=True)
    await update.message.reply_text('Choose an option:', reply_markup=reply_markup)

app.add_handler(CommandHandler('menu', show_menu))

2. دکمه‌های InlineKeyboardMarkup

این دکمه‌ها درون پیام ظاهر می‌شوند و می‌توانند لینک داشته باشند یا با کلیک، پاسخ خاصی ارسال کنند. برای مثال:

from telegram import InlineKeyboardButton, InlineKeyboardMarkup

async def inline_menu(update: Update, context: ContextTypes.DEFAULT_TYPE):
    keyboard = [
        [InlineKeyboardButton('Visit Website', url='https://example.com')],
        [InlineKeyboardButton('Get Info', callback_data='info')]
    ]
    reply_markup = InlineKeyboardMarkup(keyboard)
    await update.message.reply_text('Choose:', reply_markup=reply_markup)

app.add_handler(CommandHandler('inline', inline_menu))

3. مدیریت Callback ها

برای پاسخ‌گویی به کلیک روی دکمه‌هایی که callback_data دارند، باید از CallbackQueryHandler استفاده کنیم:

from telegram.ext import CallbackQueryHandler

async def handle_callback(update: Update, context: ContextTypes.DEFAULT_TYPE):
    query = update.callback_query
    await query.answer()
    if query.data == 'info':
        await query.edit_message_text(text='Here is the information you requested.')

app.add_handler(CallbackQueryHandler(handle_callback))

4. ترکیب منوها با دستورات

می‌توان منوهای تعاملی را با دستورات ترکیب کرد تا ربات در پاسخ به دستور خاص، منوی مرتبط را نمایش دهد. این کار تجربه کاربری را بهبود می‌بخشد و تعامل را هدفمند می‌کند.

ذخیره‌سازی داده‌ها

برای ساخت ربات‌هایی که فراتر از پاسخ‌گویی ساده عمل می‌کنند، مثلاً ربات‌هایی که اطلاعات کاربران را ذخیره می‌کنند، وضعیت گفتگو را حفظ می‌کنند، یا پاسخ‌های شخصی‌سازی‌شده می‌دهند، نیاز داریم داده‌ها را به‌صورت ساخت‌یافته ذخیره کنیم. در این بخش، با روش‌های ساده و مؤثر برای ذخیره‌سازی آشنا می‌شویم.

1. ذخیره اطلاعات کاربران در فایل JSON

برای ثبت اطلاعات کاربران (مانند شناسه، نام، یا پیام‌های ارسالی)، می‌توان از فایل JSON استفاده کرد. مثال:

import json

def save_user_data(user_id, data):
    try:
        with open('users.json', 'r') as f:
            users = json.load(f)
    except FileNotFoundError:
        users = {}

    users[str(user_id)] = data

    with open('users.json', 'w') as f:
        json.dump(users, f, indent=4)

در تابع هندلر، می‌توان اطلاعات را ذخیره کرد:

async def register_user(update: Update, context: ContextTypes.DEFAULT_TYPE):
    user = update.message.from_user
    save_user_data(user.id, {'name': user.first_name, 'username': user.username})
    await update.message.reply_text('Your data has been saved.')

2. استفاده از SQLite برای ذخیره‌سازی پایدار

اگر پروژه بزرگ‌تر باشد، استفاده از دیتابیس سبک SQLite توصیه می‌شود:

import sqlite3

def init_db():
    conn = sqlite3.connect('bot.db')
    cursor = conn.cursor()
    cursor.execute('''CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY,
        name TEXT,
        username TEXT
    )''')
    conn.commit()
    conn.close()

در هندلر ثبت:

def save_to_db(user_id, name, username):
    conn = sqlite3.connect('bot.db')
    cursor = conn.cursor()
    cursor.execute('INSERT OR REPLACE INTO users (id, name, username) VALUES (?, ?, ?)', (user_id, name, username))
    conn.commit()
    conn.close()

3. مدیریت وضعیت گفتگو (ConversationHandler)

برای ساخت ربات‌هایی که چند مرحله گفت‌وگو دارند (مثلاً فرم ثبت‌نام)، از ConversationHandler استفاده می‌کنیم:

from telegram.ext import ConversationHandler

ASK_NAME, ASK_AGE = range(2)

async def start_conv(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text('What is your name?')
    return ASK_NAME

async def ask_name(update: Update, context: ContextTypes.DEFAULT_TYPE):
    context.user_data['name'] = update.message.text
    await update.message.reply_text('How old are you?')
    return ASK_AGE

async def ask_age(update: Update, context: ContextTypes.DEFAULT_TYPE):
    context.user_data['age'] = update.message.text
    await update.message.reply_text(f"Saved: {context.user_data['name']}, {context.user_data['age']}")
    return ConversationHandler.END

conv_handler = ConversationHandler(
    entry_points=[CommandHandler('register', start_conv)],
    states={
        ASK_NAME: [MessageHandler(filters.TEXT & ~filters.COMMAND, ask_name)],
        ASK_AGE: [MessageHandler(filters.TEXT & ~filters.COMMAND, ask_age)],
    },
    fallbacks=[]
)

app.add_handler(conv_handler)

ساخت ربات‌های کاربردی

اکنون که با اصول ساخت ربات، مدیریت پیام‌ها، منوها و ذخیره‌سازی داده‌ها آشنا شده‌اید، وقت آن رسیده که آموخته‌ها را در قالب پروژه‌های واقعی به کار بگیرید. در این بخش، چند ربات ساده اما کاربردی را پیاده‌سازی می‌کنیم، هرکدام با هدفی مشخص، قابل توسعه و مناسب برای تمرین عملی.

1. ربات ماشین حساب ساده

این ربات با دریافت دو عدد و یک عملگر، نتیجه را محاسبه می‌کند:

async def calc(update: Update, context: ContextTypes.DEFAULT_TYPE):
    try:
        expression = ' '.join(context.args)  # e.g., 5 + 3
        result = eval(expression)
        await update.message.reply_text(f'Result: {result}')
    except:
        await update.message.reply_text('Invalid expression. Use: /calc 5 + 3')

app.add_handler(CommandHandler('calc', calc))
⚠️ توجه: استفاده از eval در پروژه‌های واقعی ناامن است. در نسخه‌های پیشرفته‌تر باید از پارسرهای امن استفاده شود.

2. ربات یادآور (Reminder)

با استفاده از asyncio.sleep می‌توان رباتی ساخت که پس از مدت مشخصی پیام یادآوری ارسال کند:

 
import asyncio

async def remind(update: Update, context: ContextTypes.DEFAULT_TYPE):
    try:
        delay = int(context.args[0])
        message = ' '.join(context.args[1:])
        await update.message.reply_text(f'Okay! I will remind you in {delay} seconds.')
        await asyncio.sleep(delay)
        await update.message.reply_text(f'Reminder: {message}')
    except:
        await update.message.reply_text('Usage: /remind 10 Take a break')

app.add_handler(CommandHandler('remind', remind))

3. ربات ترجمه‌گر ساده

با استفاده از کتابخانه‌هایی مانند googletrans می‌توان یک ربات ترجمه ساخت:

pip install googletrans==4.0.0-rc1
 
from googletrans import Translator

translator = Translator()

async def translate(update: Update, context: ContextTypes.DEFAULT_TYPE):
    text = ' '.join(context.args)
    result = translator.translate(text, dest='en')
    await update.message.reply_text(f'Translation: {result.text}')

app.add_handler(CommandHandler('translate', translate))

4. ربات نظرسنجی

ارسال نظرسنجی با استفاده از متد send_poll:

async def poll(update: Update, context: ContextTypes.DEFAULT_TYPE):
    question = 'Which language do you prefer?'
    options = ['Python', 'JavaScript', 'Go', 'Rust']
    await context.bot.send_poll(chat_id=update.effective_chat.id, question=question, options=options)

app.add_handler(CommandHandler('poll', poll))

امنیت و محدودسازی

هرچقدر ربات شما کاربردی‌تر و محبوب‌تر شود، احتمال سوءاستفاده، اسپم و حملات نیز افزایش می‌یابد. بنابراین، پیاده‌سازی اصول امنیتی و محدودسازی دسترسی از همان مراحل اولیه توسعه ضروری است. در این بخش، با روش‌های ساده اما مؤثر برای افزایش امنیت ربات آشنا می‌شویم.

1. محدود کردن دسترسی به کاربران خاص

اگر ربات شما فقط برای گروه خاصی از کاربران طراحی شده، می‌توانید شناسه‌های مجاز را در لیستی ذخیره کرده و در هر هندلر بررسی کنید:

 
ALLOWED_USERS = [123456789, 987654321]  # Telegram user IDs

async def restricted(update: Update, context: ContextTypes.DEFAULT_TYPE):
    user_id = update.message.from_user.id
    if user_id not in ALLOWED_USERS:
        await update.message.reply_text('Access denied.')
        return
    await update.message.reply_text('Welcome, authorized user.')

app.add_handler(CommandHandler('secure', restricted))

2. جلوگیری از اسپم و ارسال مکرر

برای جلوگیری از ارسال پیام‌های مکرر یا اسپم، می‌توان از محدودسازی زمانی یا شمارنده استفاده کرد. مثال ساده:

 
import time

user_last_message = {}

async def anti_spam(update: Update, context: ContextTypes.DEFAULT_TYPE):
    user_id = update.message.from_user.id
    now = time.time()
    last = user_last_message.get(user_id, 0)

    if now - last < 5:  # 5 seconds cooldown
        await update.message.reply_text('Please wait before sending another command.')
        return

    user_last_message[user_id] = now
    await update.message.reply_text('Message accepted.')

app.add_handler(CommandHandler('ping', anti_spam))

3. مدیریت خطاها و جلوگیری از کرش

برای جلوگیری از توقف ربات در صورت بروز خطا، باید هندلر عمومی برای مدیریت Exceptions تعریف شود:

from telegram.error import TelegramError

async def error_handler(update: object, context: ContextTypes.DEFAULT_TYPE):
    print(f'Error: {context.error}')

app.add_error_handler(error_handler)

همچنین توصیه می‌شود در هر تابع از try/except استفاده شود تا خطاهای خاص مدیریت شوند.

4. محافظت از توکن و اطلاعات حساس

توکن ربات را هرگز در فایل‌های عمومی یا مخازن گیت منتشر نکنید. برای امنیت بیشتر، می‌توانید از متغیرهای محیطی استفاده کنید:

import os

TOKEN = os.getenv('BOT_TOKEN')

و در محیط اجرا:

export BOT_TOKEN='your_token_here'

انتشار و نگهداری

تا اینجا ربات شما روی سیستم محلی اجرا می‌شد و فقط در زمان باز بودن ترمینال فعال بود. اما برای استفاده واقعی، باید ربات را روی سروری مستقر کنید تا به‌صورت دائمی و پایدار در دسترس باشد. در این بخش، با روش‌های مختلف اجرای ربات روی سرور، نگهداری آن، و آماده‌سازی برای استفاده عمومی آشنا می‌شویم.

1. انتخاب بستر مناسب برای اجرا

بسته به نیاز پروژه و بودجه، می‌توانید یکی از گزینه‌های زیر را انتخاب کنید:

  • Heroku: رایگان، مناسب برای پروژه‌های سبک و تستی
  • PythonAnywhere: اجرای ساده اسکریپت‌های پایتون با رابط کاربری تحت وب
  • VPS یا سرور اختصاصی: مناسب برای پروژه‌های حرفه‌ای و پایدار
  • Docker: برای اجرای ایزوله و قابل حمل در هر محیطی

2. اجرای دائمی با nohup یا systemd

اگر از VPS یا سرور لینوکسی استفاده می‌کنید، می‌توانید ربات را به‌صورت دائمی اجرا کنید:

با nohup:

nohup python bot.py &

با systemd:

فایل سرویس بسازید:

[Unit]
Description=Telegram Bot
After=network.target

[Service]
ExecStart=/usr/bin/python3 /path/to/bot.py
Restart=always
User=your_user

[Install]
WantedBy=multi-user.target

سپس:

 
sudo systemctl daemon-reload
sudo systemctl enable telegrambot
sudo systemctl start telegrambot

3. استفاده از Webhook به‌جای polling

برای کاهش مصرف منابع و افزایش سرعت پاسخ‌گویی، می‌توانید از Webhook استفاده کنید. این روش نیاز به دامنه HTTPS دارد:

 
app.run_webhook(
    listen='0.0.0.0',
    port=8443,
    url_path=TOKEN,
    webhook_url=f'https://yourdomain.com/{TOKEN}'
)

4. نگهداری و بروزرسانی

برای نگهداری ربات در طولانی‌مدت:

  • لاگ‌گیری دقیق با logging برای بررسی خطاها
  • نسخه‌بندی کد با Git
  • تست منظم عملکرد ربات
  • بروزرسانی کتابخانه‌ها و امنیت توکن‌ها
  • تهیه نسخه پشتیبان از داده‌ها

جمع‌بندی

اگر تا اینجا همراه ما بوده‌اید، اکنون نه‌تنها با اصول ساخت ربات تلگرام با پایتون آشنا شده‌اید، بلکه توانایی ساخت ربات‌های تعاملی، امن و قابل استقرار را نیز در اختیار دارید. اما یادگیری در این نقطه متوقف نمی‌شود، در این بخش، منابع تکمیلی را معرفی می‌کنیم تا بتوانید دانش خود را گسترش دهید و ربات‌هایی پیچیده‌تر و هوشمندتر بسازید.

مستندات رسمی و منابع یادگیری

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
در انتظار ثبت رای

/@arastoo
ارسطو عباسی
کارشناس تولید و بهینه‌سازی محتوا

...

دیدگاه و پرسش
برای ارسال دیدگاه لازم است وارد شده یا ثبت‌نام کنید ورود یا ثبت‌نام

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

ارسطو عباسی

کارشناس تولید و بهینه‌سازی محتوا