E
Desenvolvimento de BOT para interação com usuário via sistemas de comunicação instantânea. A plataforma adotada para o primeiro desenvolvimento foi o Telegram, que possui ampla documentação. – README.md

README.md

Bot das EMM para Telegram

Repositório: https://git.cta.if.ufrgs.br/emm/emm-bot

Decidimos realizar a construção do BOT no Telegram, por ser uma plataforma simples, bem documentada e amplamente utilizada. Objetiva-se, porém, permitir uma adaptabilidade fácil a outros meios (outros mensageiros, por exemplo).

Converse com o bot

O bot tem a capacidade de informar os parâmetros medidos pelas estações meteorológicas de forma muito simples e acessível. Ele encontra-se hospedado no computador dados.cta.if.ufrgs.br, que também contém todo o resto do banco de dados das EMM.

Confira os comandos disponíveis na seção de ajuda do bot.

Funcionalidades

Para testar mesmo as funcionalidades, recomendamos a utilização do bot. Resumimos as funcionalidades a seguir:

  1. Oi - Dá as boas-vindas ao usuário;
  2. Ajuda - Explica os comandos;
  3. Tchau - Remove o usuário do banco de dados e se despede;
  4. Selecionar estação - Atribui ao usuário a estação selecionada.
  5. Último - Informa (via string) o valor da última medida do dado selecionado;
  6. Dia - Informa (via gráfico) o último dia de medidas;
  7. Semana - Informa (via gráfico) a última semana de medidas;
  8. Mês - Informa (via gráfico) o último mês de medidas.

Sobre o TOKEN

Se você clonar o repositório não conseguirá fazer o bot funcionar imediatamente, pois é necessário possuir um "código de acesso" fornecido pelo Telegram.

Por esse motivo foi criado um arquivo chamado "secretoken.py" contendo o TOKEN de acesso ao sistema do Telegram. Esse token permite que o bot utilize o serviço do Telegram e deve ser mantido em segredo para que ninguém se passe pelo BOT desenvolvido por outras pessoas. Dessa forma, realizamos um

from secretoken import tokensecret

E não realizamos o upload do secretoken.py para o servidor. Nesse arquivo consta apenas o código de acesso para o BOT. Você pode criar o seu token usando o "BotFather":https://core.telegram.org/bots#botfather.

Arquivos:

  • emm-bot.py - Código central de controle do bot.
  • dbhelper.py - Importado em emm-bot.py, serve para fazer o controle do banco de dados.
  • importa_dados.py - Obtém os dados do banco de dados das emm e também grafica-os, salvando .pngs localmente.
  • estacoes_existentes.txt - lista com as estações disponíveis para visualização de dados.

Bibliotecas utilizadas

Para o gerenciamento do banco de dados (arquivo dbhelper.py) foi usado o SQlite3. Referência: https://docs.python.org/2/library/sqlite3.html

Além dessa, são utilizadas as bibliotecas:

  • json - para lidar com a sintaxe de json.
  • requests - para fazer os "get" http.
  • time - para esperar um tempo mínimo entre um "get" e outro.
  • os - simplifica a localização de arquivos no sistema (sim, poderíamos ter feito diferente).
  • urllib - converte o texto para ele ser amigável a um texto de URL.
  • matplotlib - biblioteca clássica de Python para gráficos.

Como o banco de dados está organizado

É um banco de dados bastante simples contendo uma tabela "opcoes" com o seguinte formato:

USUARIO ESTACAO GRUPO
'padrao'

Usuário contém os "chat_id", o identificador único de um certo chat que se comunica com o bot (não é uma pessoa, a mesma pessoa pode comunicar-se em diferentes janelas e estar inscrita em mais de uma estação).

Estacao contém o número referente a estação selecionada (cada estação possui um único número que a identifica, esse número é informado pelo banco de dados e é necessário para realizar o download dos dados).

Grupo atualmente tem a entrada 'padrao' em todas as linhas, mas foi estrategicamente inserido para que os usuários possam inscrever mais de uma estação e separá-las por grupo (exemplo 'estações do meu bairro', 'estações perto da minha escola').


Todo o código é disponibilizado sob a licença GPLv3.

Jan Luc Tavares, Agosto de 2017.