mirror of
https://gitverse.ru/kpa39l/icq.git
synced 2026-09-29 09:55:11 +00:00
docs: сессия 2026-08-29 (вечер) — каналы/папки TG в рostере (WALKTHROUGH §12.9), подтверждение причины 'миллиона приглашений' (always_invite_when_adding_bookmarks), фикс диагностики рostera (сырой IQ)
This commit is contained in:
@@ -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