mirror of
https://gitverse.ru/kpa39l/icq.git
synced 2026-09-29 01:50:10 +00:00
docs: сессия 2026-08-29 (вечер) — каналы/папки TG в рostере (WALKTHROUGH §12.9), подтверждение причины 'миллиона приглашений' (always_invite_when_adding_bookmarks), фикс диагностики рostera (сырой IQ)
This commit is contained in:
@@ -31,10 +31,17 @@
|
||||
на каждую группу (`always_invite_when_adding_bookmarks: true` + bookmarks не пишутся из-за
|
||||
сломанного mod_privilege → fallback на ручные приглашения). Не баг как таковой; уйдёт после
|
||||
апгрейда 0.12. Временно: `always_invite_when_adding_bookmarks: false` в preferences (SQLite user_account).
|
||||
⚠️ Подтверждено в БД (2026-08-29 вечер): `user_account.preferences` = JSON
|
||||
`{"always_invite_when_adding_bookmarks": true, ...}`.
|
||||
- **Flood wait при первом старте**: `WARNING:slidgram.telegram:Flood in get_chat(...) sleep for N sec`
|
||||
при синхронизации большого аккаунта (1602 контакта). Норма; кэш заполнится — паузы уйдут.
|
||||
- **Контакты «пропали» из ростера после рестарта**: рostер на сервере цел (проверено, 1602).
|
||||
Клиент при переподключении сам запрашивает рostер; если в Pidgin пусто — Disable/Enable аккаунта.
|
||||
Проверять рostер сырым IQ (не через клиентский кэш slixmpp) — см. WALKTHROUGH §12.9.
|
||||
- **Каналов в рostере нет — это норма** (2026-08-29 вечер): рostер = только личные контакты
|
||||
(1602, `число@telegram.nixg.ru`). Каналы/группы (91 канал + 40) — в таблице `room` БД моста,
|
||||
в XMPP показываются как bookmarks (сломаны). Папки TG слайдж не поддерживает.
|
||||
Подробности и обходной путь (Join вручную) — WALKTHROUGH §12.9.
|
||||
|
||||
## Регистрация TG-аккаунта — ВЫПОЛНЕНА (2026-08-29)
|
||||
- estorozhenko@nixg.ru → команда `register` (отправлена из Pidgin на адрес telegram.nixg.ru,
|
||||
|
||||
@@ -26,6 +26,11 @@ Self-hosted XMPP-мессенджер на **nixg.ru** (Prosody 0.11.9 + веб-
|
||||
|
||||
## Задачи (будущее)
|
||||
- [ ] ~~**Регистрация TG-аккаунта в мосте**~~ — ВЫПОЛНЕНО 2026-08-29 (estorozhenko@nixg.ru)
|
||||
- [x] ~~**Вопрос про каналы/папки TG в рostере**~~ — РЕШЕНО/ОТВЕЧЕНО 2026-08-29 (вечер):
|
||||
каналов в рostере XMPP НЕТ и быть не может (роster = личные контакты, 1602 шт.).
|
||||
Каналы/группы (91+40) живут в БД моста (room), в XMPP — через bookmarks (сломаны из-за
|
||||
mod_privilege-стаба). Папки Telegram слайдж не поддерживает (TODO в session.py:292).
|
||||
Подробности: WALKTHROUGH §12.9.
|
||||
- [ ] **Аватары TG в мосте таймаутят** — HTTP-часть slidge не ходит через SOCKS5 (URL web.telegram.org
|
||||
недоступны из РФ). Косметика, на переписку не влияет. Разбор и варианты: BRIDGE-TELEGRAM.md.
|
||||
- [ ] **Сборка Prosody 0.12.x (система сборки)** — ЗАПЛАНИРОВАНО (сделать позже):
|
||||
|
||||
@@ -607,6 +607,50 @@ docker exec icq-prosody prosodyctl list 2>/dev/null # зарегистриро
|
||||
- **Решение**: собрать свой образ из исходников 0.12.6 (Dockerfile на базе
|
||||
prosody/prosody:0.11.9 + tar.gz 0.12.6). См. STATUS.md «Сборка Prosody 0.12».
|
||||
|
||||
### 12.9 Каналы и папки Telegram в рostере (2026-08-29 вечер)
|
||||
**Вопрос пользователя**: «как найти каналы из Телеграм в рostере? а ещё папки были в телеге — как вытащить?»
|
||||
|
||||
**Ответ (проверено) — каналов в рostере XMPP НЕТ, и это нормально:**
|
||||
- XMPP-рostер (`jabber:iq:roster`) — это **только личные контакты**: 1602 записи,
|
||||
все вида `число@telegram.nixg.ru` (пример: `1646170373@telegram.nixg.ru` = «Наталья Рыбий»).
|
||||
Контактов с префиксом `group-` в рostере — **0**.
|
||||
- Каналы/группы живут **отдельно**, в БД моста (таблица `room` в slidge.sqlite):
|
||||
**91 канал** (`muc_type='CHANNEL'`, jid_localpart `group-<id>`) + **40** групп/прочих.
|
||||
- В XMPP каналы должны показываться как **закладки комнат (XEP-0402 bookmarks)**
|
||||
→ в Pidgin «Комнаты → Закладки», откуда заходят. **Сейчас bookmarks сломаны**
|
||||
из-за mod_privilege-стаба (XEP-0356 не пересылает MDS/pubsub-запросы), поэтому
|
||||
слайдж вместо закладок шлёт **приглашения** в каждую комнату — «миллион запросов».
|
||||
- **Обходной путь сейчас**: Pidgin → Комнаты → Присоединиться → адрес
|
||||
`group-<id>@telegram.nixg.ru`, ник `estorozhenko` (пример `group-1001698123474@telegram.nixg.ru`).
|
||||
Полный список каналов: `SELECT jid_localpart, name FROM room WHERE muc_type='CHANNEL'` в БД моста.
|
||||
- **Папки Telegram**: слайдж **не поддерживает** (`session.py:292`, обработчик
|
||||
`DialogPeerFolder` — `# TODO: investigate what that is; return`). В XMPP аналога
|
||||
«папок чатов» нет (рostер плоский). Pyrogram `get_folders()` (`messages.GetDialogFilters`)
|
||||
технически умеет читать папки, но отдельный MTProto-клиент на той же сессии
|
||||
выкинет работающий мост → вариант только «остановить мост на 30 сек, прочитать,
|
||||
запустить». Практической ценности нет — в XMPP-клиенте папки всё равно некуда вывести.
|
||||
|
||||
**Диагностика рostера (полезный навык, не повторять ошибку):**
|
||||
- Признак «контакты пропали»: клиент (slixmpp/Pidgin) показывает пусто.
|
||||
**Проверять НЕ через `bot.roster`/`roster_update`** (slixmpp читает свой кэш и
|
||||
событие срабатывает раньше полного ответа — ложно показывает 1 контакт), а
|
||||
**сырым IQ**: `bot.make_iq_get(queryxmlns='jabber:iq:roster').send()` →
|
||||
`.findall('.//{jabber:iq:roster}item')`. Верифицировано: вернул **1602 item'а**.
|
||||
- Рostер-файл: `/var/lib/prosody/nixg%2eru/roster/estorozhenko.dat` (445 КБ, 1602 записи,
|
||||
версия 1607) — читается через `datamanager.load("estorozhenko","nixg.ru","roster")`
|
||||
только при установленном `data_path` (вне Prosody-контекста он nil → ложный ENOENT).
|
||||
- Debug-логирование mod_privilege: добавить `debug = ".../prosody.log"` в блок `log`
|
||||
конфига (временно; после отладки вернуть) — в логе видно `Entity is privileged`
|
||||
на обоих хостах, `load_roster: asked for` / `save_roster: saving roster (all contacts)`.
|
||||
- Замечание: каталог данных называется `nixg%2eru` (URL-кодирование точки), а не `nixg.ru` —
|
||||
`ls /var/lib/prosody/nixg.ru` даёт «No such file» — это норма, не ошибка.
|
||||
|
||||
**Причина «миллиона приглашений» подтверждена**: в БД моста `user_account.preferences`
|
||||
JSON содержит `"always_invite_when_adding_bookmarks": true` — слайдж шлёт приглашение
|
||||
на каждую группу при синхронизации. Кандидат на `false`, когда bookmarks заработают
|
||||
(после апгрейда 0.12). Пока слайдж-стаб не чинит bookmarks, приглашения — единственный
|
||||
способ «увидеть» каналы, их можно игнорировать в Pidgin.
|
||||
|
||||
## 13. TODO (следующие шаги)
|
||||
- [x] ~~OMEMO (XEP-0384)~~ — ВЫПОЛНЕНО: раздел 9; скрипт scripts/omemo_check.py.
|
||||
- [ ] Бот-книгоискатель (slixmpp + OPDS) — Этап 3 PRD. venv уже создан (/opt/icq/.venv: aiohttp, slixmpp).
|
||||
|
||||
Reference in New Issue
Block a user