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_filefunção. Em geral, não é muito bem documentado, mas chamá-lo --helpe entrar helpdentro 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-deventre ./configuree make.
- Faça o login com sua conta do Telegram:
bin/telegram-clipara 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 +49e 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, quitsai do programa.
Upload de arquivos programaticamente
Agora os arquivos podem ser enviados dando um send_filecomando 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/tgdeveria 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_backuppara o chat do Telegram "Backup_chat".