From 7c59c0d5e2e4ddd1214ed882420b14c5e52476e7 Mon Sep 17 00:00:00 2001 From: gitadmin Date: Sun, 2 Aug 2026 16:09:42 +0300 Subject: [PATCH] =?UTF-8?q?[ZILANT]=20=D0=B4=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=20setwebhook=20=D0=B4=D0=BB=D1=8F=20=D0=BA?= =?UTF-8?q?=D0=BE=D1=80=D1=80=D0=B5=D0=BA=D1=82=D0=BD=D1=8B=D1=85=20callba?= =?UTF-8?q?ck'=D0=BE=D0=B2=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BE=D0=BA=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=B4=D0=BF=D0=B8=D1=81=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- register_tg_webhook.py | 6 ++++++ tg_mainbot.py | 10 +++++++++- wsgi_bot.py | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/register_tg_webhook.py b/register_tg_webhook.py index 7f9306a..29fafe4 100644 --- a/register_tg_webhook.py +++ b/register_tg_webhook.py @@ -42,6 +42,12 @@ def main() -> int: "url": WEBHOOK_URL, "secret_token": WEBHOOK_SECRET, "max_connections": "40", + # Иначе Telegram может сохранить старый список без callback_query + "allowed_updates": json.dumps([ + "message", + "edited_message", + "callback_query", + ]), } print(f"RELAY_URL = {get_relay_url()}") print(f"WEBHOOK_URL = {WEBHOOK_URL}") diff --git a/tg_mainbot.py b/tg_mainbot.py index a0f2e10..d5c7d6e 100644 --- a/tg_mainbot.py +++ b/tg_mainbot.py @@ -2,6 +2,7 @@ import os import logging import time import errno +import json from dotenv import load_dotenv import telebot from telebot import apihelper @@ -1454,11 +1455,18 @@ def setup_webhook(): raise RuntimeError("WEBHOOK_URL не задан") api_url = bot_api_method_url(RESPONDER_BOT_TOKEN, "setWebhook") - # Все значения — строки (form-urlencoded), как ожидает parse_qs на relay + # Все значения — строки (form-urlencoded), как ожидает parse_qs на relay. + # allowed_updates обязательно: если не указать, Telegram сохраняет прежнюю + # настройку — часто без callback_query, и тогда кнопки «Подписаться»/«Справка» молчат. form = { "url": WEBHOOK_URL, "secret_token": WEBHOOK_SECRET, "max_connections": "40", + "allowed_updates": json.dumps([ + "message", + "edited_message", + "callback_query", + ]), } logger.info( f"setWebhook через relay: delivery_url={WEBHOOK_URL}, " diff --git a/wsgi_bot.py b/wsgi_bot.py index 62eb749..3db0274 100644 --- a/wsgi_bot.py +++ b/wsgi_bot.py @@ -11,7 +11,7 @@ def _ensure_webhook(): Блокирующий flock — без гонки 4 воркеров и без 429. """ digest = hashlib.sha256( - f"{WEBHOOK_URL}|{WEBHOOK_SECRET or ''}".encode("utf-8") + f"{WEBHOOK_URL}|{WEBHOOK_SECRET or ''}|allowed_v2".encode("utf-8") ).hexdigest()[:16] marker_path = f"/tmp/zilant_webhook_ok_{digest}" lock_path = "/tmp/zilant_webhook_setup.lock"