Skip to content

Commit aa2daf5

Browse files
author
Juliano Santos
committed
Atualização do script 'BotDownloadFile1' para download de objetos em mensagens.
1 parent e59c6b2 commit aa2daf5

1 file changed

Lines changed: 50 additions & 38 deletions

File tree

exemplos/BotDownloadFile1.sh

Lines changed: 50 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
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
1616
bot_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

2266
while :
2367
do
@@ -29,42 +73,10 @@ do
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-
6981
done
7082
#FIM

0 commit comments

Comments
 (0)