Skip to content

Latest commit

 

History

History
90 lines (63 loc) · 5.36 KB

File metadata and controls

90 lines (63 loc) · 5.36 KB

Contacts module

Это модуль для построения соответствия между участниками беседы vk и контактами Telegram.

Про сопоставление контактов

Когда Telegram импортирует из другого приложения чат, он видит только имена авторов сообщений и не знает, какие пользователи Telegram за ними скрываются. Возможно, что у некоторых авторов нет даже аккаунта в нём.

Чтобы решить эту проблему, Telegram использует список ваших контактов. Идея заключается в том, что если пользователь общается с собеседником в условном WhatsApp и хочет перенести беседу в Telegram, то собеседник, скорее всего, есть у пользователя в записной книжке телефона. А значит, он импортировался и в WhatsApp, и в Telegram, причём под одним и тем же именем.

Таким образом, чтобы Telegram правильно идентифицировал авторов сообщений, необходимо, чтобы имена этих собеседников были среди контактов пользователя. Однако опытным путём выяснилось, что это не является достаточным условием. Видимо, есть ещё какие-то факторы, влияющие на успешность сопоставления, например, настройки приватности собеседника. Или краевые случаи вроде тех, когда среди контактов есть два разных пользователя с одним и тем же именем. Но в большинстве случаев простого нахождения в списке контактов достаточно.

Как задать соответствие

1. Подготовка файла с контактами

Выполните команду:

$ ./main.py contacts prepare

Эта утилита прочтёт файл с экспортированными из vk сообщениями и создаст файл contacts_mapping.yaml. В файле для каждого собеседника содержатся строки вида:

- 87654321:               # id пользователя в vk
  - vk_name: Павел Дуров  # имя пользователя в vk
  - tg_name: null         # имя контакта в Telegram. Его предстоит заполнить вручную

2. Заполнение файла с контактами

  1. Откройте файл contacts_mapping.yaml
  2. Для каждого пользователя заполните поле tg_name
    • Поле уже заполнено, если имя пользователя vk в точности совпадает с одним из контактов Telegram
    • Замените null на имя контакта в Telegram
      • Утилита ./main.py contacts list выведет имена ваших контактов
    • Замените null на пустую строку "", если пользователя нет в Telegram
      • В качестве tg_name будет использоваться vk_name
      • Утилита ./main.py contacts check не будет проверять этот контакт
  3. При необходимости измените vk_name
    • Это имя используется для генерации служебных сообщений, реплаев и пересылаемых сообщений

3. Проверка правильности заполнения

Выполните команду:

$ ./main.py contacts check

Она проверит, что каждое указанное tg_name содержится в списке контактов. Если это не так, она выведет список пользователей с ошибками.

Успешное прохождение этой проверки не гарантирует, что Telegram правильно идентифицирует пользователей.

Успешное прохождение этой проверки необязательно, даже без него Приложение отработает корректно. Но в этом случае Telegram может неправильно идентифицировать некоторых собеседников.

Дополнительные опции

$ ./main.py contacts prepare

--input PATH       Путь до файла с экспортированными из vk сообщениями
--output PATH      Путь до файла, в который будут сохранены контакты
$ ./main.py contacts list

Нет опций
$ ./main.py contacts check

--input PATH       Путь до файла с сохранёнными контактами