وقتی ربات کاربران زیادی دارد، استفاده از 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 #performance #security
👤 Developix
💎 Channel: @DevelopixRobot