پرش به محتویات

مقایسه Bot API و MTProto

در این بخش تفاوت‌های بین Bot API و MTProto (UserBot) را بررسی می‌کنیم تا بتوانید بهترین روش را برای پروژه خود انتخاب کنید.


Bot API چیست؟

Bot API رسمی سروش‌پلاس برای ساخت ربات است. ربات‌ها حساب‌های خاصی هستند که توسط کاربران دیگر ایجاد و مدیریت می‌شوند.

مزایای Bot API

  • سادگی: API ساده و آسان برای استفاده
  • امنیت: ربات‌ها محدودیت‌های امنیتی دارند
  • پشتیبانی رسمی: توسط سروش‌پلاس پشتیبانی می‌شود
  • عدم نیاز به احراز هویت کاربر: فقط به Bot Token نیاز دارد

معایب Bot API

  • محدودیت‌های پیام: ربات‌ها نمی‌توانند به کاربران پیام ارسال کنند مگر اینکه کاربر ابتدا به آنها پیام دهد
  • محدودیت در ارسال پیام: محدودیت در تعداد پیام‌های ارسالی
  • عدم دسترسی به اطلاعات کامل: ربات‌ها به تمام اطلاعات کاربران دسترسی ندارند
  • محدودیت در امکانات: بسیاری از امکانات API اصلی در Bot API موجود نیست

MTProto (UserBot) چیست؟

MTProto پروتکل اصلی سروش‌پلاس است. با استفاده از MTProto می‌توانید به عنوان یک کاربر عادی (UserBot) با API سروش‌پلاس تعامل کنید.

مزایای MTProto

  • امکانات نامحدود: به تمام API سروش‌پلاس دسترسی دارید
  • ارسال پیام نامحدود: بدون محدودیت در ارسال پیام
  • دسترسی کامل به اطلاعات: تمام اطلاعات کاربران و چت‌ها در دسترس است
  • انعطاف‌پذیری بالا: می‌توانید هر کاری انجام دهید

معایب MTProto

  • پیچیدگی: API پیچیده‌تر است
  • نیاز به API ID و Hash: باید از my.telegram.org دریافت کنید
  • risk امنیتی: حساب شما ممکن است در صورت استفاده نادرست مسدود شود
  • نیاز به مدیریت session: باید session و احراز هویت را مدیریت کنید

مقایسه جزئی

ویژگی Bot API MTProto (UserBot)
نوع حساب ربات کاربر عادی
محدودیت پیام محدود نامحدود
دسترسی به اطلاعات محدود کامل
API ساده پیچیده
نیاز به اجازه کاربر بله خیر
risk امنیتی کم زیاد
پشتیبانی رسمی بله خیر
نیاز به API ID خیر بله
مدیریت Session خیر بله

چه زمانی از Bot API استفاده کنیم؟

موارد استفاده مناسب

  • ربات‌های ساده: ربات‌هایی که فقط به پیام‌های کاربران پاسخ می‌دهند
  • ربات‌های اطلاع‌رسانی: ربات‌هایی که اطلاعات را به کاربران ارسال می‌کنند
  • ربات‌های خدماتی: ربات‌هایی که خدمات خاصی ارائه می‌دهند
  • پروژه‌های کوچک: پروژه‌هایی که نیاز به امکانات پیچیده ندارند

مثال Bot API

from splusthon import SoroushClient

# ورود به عنوان ربات
bot = SoroushClient('bot', api_id, api_hash)
await bot.start(bot_token='12345:0123456789abcdef')

@bot.on(events.NewMessage)
async def handler(event):
    if 'سلام' in event.raw_text:
        await event.reply('سلام! من یک ربات هستم.')

await bot.run_until_disconnected()

چه زمانی از MTProto (UserBot) استفاده کنیم؟

موارد استفاده مناسب

  • UserBot‌ها: ربات‌هایی که با حساب کاربری شما کار می‌کنند
  • اسکریپت‌های خودکار: اسکریپت‌هایی که کارهای تکراری را انجام می‌دهند
  • پروژه‌های پیچیده: پروژه‌هایی که نیاز به API کامل دارند
  • برنامه‌های شخصی: برنامه‌هایی که برای استفاده شخصی خود می‌سازید

مثال MTProto (UserBot)

from splusthon import SoroushClient

# ورود به عنوان کاربر
client = SoroushClient('user', api_id, api_hash)
await client.start()

@client.on(events.NewMessage)
async def handler(event):
    # پاسخ خودکار به پیام‌ها
    if 'سلام' in event.raw_text:
        await event.reply('سلام! چطور می‌توانم کمک کنم؟')

await client.run_until_disconnected()

نکات امنیتی مهم

هشدار

هنگام استفاده از UserBot مراقب باشید!

  • هرگز credentialهای خود را به اشتراک نگذارید
  • از اسکریپت‌های ناشناخته استفاده نکنید
  • مطمئن شوید اسکریپت شما قوانین سروش‌پلاس را نقض نمی‌کند
  • حساب شما ممکن است در صورت استفاده نادرست مسدود شود

تصمیم‌گیری

سوالات کلیدی

  1. آیا به اطلاعات کامل کاربران نیاز دارید؟

    • بله → MTProto
    • خیر → Bot API
  2. آیا می‌خواهید به کاربران پیام ارسال کنید بدون اینکه آنها ابتدا پیام دهند؟

    • بله → MTProto
    • خیر → Bot API
  3. آیا پروژه شما پیچیده است؟

    • بله → MTProto
    • خیر → Bot API
  4. آیا می‌خواهید با حساب کاربری خود کار کنید؟

    • بله → MTProto
    • خیر → Bot API

نتیجه‌گیری

  • Bot API برای ربات‌های ساده و پروژه‌های کوچک مناسب است
  • MTProto برای UserBot‌ها و پروژه‌های پیچیده مناسب است
  • هر کدام مزایا و معایب خود را دارند
  • انتخاب روش مناسب به نیازهای پروژه شما بستگی دارد

مرحله بعدی

برای یادگیری بیشتر درباره asyncio، بخش Mastering asyncio را مطالعه کنید.