TgAccountHolder - бот, предоставляющий доступ к аккаунтам, залогиненным в telegram-cli. Это позволяет хранить на сервере аккаунты и получать к ним доступ даже если на всех дургих устройствах был произведён выход из них. Бот имеет смысл использовать в том случае, если аккаунт зарегистрирован на номер телефона, к которому нет доступа (в том числе на иностранные или виртуальные номера).
Инстркукция проверялась на Ubuntu Server 20.04 LTS (x64). Для других систем, возможно, необходимо корректировать шаги.
- Устанавливаем telegram-cli через snap
sudo snap install telegram-cli
. - Запускаем его:
telegram-cli
. После запуска сразу же закрываем. - Редактируем конфиг:
vim ~/snap/telegram-cli/current/.telegram-cli/config
. В нём указываем профили, которые будут использоваться. Конфиг должен быть примерно таким, как показано ниже. По мере необходимости можно добавлять новые профили.
default_profile = "profile_1" ;
profile_1 = {
config_directory = ".telegram-cli/profile_1";
msg_num = true;
};
profile_2 = {
config_directory = ".telegram-cli/profile_2";
msg_num = true;
};
- Проходим авторизацию в каждом профиле. Для этого открываем telegram-cli с соответствующим профилем:
telegram-cli -p profile_1
и вводим номер телефона, пароль. После авторизации выходим при помощиquit
.
- Устанавливаем pip:
sudo apt update; sudo apt install python3-pip
- Устанавливаем пакет python для работы с ботом:
pip3 install python-telegram-bot --upgrade
. - Создаём бота при помощи @BotFather.
- Помещаем
config.ini
иaccount_holder.py
в одну папку. - Редактируем конфиг
config.ini
. Вtoken
поместить токен бота, полученный от @BotFather. Вmessage_prefix
поместить префикс сообщения (обязательно изменить). Вmessage_deleting_delay
поместить задержку в секундах перед удалением сообщения. Для подробностей смотрите раздел про использование бота. - Запускаем бота
python3 account_holder.py
, тестируем. - При необходимости создаём демон/сервис для бота.
Account holder маскируется под тестовый echo-бот. Любые сообщения, написанные без указанного префикса, будут пересылаться обратно. Для того, чтобы получить информацию по аккаунту необходимо отправить сообщение вида <префикс> <профиль>
. Например, Belarus profile_1
. В ответ с некоторой задержкой придёт сообщение, которое будет содержать в себе текст последнего сообщения от Telegram. Кроме того, в сообщении будет содержаться номер телефона (поэтому его можно не хранить в друго месте). Стоит отметить, что не получится при помощи одного приложения Telegram, в котором залогинен какой-то аккаунт, осуществить вход в аккаунт таким образом. Во время авторизации необходимо будет вернуться к боту за кодом, но из-за этого необходимо будет начать авторизацию заново. Поэтому для входа можно залогиниться в другом клиенте Telegram или на другом устройстве.
Команда /start
, сообщения запроса информации по профилю и ответы на них удаляются через message_deleting_delay
секунд. Поэтому после использования бота нет необходимости в очистке истории сообщений. Эхо-сообщения не удаляются.