| کانال ربات تلگرام |
🧵 مدیریت آپدیتها با webhook بهجای long polling برای ربات شلوغ
وقتی ربات کاربران زیادی دارد، استفاده از getUpdates (همون long polling) میتونه هم کند بشه، هم منابع سرور رو الکی درگیر کنه. تو این شرایط، webhook انتخاب خیلی تمیزتر و پایدارتره. 🔧
ایده سادهست: بهجای اینکه ربات هر چند لحظه بره سراغ Telegram و بگه «آپدیت جدید داری؟»، خود Telegram هر آپدیت رو push میکنه به یک URL روی سرور شما.
✅ مزایا تو رباتهای تلگرام:
• مصرف کمتر CPU و پهنایباند روی سرور
• تاخیر کمتر در دریافت پیامها
• مدیریت راحتتر scale وقتی تعداد چتها زیاد میشه
یک نمونه خیلی مینیمال با python-telegram-bot (ورژن جدید async) و Flask:
from flask import Flask, request
from telegram import Update
from telegram.ext import (
Application,
CommandHandler,
)
TOKEN = "YOUR_BOT_TOKEN"
WEBHOOK_URL = "https://example.com/telegram-webhook"
app = Flask(__name__)
application = Application.builder().token(TOKEN).build()
async def start(update: Update, context):
await update.message.reply_text("سلام 👋")
application.add_handler(CommandHandler("start", start))
@app.post("/telegram-webhook")
def webhook():
update = Update.de_json(request.get_json(force=True),
application.bot)
application.update_queue.put_nowait(update)
return "ok"
if __name__ == "__main__":
import asyncio
async def main():
await application.bot.set_webhook(WEBHOOK_URL)
app.run(host="0.0.0.0", port=8000)
asyncio.run(main())
نکات مهم امنیتی و عملی 🛡️
• حتما از HTTPS استفاده بشه (LetsEncrypt کافیه).
• URL وبهوک رو حدسزدنی انتخاب نشه (مثلاً یک path تصادفی طولانی).
• لاگ خطاها و timeoutهای وبهوک رو حتما چک بشه؛ اگر endpoint زیاد خطا بده، Telegram موقتاً ارسال آپدیتها رو کند میکنه.
برای جزییات کاملتر و پارامترهای setWebhook، داک رسمی Bot API بهترین مرجعه:
https://core.telegram.org/bots/api#setwebhook
امتحان این معماری روی رباتهای نسبتا شلوغ، تفاوت سرعت و مصرف منابع رو کاملا نشون میده 🚀
🔖 #TelegramBot #ربات #تلگرام #telegram_bot #webhook #python #perfor… خواندن کامل ←
2 · 596 ·