ир
Some checks failed
CI / Lint (ruff + mypy) (push) Failing after 33s
CI / Run tests (push) Has been skipped
CI / Docker build test (push) Successful in 12s
Security / Dependency security scan (push) Failing after 52s

This commit is contained in:
2026-04-03 01:03:52 +07:00
parent 94afa86920
commit a13f4e378c
7 changed files with 308 additions and 78 deletions

View File

@@ -9,7 +9,11 @@ PLAIN_LINK_RE = re.compile(r"(?P<label>[^\n<>()]+?) \((?P<url>https?://[^\s)]+)\
def build_hidden_link(config: dict) -> str:
return ""
url = config.get("hidden_link_url", "").strip()
if not url:
return ""
char = config.get("hidden_link_char", "&#8203;") or "&#8203;"
return f'<a href="{escape(url, quote=True)}">{char}</a>'
def convert_plain_links_to_html(template: str) -> str:
@@ -101,13 +105,16 @@ def build_default_template(config: dict) -> str:
return "\n\n".join(blocks)
def build_channel_text(config: dict, state: dict) -> str:
def build_channel_text(config: dict, state: dict, *, include_hidden_link: bool = False) -> str:
template = state.get("template", {}).get("text") or config.get("template_text") or build_default_template(config)
template = convert_plain_links_to_html(template)
template, used_keys = replace_actor_placeholders(template, config, state)
actors_block = build_actor_lines(config, state, skip_keys=used_keys)
text = template.replace("{{actors}}", actors_block)
hidden_link = build_hidden_link(config) if include_hidden_link else ""
text = text.replace("{{hidden_link}}", "")
if include_hidden_link and hidden_link:
text = f"{hidden_link}{text}"
return text