Я нашел решение! Официальный клиент , вероятно , не позволяет (все известные аргументы командной строки неофициально задокументированы здесь), но и для 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".