[ZILANT] доработка параметров setwebhook для корректных callback'ов кнопок подписки
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
2026-08-02 16:09:42 +03:00
parent 2797183834
commit 7c59c0d5e2
3 changed files with 16 additions and 2 deletions
+6
View File
@@ -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}")
+9 -1
View File
@@ -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}, "
+1 -1
View File
@@ -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"