11#! /bin/bash
22#
3- # SCRIPT: BotDownloadFile .sh
3+ # SCRIPT: BotDownloadFile1 .sh
44#
55# DESCRIÇÃO: Efetua download dos arquivos enviados para o privado, grupo ou canal.
66# Em grupos/canais o bot precisa ser administrador para ter acesso a
@@ -16,8 +16,52 @@ source ShellBot.sh
1616bot_token=' <TOKEN_AQUI>'
1717
1818# Inicializando o bot
19- ShellBot.init --token " $bot_token " --monitor
20- ShellBot.username
19+ ShellBot.init --token " $bot_token " --monitor --return map
20+
21+ function download_file()
22+ {
23+ local file_id
24+
25+ if [[ ${message_photo_file_id[$id]} ]]; then
26+ # Em alguns arquivos de imagem o telegram aplica uma escala de tamanho
27+ # gerando id's para diferentes resoluções da mesma iagem. São elas (baixa, média, alta).
28+ # Os id's são armazenados e separados pelo delimitador '|' (padrão).
29+ #
30+ # Exemplo:
31+ # baixa_id|media_id|alta_id
32+
33+ # Extrai o id da imagem com melhor resolução.
34+ file_id=${message_photo_file_id[$id]##* |}
35+ else
36+ # Outros objetos.
37+ # Extrai o id do objeto da mensagem.
38+ # document, audio, sticker, voice
39+ file_id=$( cat << _eof
40+ ${message_document_file_id[$id]}
41+ ${message_audio_file_id[$id]}
42+ ${message_sticker_file_id[$id]}
43+ ${message_voice_file_id[$id]}
44+ _eof
45+ )
46+ fi
47+
48+ # Verifica se 'file_id' contém um id válido.
49+ if [[ $file_id ]]; then
50+ # Obtém informações do arquivo, incluindo sua localização nos servidores do Telegram.
51+ ShellBot.getFile --file_id $file_id
52+
53+ # Baixa o arquivo do diretório remoto contido em '{return[file_path]}' após
54+ # a chamada do método 'ShellBot.getFile'.
55+ # Obs: Recurso disponível somente no modo de retorno 'map'.
56+ if ShellBot.downloadFile --file_path " ${return[file_path]} " --dir " $HOME " ; then
57+ ShellBot.sendMessage --chat_id " ${message_chat_id[$id]} " \
58+ --reply_to_message_id " ${message_message_id[$id]} " \
59+ --text " Arquivo baixado com sucesso!!\n\nSalvo em: ${return[file_path]} "
60+ fi
61+ fi
62+
63+ return 0
64+ }
2165
2266while :
2367do
2973 do
3074 # Inicio thread
3175 (
32- # Desativa download
33- download_file=0
76+ # Executa a função 'download_file' se a requisição não for um objeto de texto.
77+ [[ ${message_text[$id]} ]] || download_file
3478
35- # Lê a atualização armazenada em 'id'
36- if [ " ${update_id[$id]} " ]; then
37-
38- # Monitora o envio de arquivos do tipo:
39- #
40- # * Documento
41- # * Foto
42- # * Sticker
43- # * Musica
44- #
45- # Se a variável do tipo for inicializada, salva o ID do arquivo enviado em 'file_id' e ativa o download.
46- [[ ${message_document_file_id[$id]} ]] && file_id=${message_document_file_id[$id]} && download_file=1
47- [[ ${message_photo_file_id[$id]} ]] && file_id=${message_photo_file_id[$id]} && download_file=1
48- [[ ${message_sticker_file_id[$id]} ]] && file_id=${message_sticker_file_id[$id]} && download_file=1
49- [[ ${message_audio_file_id[$id]} ]] && file_id=${message_audio_file_id[$id]} && download_file=1
50-
51- # Verifica se o download está ativado.
52- [[ $download_file -eq 1 ]] && {
53- # Inicializa um array se houver mais de um ID salvo em 'file_id'.
54- # (É recomendado para fotos e vídeos, pois haverá o mesmo arquivo com diversas resoluções e ID's)
55- file_id=($file_id )
56- # Realiza o download do arquivo no indíce 0 (zero) do array e salva no HOME do usuário.
57- ShellBot.downloadFile --file_id " ${file_id[0]} " --dir " $HOME "
58- }
59-
60- case ${message_text[$id]} in
61- ' /teste' ) # comando teste
62- ShellBot.sendMessage --chat_id " ${message_chat_id[$id]} " --text " Mensagem de teste."
63- ;;
64- esac
65- fi
66- ) & # Utilize a thread se deseja que o bot responda a várias requisições simultâneas.
79+ ) & # Utilize a thread se deseja que o bot responda a várias requisições simultâneas.
6780 done
68-
6981done
7082# FIM
0 commit comments