74 lines
2.2 KiB
Python
74 lines
2.2 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
Ручная регистрация Telegram webhook через internal_relay (с secret_token).
|
||
|
||
Запуск на сервере бота:
|
||
cd /opt/testbot-git
|
||
./venv/bin/python register_tg_webhook.py
|
||
|
||
Печатает полный ответ setWebhook — по нему видно, принял ли Telegram секрет.
|
||
"""
|
||
|
||
import json
|
||
import sys
|
||
|
||
from dotenv import load_dotenv
|
||
import os
|
||
import requests
|
||
|
||
load_dotenv(os.path.join(os.path.dirname(os.path.abspath(__file__)), ".env"))
|
||
load_dotenv()
|
||
|
||
from telegram_relay import bot_api_method_url, get_relay_url
|
||
|
||
TOKEN = os.getenv("RESPONDER_BOT_TOKEN")
|
||
WEBHOOK_URL = os.getenv("WEBHOOK_URL")
|
||
WEBHOOK_SECRET = (os.getenv("WEBHOOK_SECRET") or "").strip().strip('"').strip("'")
|
||
|
||
|
||
def main() -> int:
|
||
if not TOKEN:
|
||
print("ERROR: RESPONDER_BOT_TOKEN не задан")
|
||
return 1
|
||
if not WEBHOOK_URL:
|
||
print("ERROR: WEBHOOK_URL не задан")
|
||
return 1
|
||
if not WEBHOOK_SECRET:
|
||
print("ERROR: WEBHOOK_SECRET не задан")
|
||
return 1
|
||
|
||
api_url = bot_api_method_url(TOKEN, "setWebhook")
|
||
form = {
|
||
"url": WEBHOOK_URL,
|
||
"secret_token": WEBHOOK_SECRET,
|
||
"max_connections": "40",
|
||
}
|
||
print(f"RELAY_URL = {get_relay_url()}")
|
||
print(f"WEBHOOK_URL = {WEBHOOK_URL}")
|
||
print(f"secret_len = {len(WEBHOOK_SECRET)}")
|
||
print(f"POST = {api_url.replace(TOKEN, '<TOKEN>')}")
|
||
print(f"form keys = {list(form.keys())}")
|
||
|
||
resp = requests.post(api_url, data=form, timeout=60)
|
||
print(f"HTTP status = {resp.status_code}")
|
||
try:
|
||
data = resp.json()
|
||
print("JSON response:")
|
||
print(json.dumps(data, ensure_ascii=False, indent=2))
|
||
except Exception:
|
||
print("Raw response:")
|
||
print(resp.text[:1000])
|
||
return 1
|
||
|
||
if not data.get("ok"):
|
||
print("FAILED: Telegram/relay вернул ok=false")
|
||
return 1
|
||
|
||
print("OK: setWebhook принят. Нажмите «Подписка» / отправьте /start боту.")
|
||
print("В логе бота не должно быть «Секретный токен отсутствует».")
|
||
return 0
|
||
|
||
|
||
if __name__ == "__main__":
|
||
sys.exit(main())
|