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

  • ./Telegram --help ничего не делает, кроме открытия программы.
  • Мне не удалось определить, откуда переменная argv из метода main, поэтому я не знаю, есть ли даже консольные аргументы.
  • Боты не могут получить доступ к моей файловой системе (и это хорошо).

Я могу легко автоматизировать упаковку нужных мне файлов в 1,5 ГБ архивы, используя 7z, но я понятия не имею, как на самом деле их отправлять. Есть ли способ сделать это без макросов кликов?

Я нахожусь на Debian 9.5 и использую официальный клиент Linux от telegram.org.

2 ответа2

0

Я нашел решение! Официальный клиент , вероятно , не позволяет (все известные аргументы командной строки неофициально задокументированы здесь), но и для Linux и Mac (и , вероятно , также подсистем Linux на Windows), есть неофициальный интерфейс командной строки для Телеграммы называется "TG": https://github.com/vysheng/tg
Он не упоминает в своем описании, что он также может отправлять файлы, но в выпуске Github кто-то написал, что есть функция send_file . В общем, это не слишком хорошо документировано, но вызов его с помощью --help и ввод help внутри программы дает много информации, остальное можно выяснить, поиграв с параметрами и попробовав разные вещи.
Вот решение, которое я придумал таким образом:

подготовка

  • Установите tg, как говорится в файле readme. В Debian это не сработало для меня из-за ошибки, но, как сказано в комментарии к этому сообщению об ошибке, установка libssl1.0-dev является обходным решением для этой ошибки: Выполните sudo apt install libssl1.0-dev между ./configure и make .
  • Войдите в свою учетную запись Telegram: bin/telegram-cli чтобы запустить интерактивную программу, введите номер телефона, введите код для входа. Я ввел свой номер телефона, начиная с +49 и это сработало, может быть, это требуется, я не знаю.
  • Теперь используйте другой клиент Telegram, чтобы отправить сообщение в целевой чат (или, альтернативно, получить сообщение там). Это добавляет имя чата во внутренний список чатов программы. Если существует несколько чатов с одним и тем же именем, кажется, что выбран последний добавленный. Я не нашел способа отправить сообщение в чат по идентификатору.
    Вот и все для настройки, quit из программы.

Загрузка файлов программно

Теперь файлы могут быть загружены с помощью команды send_file с помощью команды --execute , которая заставляет ее выполнить эту команду и автоматически завершить работу:

/path/to/tg/bin/telegram-cli --exec 'send_file <chat> <filename>'

<chat> - это имя чата.
<filename> - это путь к файлу.
/path/to/tg должен быть очевидным.

Пример использования

Я буду использовать что-то вроде этого, чтобы загрузить резервную копию своей папки Google Drive в Telegram после того, как я создаю ее с помощью p7zip:

for filename in ~/drive_backup/drive.zip.*; do ~/tg/bin/telegram-cli --exec 'send_file Backup_chat '"$filename"; done

Это загружает все файлы, чьи имена начинаются с « drive.zip. » (.001, .002 и т.д.) В папке ~/drive_backup в чат Telegram "Backup_chat".

-1

Пытаться

telegram-desktop -sendpath <fullpath>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .