Eu encontrei uma solução! O cliente oficial provavelmente não permite (todos os argumentos de linha de comando conhecidos estão documentados aqui ), mas para Linux e Mac (e provavelmente também subsistema Linux no Windows), existe uma interface de linha de comando não oficial para o Telegram chamada "tg": https://github.com/vysheng/tg
Ele não menciona em sua descrição que ele também pode enviar arquivos, mas em um problema do Github alguém escreveu que existe a send_file
função. Em geral, não é muito bem documentado, mas chamá-lo --help
e entrar help
dentro do programa dá muita informação, o resto pode ser descoberto brincando com os parâmetros e tentando coisas diferentes.
Esta é a solução que encontrei dessa maneira:
Preparação
- Instale tg como o arquivo leia-me diz. Não funcionou direito para mim no Debian devido a um bug, mas como dito neste comentário de relatório de bug , a instalação
libssl1.0-dev
é uma solução para esse bug: Execute sudo apt install libssl1.0-dev
entre ./configure
e make
.
- Faça o login com sua conta do Telegram:
bin/telegram-cli
para iniciar o programa interativo, digite o número de telefone, insira o código de login. Eu digitei meu número de telefone começando +49
e que funcionou, talvez seja necessário, eu não sei.
- Agora use outro cliente Telegram para enviar uma mensagem no chat de destino (ou, alternativamente, receber uma mensagem lá). Isso adiciona o nome do bate-papo à lista de bate-papo interna do programa. Se existirem vários chats com o mesmo nome, parece escolher o mais recentemente adicionado. Não encontrei uma maneira de enviar mensagens para um bate-papo por ID.
É isso para a configuração, quit
sai do programa.
Upload de arquivos programaticamente
Agora os arquivos podem ser enviados dando um send_file
comando ao programa --execute
, o que faz com que ele execute esse comando e saia automaticamente:
/path/to/tg/bin/telegram-cli --exec 'send_file <chat> <filename>'
<chat>
é o nome do chat.
<filename>
é o caminho para o arquivo.
/path/to/tg
deveria ser óbvio.
Exemplo de uso
Usarei algo assim para fazer o upload de um backup da minha pasta do Google Drive para o Telegram depois de criá-lo com o p7zip:
for filename in ~/drive_backup/drive.zip.*; do ~/tg/bin/telegram-cli --exec 'send_file Backup_chat '"$filename"; done
Isto carrega todos os arquivos cujos nomes começam com " drive.zip.
" (.001, .002 etc.) na pasta ~/drive_backup
para o chat do Telegram "Backup_chat".