وقتی ربات ترافیک بیشتری میگیرد، long polling میتواند هم کند شود هم مصرف منابع سرور را بالا ببرد. استفاده از webhook باعث میشود Telegram خودش آپدیتها را به آدرس سرور بفرستد؛ یعنی latency کمتر، مصرف CPU پایینتر و کنترل بهتر روی ترافیک 🚀
ایده ساده است: یک endpoint مثل
/webhook روی سرور (مثلاً با Flask) میسازی، بعد با setWebhook به Telegram میگویی هر آپدیت جدید را POST کند به این URL.نمونه مینیمال با python-telegram-bot (نسخه 20+):
from flask import Flask, request
from telegram import Update
from telegram.ext import (
Application,
CommandHandler,
)
TOKEN = "YOUR_BOT_TOKEN"
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("/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__":
# فقط یک بار اجرا کن (یا با curl) برای ست کردن webhook
import requests
url = "https://your-domain.com/webhook"
requests.get(
f"https://api.telegram.org/bot{TOKEN}/setWebhook",
params={"url": url},
)
app.run(port=8443)
نکتههای مهم 🧩
• حتماً از HTTPS واقعی استفاده شود؛ Telegram روی http ساده به webhook وصل نمیشود.
• سایز پاسخها را کوچک نگه دار تا timeout نخوری.
• روی endpoint حتماً rate limit و لاگ مناسب داشته باش تا در برابر flood و خطاها مقاومت بهتری داشته باشی.
با همین تغییر ساده، ربات روی سرورهای سبک هم زیر فشار ترافیک پایدارتر میماند و هم پاسخها سریعتر به کاربر میرسد ⚡
مرجع رسمی Bot API:
https://core.telegram.org/bots/api#setwebhook
🔖 #TelegramBot #ربات #تلگرام #Telegram_Bot #webhook #python_telegram_bot #performance #api
👤 Developix
💎 Channel: @DevelopixRobot