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