Важно: поддерживается разметка HTML (как в Telegram). Изменения сохраняются в таблицу
bot_message и подхватываются ботом при следующем чтении из БД (reply-меню — до ~1 с кэша).
Эмодзи: кнопки под полем или стандартная панель ОС (Windows Win+.).
{% for sec in text_sections %}
{{ sec.title }}
{% for it in sec['items'] %}
{% set row = messages_by_command.get(it.command) %}
{{ it.command }}
{{ it.description }}
{% if it.variables %}
Переменные: {{ it.variables }}
{% endif %}
{% set ns = namespace() %}
{% set ns.use_db = row and row.is_enable and (row.text or '')|trim %}
{% if ns.use_db %}
{% set preview_text = row.text[:1200] ~ ('…' if row.text|length > 1200 else '') %}
{% set preview_class = 'settings-text-preview' %}
{% set source_lbl = 'Показано из БД (активно в боте)' %}
{% else %}
{% set preview_text = (text_preview_defaults.get(it.command) or '')[:1200] %}
{% if (text_preview_defaults.get(it.command) or '')|length > 1200 %}{% set preview_text = preview_text ~ '…' %}{% endif %}
{% set preview_class = 'settings-text-preview from-code' %}
{% if row %}
{% set source_lbl = 'В боте — значение из кода (запись в БД выкл., текст пустой или не используется)' %}
{% else %}
{% set source_lbl = 'В боте — значение из кода (записи в БД ещё нет)' %}
{% endif %}
{% endif %}
{% set preview_lines = (preview_text or ' ').count('\n') + 1 %}
{{ source_lbl }}
{% if preview_text and preview_text|string|trim %}
{{- preview_text -}}
{% else %}
Для этого ключа в коде нет отдельной строки — сценарий без текста или только из БД.
{% endif %}
{% if row %}
{% if row.is_enable %} запись в БД: вкл.{% else %} запись в БД: выкл.{% endif %}
{% if row.image_path %}
{{ row.image_path }}
{% endif %}
{% endif %}
{% endfor %}
{% endfor %}
{% if extra_messages %}
Другие сообщения в базе (не в каталоге)
Ключи не из каталога (кастомные или устаревшие).
{% for row in extra_messages %}
{{ row.command }}
{% set ex_use_db = row.is_enable and (row.text or '')|trim %}
{% if ex_use_db %}
{% set ex_prev = row.text[:400] ~ ('…' if row.text|length > 400 else '') %}
{% set ex_class = 'settings-text-preview' %}
{% set ex_src = 'Из БД (активно)' %}
{% else %}
{% set ex_prev = (text_preview_defaults.get(row.command) or '')[:400] %}
{% if (text_preview_defaults.get(row.command) or '')|length > 400 %}{% set ex_prev = ex_prev ~ '…' %}{% endif %}
{% set ex_class = 'settings-text-preview from-code' %}
{% set ex_src = 'Сейчас в боте — из кода или пусто' %}
{% endif %}
{{ ex_src }}
{% set ex_lines = (ex_prev or ' ').count('\n') + 1 %}