آموزش جامع ساخت ربات تلگرام با پایتون | مدیریت پیام‌ها

دریافت و مدیریت انواع پیام‌ها

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

۱. دریافت پیام متنی

برای دریافت متن ارسالی کاربر، از متد message.text استفاده می‌کنیم. به مثال زیر توجه کنید:

from telegram.ext import Updater, MessageHandler, Filters

def handle_text(update, context):
    user_message = update.message.text
    update.message.reply_text(f"شما گفتید: {user_message}")

updater = Updater("TOKEN", use_context=True)
dp = updater.dispatcher
dp.add_handler(MessageHandler(Filters.text, handle_text))
updater.start_polling()

در این کد:

  • Filters.text فقط پیام‌های متنی را فیلتر می‌کند.
  • تابع handle_text متن کاربر را دریافت و پاسخ می‌دهد.

۲. دریافت تصویر و فایل

برای دریافت تصویر یا فایل، از Filters.photo و Filters.document استفاده می‌شود:

def handle_photo(update, context):
    photo = update.message.photo[-1].file_id
    update.message.reply_text("عکس شما دریافت شد!")

def handle_document(update, context):
    document = update.message.document.file_id
    update.message.reply_text("فایل شما دریافت شد!")

dp.add_handler(MessageHandler(Filters.photo, handle_photo))
dp.add_handler(MessageHandler(Filters.document, handle_document))

۳. دریافت موقعیت جغرافیایی

اگر کاربر موقعیت خود را ارسال کند، می‌توانید آن را با Filters.location پردازش کنید:

def handle_location(update, context):
    lat = update.message.location.latitude
    lon = update.message.location.longitude
    update.message.reply_text(f"موقعیت شما: عرض {lat}, طول {lon}")

dp.add_handler(MessageHandler(Filters.location, handle_location))

۴. مدیریت پیام‌های صوتی و ویدیویی

برای دریافت فایل‌های صوتی و ویدیویی، از Filters.voice و Filters.video استفاده می‌کنیم:

def handle_voice(update, context):
    voice = update.message.voice.file_id
    update.message.reply_text("پیام صوتی شما دریافت شد!")

def handle_video(update, context):
    video = update.message.video.file_id
    update.message.reply_text("ویدیوی شما دریافت شد!")

dp.add_handler(MessageHandler(Filters.voice, handle_voice))
dp.add_handler(MessageHandler(Filters.video, handle_video))

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

پرسش و پاسخ این درس

برای ثبت پرسش ابتدا در سایت وارد شوید.

  • 1
  • 2
  • 3