[ZILANT] доработка параметров setwebhook для корректных callback'ов кнопок подписки
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
This commit is contained in:
@@ -42,6 +42,12 @@ def main() -> int:
|
|||||||
"url": WEBHOOK_URL,
|
"url": WEBHOOK_URL,
|
||||||
"secret_token": WEBHOOK_SECRET,
|
"secret_token": WEBHOOK_SECRET,
|
||||||
"max_connections": "40",
|
"max_connections": "40",
|
||||||
|
# Иначе Telegram может сохранить старый список без callback_query
|
||||||
|
"allowed_updates": json.dumps([
|
||||||
|
"message",
|
||||||
|
"edited_message",
|
||||||
|
"callback_query",
|
||||||
|
]),
|
||||||
}
|
}
|
||||||
print(f"RELAY_URL = {get_relay_url()}")
|
print(f"RELAY_URL = {get_relay_url()}")
|
||||||
print(f"WEBHOOK_URL = {WEBHOOK_URL}")
|
print(f"WEBHOOK_URL = {WEBHOOK_URL}")
|
||||||
|
|||||||
+9
-1
@@ -2,6 +2,7 @@ import os
|
|||||||
import logging
|
import logging
|
||||||
import time
|
import time
|
||||||
import errno
|
import errno
|
||||||
|
import json
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
import telebot
|
import telebot
|
||||||
from telebot import apihelper
|
from telebot import apihelper
|
||||||
@@ -1454,11 +1455,18 @@ def setup_webhook():
|
|||||||
raise RuntimeError("WEBHOOK_URL не задан")
|
raise RuntimeError("WEBHOOK_URL не задан")
|
||||||
|
|
||||||
api_url = bot_api_method_url(RESPONDER_BOT_TOKEN, "setWebhook")
|
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 = {
|
form = {
|
||||||
"url": WEBHOOK_URL,
|
"url": WEBHOOK_URL,
|
||||||
"secret_token": WEBHOOK_SECRET,
|
"secret_token": WEBHOOK_SECRET,
|
||||||
"max_connections": "40",
|
"max_connections": "40",
|
||||||
|
"allowed_updates": json.dumps([
|
||||||
|
"message",
|
||||||
|
"edited_message",
|
||||||
|
"callback_query",
|
||||||
|
]),
|
||||||
}
|
}
|
||||||
logger.info(
|
logger.info(
|
||||||
f"setWebhook через relay: delivery_url={WEBHOOK_URL}, "
|
f"setWebhook через relay: delivery_url={WEBHOOK_URL}, "
|
||||||
|
|||||||
+1
-1
@@ -11,7 +11,7 @@ def _ensure_webhook():
|
|||||||
Блокирующий flock — без гонки 4 воркеров и без 429.
|
Блокирующий flock — без гонки 4 воркеров и без 429.
|
||||||
"""
|
"""
|
||||||
digest = hashlib.sha256(
|
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]
|
).hexdigest()[:16]
|
||||||
marker_path = f"/tmp/zilant_webhook_ok_{digest}"
|
marker_path = f"/tmp/zilant_webhook_ok_{digest}"
|
||||||
lock_path = "/tmp/zilant_webhook_setup.lock"
|
lock_path = "/tmp/zilant_webhook_setup.lock"
|
||||||
|
|||||||
Reference in New Issue
Block a user