Bot de Telegram para gerenciamento de caronas

Grupo: Rodrigo Jesus, Camilo Oliveira, Gabriel Soldani

Proposta inicial:

O projeto tem como objetivo a criação de um script que se comunique com os servidores do serviço de mensagens instantâneas Telegram e permita a automatização da tarefa de gerenciar caronas.

O projeto até agora:

O funcionamento base do script está garantido, com o bot tendo diversas funções plenamente implementadas, sendo elas:

Por parte do caroneiro:

  • Reservar carona (tanto para o dia atual quanto para algum dia específico, com até uma semana de antecedência)
  • Reservar carona para um amigo ou acompanhante
  • Cancelar carona
  • Obter informações sobre os horários do motorista
  • Obter informações sobre quem tem carona reservada em um determinado dia
  • Obter informações sobre quais caronas estão reservadas

Por parte do motorista:

  • Alterar horários das caronas
  • Expulsar alguém do carro
  • Cancelar uma ida (ou volta) 

E outras em processo de implementação, como:

  • O motorista poder mandar mensagem para todos os usuários com carona reservada em um determinado dia 
  • O motorista poder banir permanentemente certos usuários de pedir carona 

No que estamos trabalhando:

O próximo passo é a generalização do bot para que funcione com qualquer usuário. Atualmente, existem certas informações — mais especificamente, a autenticação do bot com os servidores do Telegram, o nome e número de identificação do motorista — que estão dentro do próprio código. No momento estamos alterando as informações de autenticação com o Telegram para um arquivo de configuração em plaintext e trabalhando em uma maneira de que as informações relativas ao motorista sejam obtidas de forma mais invísivel ao usuário possível. As mudanças estão caminhando para a fase de testes e estamos confiantes de que estarão em pleno funcionamento em pouco tempo.

Sobre as funções do bot, estamos estudando também adicionar uma fila para caroneiros que não conseguirem vaga (avisando-os caso alguém cancele) e adicionar uma opção de avisar um motorista sempre que alguém reservar uma carona.

O futuro

Pretendemos criar uma interface gráfica que inicialmente serviria como método de obtenção do token que realiza a autenticação com os servidores do Telegram, e após isso talvez coloquemos algumas informações relevantes sobre a utilização o bot, incluindo o passo a passo de como obter esse token junto ao Telegram e uma documentação do bot (utilização dos comandos, por exemplo).

Terminado isto, um possível projeto futuro é a possibilidade do mesmo bot ser  utilizado por mais de um motorista, o que provavelmente necessitaria de mudanças amplas o suficiente para valer mais a pena a criação de um novo código — um  trabalho considerável, mesmo sendo em cima de conhecimento obtido ao longo do desenvolvimento do bot original. Além disso, algumas das soluções para múltiplos motoristas que estudamos ao longo do projeto negariam várias das facilidades do bot original, como por exemplo os horários serem automaticamente renovados a cada semana.

Uma outra opção que deve ser estudada é a criação de um bot cujo único trabalho fosse gerenciar bots individuais.

Comentários

#1

​Na última semana, nós implementamos a primeira versão do método de autenticação de motoristas (generalização do código) e também a funcionalidade de mandar mensagens para usuários que têm caronas reservadas, além de corrigir bugs. Para a próxima semana, pretendemos trabalhar em outras das funções pendentes e também escrever a documentação do software. Outras funções pretendidas incluem configuração para que os usuários necessitem ou não de autorização prévia para reservar caronas e também a opção de ser avisado pelo bot sempre que uma carona for reservada, e não apenas antes da viagem.

#2

No que estivemos trabalhando:

  • Configuração do número de vagas do carro
  • Groundwork para outras funções de configuração do bot
  • Correção de bugs
  • Permitir que caronas sejam oferecidas no final de semana 
  • Implementação inicial da função de banir um usuário de utilizar o bot 

#3

Excelente Pessoal...

Uma dúvida: o código está no GIT? Se sim, compartilhem o link conosco aqui.

#4

Agora está :) https://github.com/rodrigoj42/caronasbot

#5

Fui ver o código de vocês no GitHub.

Pode melhorar:

-> Vocês só tem um commit no GitHub. Não dá pra saber quem fez o que.

-> Não tem documentação no GIT, nenhum leiame pra eu saber como usar programa ou notas explicando código

-> Tem um arquivo main enorme, não dava pra dividir isso em arquivos menores e mais bem explicados?

Está bom:

-> O código está bem comentado

-> Nomes de variável bem auto-explicativos, nenhuma variável ou função arcana (x, asdf, m, etc)

-> Não fizeram gambiarras! Pra um trabalho de disciplina isso é um mérito.

#6

O que fizemos desde a última atualização:

  • Implementação das configurações no bot (número de vagas ofertado e whitelist) 
  • Implementação de uma blacklist (funções /ban e /unban)
  • Interface gráfica para inicialização do bot utilizando Tkinter
  • Correções de bugs (tanto de lógica quanto funcionais, como o caso do /ack mencionado durante a apresentação)
  • Pequenas mudanças cosméticas no código

Aqui está o log de mensagens recebidas pela instância que eu uso do CaronasBot, o @thejesusbot, como pedido em sala, referente aos meses de fevereiro e março: http://pastebin.com/eTpTxZVs

#7

body,div,table,thead,tbody,tfoot,tr,th,td,p { font-family:"Calibri"; font-size:x-small }

Pessoal,

Mais uma vez mil parabéns pelo trabalho!!!

Em anexo está uma planilha com o resultado final de vocês (se tiver algo errado avisem), por favor, paguem-se nos CK$ que estão faltando. Por exemplo, o Camilo fechou com saldo CK$ 105, mas no Corais ele lançou apenas CK$ -2.

Projeto Nomes Conta 27/10/15 3/11/15 10/11/15 17/11/15 24/11/15 26/11/15 1/12/15 8/12/15 10/12/15 5/1/16 12/1/16 19/1/16 26/1/16 2/2/16 16/2/16 23/2/16 1/3/16 8/3/16 Total de faltas Presenças CK$ MVP EXTRAS Saldo Nota acadêmica
Bot de Caronas Camilo 4122 Presente Faltou Atrasado Faltou Presente Presente Faltou Presente Faltou Presente Presente Faltou Presente Presente Presente Presente Presente Presente 5 13 156 11 48 105 10
Rodrigo 4117 Presente Presente Presente Presente Presente Presente Presente Presente Presente Presente Presente Presente Presente Presente Presente Presente Presente Presente 0 18 216 11 48 165 10