Normalize Telegram t.me channel IDs
This commit is contained in:
+18
-1
@@ -45,13 +45,30 @@ def _error_alert_bot_token() -> str:
|
|||||||
return os.getenv("ERROR_TELEGRAM_ALERT_BOT_TOKEN", "").strip()
|
return os.getenv("ERROR_TELEGRAM_ALERT_BOT_TOKEN", "").strip()
|
||||||
|
|
||||||
|
|
||||||
|
def _normalize_telegram_chat_id(raw_id: str) -> str:
|
||||||
|
value = raw_id.strip()
|
||||||
|
if not value:
|
||||||
|
return value
|
||||||
|
|
||||||
|
lowered = value.lower()
|
||||||
|
for prefix in ("https://t.me/", "http://t.me/", "t.me/"):
|
||||||
|
if lowered.startswith(prefix):
|
||||||
|
value = value[len(prefix):].strip()
|
||||||
|
break
|
||||||
|
|
||||||
|
if not value.startswith(("@", "-100")) and not value.isdigit():
|
||||||
|
value = f"@{value}"
|
||||||
|
return value
|
||||||
|
|
||||||
|
|
||||||
def _error_alert_chat_ids() -> list[str]:
|
def _error_alert_chat_ids() -> list[str]:
|
||||||
raw = os.getenv("ERROR_TELEGRAM_ALERT_CHAT_IDS", "").strip()
|
raw = os.getenv("ERROR_TELEGRAM_ALERT_CHAT_IDS", "").strip()
|
||||||
if not raw:
|
if not raw:
|
||||||
raw = os.getenv("ERROR_TELEGRAM_ALERT_CHANNEL_ID", "").strip()
|
raw = os.getenv("ERROR_TELEGRAM_ALERT_CHANNEL_ID", "").strip()
|
||||||
if not raw:
|
if not raw:
|
||||||
raw = os.getenv("ERROR_TELEGRAM_ALERT_CHANNEL", "").strip()
|
raw = os.getenv("ERROR_TELEGRAM_ALERT_CHANNEL", "").strip()
|
||||||
return [item.strip() for item in raw.split(",") if item.strip()]
|
normalized = [_normalize_telegram_chat_id(item) for item in raw.split(",")]
|
||||||
|
return [item for item in normalized if item]
|
||||||
|
|
||||||
|
|
||||||
def _error_alert_min_status() -> int:
|
def _error_alert_min_status() -> int:
|
||||||
|
|||||||
@@ -307,3 +307,9 @@ def test_gateway_queues_error_alert_for_internal_exception(monkeypatch):
|
|||||||
assert alerts[0]['service'] == 'api-gateway'
|
assert alerts[0]['service'] == 'api-gateway'
|
||||||
assert alerts[0]['status'] == 500
|
assert alerts[0]['status'] == 500
|
||||||
assert alerts[0]['path'] == '/proxy/sales/pipelines'
|
assert alerts[0]['path'] == '/proxy/sales/pipelines'
|
||||||
|
|
||||||
|
|
||||||
|
def test_gateway_normalizes_channel_alias_for_t_me(monkeypatch):
|
||||||
|
monkeypatch.setenv('ERROR_TELEGRAM_ALERT_CHANNEL_ID', 't.me/konturaitelecom')
|
||||||
|
|
||||||
|
assert gateway_module._error_alert_chat_ids() == ['@konturaitelecom']
|
||||||
|
|||||||
Reference in New Issue
Block a user