SHA256
68 lines
4.3 KiB
Markdown
68 lines
4.3 KiB
Markdown
# 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`.
|