feat: add WEBHOOK_IP to allow Telegram bypass DNS lookup for webhook (#2894)

* feat: add WEBHOOK_IP to allow Telegram bypass DNS lookup for webhook

* style: ruff format main.py

---------

Co-authored-by: Dmitry Lunin <br@slack.ru>
This commit is contained in:
Dmitry V. Lunin
2026-04-21 08:02:53 +03:00
committed by GitHub
parent 905cea68b4
commit 7093d368d3
3 changed files with 5 additions and 0 deletions
+3
View File
@@ -974,6 +974,9 @@ DEBUG=false
WEBHOOK_URL=
WEBHOOK_PATH=/webhook
WEBHOOK_SECRET_TOKEN=
# IP адрес сервера для setWebhook — Telegram будет использовать его напрямую без DNS резолва домена
# Необходимо в регионах где Telegram не может резолвить домены (РФ и др.)
# WEBHOOK_IP=
WEBHOOK_DROP_PENDING_UPDATES=true
WEBHOOK_MAX_QUEUE_SIZE=1024
WEBHOOK_WORKERS=4
+1
View File
@@ -768,6 +768,7 @@ class Settings(BaseSettings):
WEBHOOK_URL: str | None = None
WEBHOOK_PATH: str = '/webhook'
WEBHOOK_SECRET_TOKEN: str | None = None
WEBHOOK_IP: str | None = None # IP адрес для setWebhook, чтобы Telegram не резолвил домен
WEBHOOK_DROP_PENDING_UPDATES: bool = True
WEBHOOK_MAX_QUEUE_SIZE: int = 1024
WEBHOOK_WORKERS: int = 4
+1
View File
@@ -607,6 +607,7 @@ async def main():
secret_token=settings.WEBHOOK_SECRET_TOKEN,
drop_pending_updates=False, # Обрабатываем накопившиеся обновления
allowed_updates=allowed_updates,
**({'ip_address': settings.WEBHOOK_IP} if settings.WEBHOOK_IP else {}),
)
stage.log(f'Webhook установлен: {webhook_url}')
stage.log(f'Allowed updates: {", ".join(sorted(allowed_updates)) if allowed_updates else "all"}')