#!/bin/bash # # SCRIPT: BotDownloadFile1.sh # # DESCRIÇÃO: Efetua download dos arquivos enviados para o privado, grupo ou canal. # Em grupos/canais o bot precisa ser administrador para ter acesso a # todas mensagens enviadas. # # Para melhor compreensão foram utilizados parâmetros longos nas funções; Podendo # ser substituidos pelos parâmetros curtos respectivos. # Importando API source ShellBot.sh # Token do bot bot_token='<TOKEN_AQUI>' # Inicializando o bot ShellBot.init --token "$bot_token" --monitor --return map function download_file() { local file_id if [[ ${message_photo_file_id[$id]} ]]; then # Em alguns arquivos de imagem o telegram aplica uma escala de tamanho # gerando id's para diferentes resoluções da mesma iagem. São elas (baixa, média, alta). # Os id's são armazenados e separados pelo delimitador '|' (padrão). # # Exemplo: # baixa_id|media_id|alta_id # Extrai o id da imagem com melhor resolução. file_id=${message_photo_file_id[$id]##*|} else # Outros objetos. # Extrai o id do objeto da mensagem. # document, audio, sticker, voice file_id=$(cat << _eof ${message_document_file_id[$id]} ${message_audio_file_id[$id]} ${message_sticker_file_id[$id]} ${message_voice_file_id[$id]} _eof ) fi # Verifica se 'file_id' contém um id válido. if [[ $file_id ]]; then # Obtém informações do arquivo, incluindo sua localização nos servidores do Telegram. ShellBot.getFile --file_id $file_id # Baixa o arquivo do diretório remoto contido em '{return[file_path]}' após # a chamada do método 'ShellBot.getFile'. # Obs: Recurso disponível somente no modo de retorno 'map'. if ShellBot.downloadFile --file_path "${return[file_path]}" --dir "$HOME"; then ShellBot.sendMessage --chat_id "${message_chat_id[$id]}" \ --reply_to_message_id "${message_message_id[$id]}" \ --text "Arquivo baixado com sucesso!!\n\nSalvo em: ${return[file_path]}" fi fi return 0 } while : do # Obtem as atualizações ShellBot.getUpdates --limit 100 --offset $(ShellBot.OffsetNext) --timeout 30 # Lista o índice das atualizações for id in $(ShellBot.ListUpdates) do # Inicio thread ( # Executa a função 'download_file' se a requisição não for um objeto de texto. [[ ${message_text[$id]} ]] || download_file ) & # Utilize a thread se deseja que o bot responda a várias requisições simultâneas. done done #FIM