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