Каналы: добавить профиль через TEXT_CHANNEL_META

This commit is contained in:
AidarKC
2026-08-01 01:57:41 +04:00
parent 24afcba20a
commit 110ff5e12e
31 changed files with 1312 additions and 191 deletions
+59
View File
@@ -0,0 +1,59 @@
# TEXT_CHANNEL_META: профиль канала
`TEXT_CHANNEL_META` — скрытый технический `TEXT`-блок для полного снимка профиля канала.
## Блок
- `msg_type = 1`
- `subType = 70`
- `msgVersion = 1`
- body использует тот же бинарный формат line-текста, что и `TEXT_POST`: line-поля + `textLen` + UTF-8 текст.
Блок пишется только в линию канала владельца. В обычной ленте сообщений он не отображается как пользовательский пост.
## Текстовый формат
В начале текста могут идти технические теги, после них обычный текст описания:
```text
<SHiNE:title;v=1;Название канала>
<SHiNE:avatar;v=1;size=248193;sha256=3f2c8a...;ar=AbCdEf...>
Описание канала.
```
Поддерживаемые теги:
- `<SHiNE:title;v=1;...>` — человекочитаемое имя канала.
- `<SHiNE:avatar;v=1;size=...;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.size` — положительный размер файла в байтах.
Если meta-блок невалиден, сервер не применяет его целиком.
## UI
- При создании канала UI может сразу после `TECH_CREATE_CHANNEL` записать первый `TEXT_CHANNEL_META` с человекочитаемым именем, аватаром и описанием.
- При создании канала UI показывает системную карточку `Создан канал ...`.
- При записи `TEXT_CHANNEL_META` UI показывает системную карточку `Изменён профиль канала`.
- У системных карточек нет лайка, ответа, репоста, редактирования и других действий обычного сообщения.
- По клику на системную карточку показываются аватар, человекочитаемое имя и описание на момент этого события.
## Замена старых команд
Команда `/.desc` больше не используется и не применяется сервером. Описание канала меняется только через `TEXT_CHANNEL_META`.