Guest User

Untitled

a guest
Dec 12th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.53 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3.  
  4.  
  5. # Este script conecta ao servidor do Telegram, busca as mensagens recebidas e direciona comandos para um bot.
  6. SCRIPT=<Local do arquivo script>
  7.  
  8.  
  9. # importa o ShellBot
  10. source $SCRIPT/ShellBot.sh #integração com o Telegram
  11.  
  12.  
  13.  
  14.  
  15. # Inicializando o bot
  16. ShellBot.init -t <token do bot> -m --return map
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23. # funções da chamada dos Teclados
  24. hostgroups() {
  25.  
  26. # define variáveis locais
  27. local botoes host
  28.  
  29. # executa script python e salva no arquivo de texto
  30. python -c "execfile('itservice.py'); get_hostgroups()" > $SCRIPT/groups.tmp
  31.  
  32.  
  33. # lê cada linha do arquivo e cria um botão
  34. while read group
  35. do
  36.  
  37. # insere na variável o host da linha
  38. botoes+="[\"$group\"],"
  39.  
  40. # envia para o comando while o arquivo de hosts como lista
  41. done < <(cat $SCRIPT/groups.tmp)
  42.  
  43. # finaliza a variável com os botões
  44. botoes+="[\"Voltar\"]"
  45.  
  46. echo " - $botoes"
  47. # cria o teclado no shellbot
  48. teclado_groups="$(ShellBot.ReplyKeyboardMarkup --button 'botoes' --resize_keyboard true)"
  49.  
  50. echo " -- $teclado_groups"
  51.  
  52.  
  53. # envia a mensagem para o Bot
  54. ShellBot.sendMessage \
  55. --chat_id $destino \
  56. --text "Selecione um *grupo*:" \
  57. --reply_markup "$teclado_groups" \
  58. --parse_mode markdown
  59. }
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69. hosts() {
  70.  
  71. # define variáveis locais
  72. local botoes servidor
  73.  
  74. echo "Selecionou: $group"
  75.  
  76. #executa script python e salva no arquivo de texto
  77. python -c "execfile('itservice.py'); get_hosts('$group')" > $SCRIPT/$destino-hosts.tmp
  78.  
  79.  
  80. # lê cada linha do arquivo e cria um botão
  81. while read servidor
  82. do
  83.  
  84. # insere na variável o host da linha
  85. botoes+="[\"$servidor\"],"
  86.  
  87. # envia para o comando while o arquivo de hosts como lista
  88. done < <(cat $SCRIPT/$destino-hosts.tmp)
  89.  
  90. # finaliza a variável com os botões
  91. botoes+="[\"Voltar\"]"
  92.  
  93.  
  94. # cria o teclado no shellbot
  95. teclado_hosts="$(ShellBot.ReplyKeyboardMarkup --button 'botoes' --resize_keyboard true)"
  96.  
  97.  
  98. # envia a mensagem para o Bot
  99. ShellBot.sendMessage \
  100. --chat_id $destino \
  101. --text "Selecione um *servidor* deste grupo:" \
  102. --reply_markup "$teclado_hosts" \
  103. --parse_mode markdown
  104. }
  105.  
  106.  
  107.  
  108.  
  109.  
  110. # exibir informações do servidor
  111. items() {
  112.  
  113. # executa script python e salva no arquivo de texto
  114. python -c "execfile('itservice.py'); get_items_hosts('$server')" > $SCRIPT/$destino-serverinfos.tmp
  115.  
  116. # monta a mesnagem
  117. msg="*Informações de $server*
  118. \`$(cat $SCRIPT/$destino-serverinfos.tmp)\`"
  119.  
  120.  
  121. # envia a mensagem para o Bot
  122. ShellBot.sendMessage \
  123. --chat_id $destino \
  124. --text "$msg" \
  125. --parse_mode markdown
  126.  
  127.  
  128. }
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145. ## Obtendo novas mensagens
  146. while :
  147. do
  148. ShellBot.getUpdates --limit 100 --offset $(ShellBot.OffsetNext) --timeout 30
  149.  
  150.  
  151.  
  152.  
  153. ## Lista os índices das atualizações.
  154. for id in $(ShellBot.ListUpdates)
  155. do
  156. (
  157.  
  158.  
  159.  
  160. # registra no bot.log (r/e|DATA+HORA|IDUSUARIO|NOME-USUARIO|MENSAGEM|TIPO )
  161. echo -e "r|$(date +%Y%m%d)|$(date +%H%M%S)|${message_from_id[$id]}|${message_from_first_name[$id]} ${callback_query_from_first_name[$id]}|${message_message_id[$id]}|${message_text[$id]}${callback_query_data[$id]}|${message_chat_type[$id]}" >> $SCRIPT/bot.log
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168. ### MENSAGENS - se a mensagem não for callback nem resposta
  169. [[ -z ${callback_query_data[$id]} && -z ${message_reply_to_message_from_id[$id]} ]] && {
  170.  
  171.  
  172. # define o destino das respostas - variável esta é para facilitar o envio de mensagens assíncronas usando as mesmas função do report
  173. destino=${message_chat_id[$id]}
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181. ## COMANDOS - Verifica se a mensagem é do tipo comando.
  182. if [[ ${message_entities_type[$id]} == bot_command ]]
  183. then
  184.  
  185.  
  186. # Remove o sufixo contendo o username do bot e o '@' inclusive, extraindo somente o comando e compara as opções
  187. case ${message_text[$id]%%@*} in
  188.  
  189. '/ajuda' | '/start') hostgroups ;; # teclado principal
  190.  
  191. esac
  192. fi # fim de COMANDOS
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201. # se não for comando, analisa respostas pré DEFINIDAS
  202. if [[ ${message_entities_type[$id]} != bot_command ]]
  203. then
  204. # se for o nome de um grupo
  205. grep "${message_text[$id]}" $SCRIPT/groups.tmp && { group=${message_text[$id]} ; hosts ; }
  206.  
  207. # se for o nome de um servidor
  208. grep "${message_text[$id]}" $SCRIPT/$destino-hosts.tmp && { server="${message_text[$id]}" ; items ; }
  209.  
  210. # se for 'Voltar'
  211. [[ ${message_text[$id]} == 'Voltar' ]] && { hostgroups ; }
  212. fi # fim de respostas pré definidas
  213.  
  214. } # Fim de MENSAGENS
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223. ### CALLBACK - se a mensagem contiver callback, executa a função definida em 'bot-teclados'
  224. [[ -n ${callback_query_data[$id]} ]] & { destino=${callback_query_from_id[$id]} ; ShellBot.watchHandle --callback_data ${callback_query_data[$id]} ; }
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233. # Thread - segundo plano
  234. ) &
  235.  
  236. done
  237.  
  238. done
Add Comment
Please, Sign In to add comment