Статья

Настройка webhook для Telegram-бота через прокси: полное руководство

Webhook — это когда Telegram сам присылает обновления на ваш сервер, а не вы постоянно

опрашиваете API. Это экономит ресурсы и работает быстрее polling.

Но что делать, если setWebhook не работает из-за блокировки api.telegram.org?

Шаг 1: Убедитесь, что прокси доступен

curl https://v0-telegram-proxy-api.vercel.app/botВАШ_ТОКЕН/getMe

Ожидаемый ответ: {"ok":true,"result":{"id":...,"is_bot":true,...}}

Шаг 2: Установите webhook через прокси

curl -X POST \
  "https://v0-telegram-proxy-api.vercel.app/botВАШ_ТОКЕН/setWebhook" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://ВАШ_СЕРВЕР/webhook"}'

Важно: URL вебхука должен быть вашим сервером с HTTPS. Telegram будет слать обновления

напрямую на него — прокси здесь не нужен.

Шаг 3: Проверка

curl https://v0-telegram-proxy-api.vercel.app/botВАШ_ТОКЕН/getWebhookInfo

Пример на Python (FastAPI + aiogram)

from fastapi import FastAPI, Request
from aiogram import Bot, Dispatcher
from aiogram.client.session.aiohttp import AiohttpSession
from aiogram.client.telegram import TelegramAPIServer
from aiogram.types import Update

TOKEN = "ВАШ_ТОКЕН"
WEBHOOK_URL = "https://ВАШ_СЕРВЕР/webhook"
PROXY = "https://v0-telegram-proxy-api.vercel.app"

session = AiohttpSession(api=TelegramAPIServer.from_base(PROXY))
bot = Bot(token=TOKEN, session=session)
dp = Dispatcher()
app = FastAPI()

@app.on_event("startup")
async def on_startup():
    await bot.set_webhook(WEBHOOK_URL)

@app.post("/webhook")
async def webhook(request: Request):
    data = await request.json()
    update = Update(**data)
    await dp.feed_update(bot, update)
    return {"ok": True}

Пример на Node.js (Telegraf + Express)

const { Telegraf } = require('telegraf')
const express = require('express')

const bot = new Telegraf(TOKEN, {
  telegram: { apiRoot: "https://v0-telegram-proxy-api.vercel.app" },
})

bot.start((ctx) => ctx.reply('Привет!'))

const app = express()
app.use(bot.webhookCallback('/webhook'))
bot.telegram.setWebhook('https://ВАШ_СЕРВЕР/webhook')

app.listen(3000)

Проблемы и решения

ПроблемаРешение
`setWebhook` возвращает ошибкуПроверьте, что WEBHOOK_URL доступен извне и использует HTTPS
Telegram не присылает обновленияПроверьте `getWebhookInfo` — поле `last_error_message`
SSL ошибкаTelegram требует валидный SSL-сертификат (Let's Encrypt подходит)

Итог

Через прокси https://v0-telegram-proxy-api.vercel.app все методы работают так же, как напрямую через api.telegram.org.

Webhook-сценарий полностью поддерживается.


Сделай собственный прокси за 5 минут

Большинство статей советуют PythonAnywhere или Cloudflare Pages — но оба сервиса уже заблокированы в России и СНГ. Vercel работает стабильно.

Этот сайт создан на v0.app — AI-инструменте от Vercel. На разработку ушло 3 доллара. При регистрации по реферальной ссылке вы получаете $5 на баланс — этого достаточно, чтобы задеплоить свой личный прокси и проверить всё самостоятельно.

Получить $5 и задеплоить свой прокси →

Этот сайт обошёлся в $3

Сделан на v0.app — AI-инструменте от Vercel. При регистрации по ссылке вы получаете $5 на баланс — достаточно, чтобы задеплоить свой личный прокси.

Получить $5 →