Files

68 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# TEXT_CHANNEL_META: профиль канала
`TEXT_CHANNEL_META` — скрытый технический `TEXT`-блок для полного снимка профиля канала после создания.
## Блок
- `msg_type = 1`
- `subType = 90`
- `msgVersion = 1`
- body использует тот же бинарный формат line-текста, что и `TEXT_POST`: line-поля + `textLen` + UTF-8 текст.
Блок пишется только в линию канала владельца. В обычной ленте сообщений он не отображается как пользовательский пост.
Первый снимок профиля публичного канала хранится прямо в `TECH_CREATE_CHANNEL.channelDescription` тем же текстовым форматом. Отдельный `TEXT_CHANNEL_META` при создании нового публичного канала UI не пишет.
## Текстовый формат
В начале текста могут идти технические теги, после них обычный текст описания:
```text
<S:title;v=1;Название канала>
<S:ava;v=1;sz=248193;sha256=3f2c8a...;ar=AbCdEf...>
Описание канала.
```
Поддерживаемые теги:
- `<S:title;v=1;...>` — человекочитаемое имя канала.
- `<S:ava;v=1;sz=...;sha256=...;ar=...>` — аватар канала в Arweave.
## Правила
- Каждый `TEXT_CHANNEL_META` задаёт полный снимок состояния профиля канала.
- Старые meta-блоки остаются в блокчейне как история, но текущее состояние берётся из последнего валидного meta-блока.
- Если `title` отсутствует, используется техническое имя канала.
- Если `avatar` отсутствует, аватар считается сброшенным.
- Если описание после тегов отсутствует, описание считается пустым.
- `meta_updated_at_ms` равен времени самого валидного meta-блока.
## Ограничения
- Длина `title` — максимум 50 Unicode code points.
- В `title` запрещены `<`, `>`, `;`, табуляция, перевод строки и `\0`.
- Длина описания — максимум 250 Unicode code points.
- `avatar.ar` — Arweave transaction id из 43 символов.
- `avatar.sha256` — 64 hex-символа.
- `avatar.sz` — положительный размер файла в байтах.
Если meta-блок невалиден, сервер не применяет его целиком.
## UI
- При создании публичного канала UI записывает человекочитаемое имя, аватар и описание в `TECH_CREATE_CHANNEL.channelDescription`.
- При создании канала UI показывает системную карточку `Создан канал ...`.
- При записи `TEXT_CHANNEL_META` UI показывает системную карточку `Изменён профиль канала`.
- У системных карточек нет лайка, ответа, репоста, редактирования и других действий обычного сообщения.
- По клику на системную карточку показываются аватар, человекочитаемое имя и описание на момент этого события.
## Замена старых команд
Команда `/.desc` больше не используется и не применяется сервером. Описание канала меняется только через `TEXT_CHANNEL_META`.
## Совместимость
- Новый UI пишет сокращённые теги `<S:title ...>` и `<S:ava ...>`.
- Серверное чтение поддерживает и старые теги `<SHiNE:title ...>` / `<SHiNE:avatar ...>`.
- Для размера аватара чтение поддерживает и старое поле `size`, и новое поле `sz`.