diff --git a/session_bot/bot.py b/session_bot/bot.py index 5ce2c43..f56f1de 100644 --- a/session_bot/bot.py +++ b/session_bot/bot.py @@ -205,13 +205,32 @@ async def show_actor_status_menu(callback: CallbackQuery, actor: dict[str, Any], async def update_channel_post(bot: Bot, app_config: dict, state_storage: JsonStateStorage, settings) -> None: state = state_storage.load() text = build_channel_text(app_config, state) - await bot.edit_message_text( - chat_id=settings.channel_id, - message_id=settings.channel_message_id, - text=text, - parse_mode=ParseMode.HTML, - disable_web_page_preview=False, - ) + try: + await bot.edit_message_text( + chat_id=settings.channel_id, + message_id=settings.channel_message_id, + text=text, + parse_mode=ParseMode.HTML, + disable_web_page_preview=False, + ) + except TelegramBadRequest as exc: + if "Invalid custom emoji identifier specified" not in str(exc): + raise + + template = state.get("template", {}).get("text", "") + if not template: + raise + + state["template"]["text"] = sanitize_template_html(template) + state_storage.save(state) + fallback_text = build_channel_text(app_config, state) + await bot.edit_message_text( + chat_id=settings.channel_id, + message_id=settings.channel_message_id, + text=fallback_text, + parse_mode=ParseMode.HTML, + disable_web_page_preview=False, + ) async def apply_status_update( diff --git a/session_bot/render.py b/session_bot/render.py index ba11e1c..8368a19 100644 --- a/session_bot/render.py +++ b/session_bot/render.py @@ -4,14 +4,8 @@ import re from html import escape -DEFAULT_STATUS_LABELS = { - "open": "исполняет роль", - "backstage": "в закулисье", - "delay": "задержки", - "rest": "антракт", -} - ACTOR_PLACEHOLDER_RE = re.compile(r"\{\{\s*actor\s*:\s*([a-z0-9_\-]+)\s*\}\}", re.IGNORECASE) +PLAIN_LINK_RE = re.compile(r"(?P