Uber no telegram ? Será que rola ?

Dias atrás vi uma postagem em um site de freelancers que continha uma proposta de desenvolvimento de uma aplicação de mobilidade urbana utilizando o aplicativo de mensagens whatsapp, todo o processo seria via whatsapp.Aquilo me fez pensar no: "porquê não usar telegram pra isso ?". Eis que me motivou a começar a desenvolver algo para uma pequena demanda aqui da minha região, não como uma ferramenta comercial como o autor da postagem pretendia, mas sim como um projeto de estudo e também para brincar um pouco com python,e não é que está nascendo o DriveMatch , ainda é um bebê com algumas horas de vida kkkk, mas já tem um propósito. Quando tiver pronto a ideia é que tenha funcionalidade parecida com a Uber mesmo, possibilitando passageiros buscarem motoristas por perto e com valores negociáveis entre as partes, ou algo pré calculado levando em conta a distância, o tempo de viagem entre a origem e o destino bem como horários de pico e trânsito com uma tarifa variável, porém com preços bem mais baixos que a Uber. Estou usando gmaps para calcular a distância entre os pontos A e B e também estou trabalhando na feature de adicionar paradas no meio do trajeto. O que acham disso, será que rola ??? kkkkk Bora codar...

OBS: Possivelmente irei disponibilizar o código fonte dessa brincadeira no github, então caso alguém queira conferir depois e contribuir com algo ou se quiser bater um papo sobre isso, só chamar no Telegram

DriveMatch

Muito boa a ideia, estava pensando em algo assim também mas para uma outra aplicação. Dica, faça o core da sua aplicação separado da sua camada de comunição com o cliente, assim voçê não fica dependendo apenas do Telegram e pode integrar com outras plataformas, WhatsApp, Facebook Messenger, SMS, Discord, Slack, forúns, apps whitelabel...

Boa, tô seguindo esse caminho, decidi iniciar pelo telegram por ser mais simples essa integração.

a parte ruim é que por exemplo no Brasil, muita gente tem telegram, mas não usa como app de mensagens principal, geralmente é para usos específicos como acesso a canais de conteúdo ou grupos para compartilhamento de conhecimento que a pessoa tem interesse mas que estão apenas no telegram e aí nesse caso a pessoa não tem escolha, então o telegram (que acredito que seja uma ótima ferramenta) pode ser uma barreira para usar o serviço.

posso estar enganado mas acredito que a empresa que fornece o serviço via WhatsApp está visando as pessoas não querem um app adicional no celular ou que tem dificuldade com tecnologia mas sabe usar o WhatsApp, se for esse o caso, dificilmente essas pessoas vão usar o telegram.

Isso é bem verdade, mas isso também pode mudar com o tempo, telegram supera e muito o whatsapp em qualquer questão. Mas sei que usuário não liga muito para isso, vão no que é mais popular. O bom disso é que conheço vários grupos no telegram e vou fazendo a parte de divulgação do serviço por esses grupos e canais. Talvez saia uma versão para whatsapp também, mas só depois que desenrolar essa versão para telegram.
Telegram hoje em dia é a melhor plataforma de rede social que exist. Supera qualquer outra em questão de usabilidade, qualidade e integração de serviços.

Eu acho meio paia isso, um uber no telegram pode conter muitas falhas futuramente, e imagina se a pessoa coloca o endereço incorreto sem nenhum tipo de correção?

Isso também pode ser um problema, eu acho que fico com um pé pra trás.

Isso de colocar endereço errado ocorre em qualquer app, no ifood, uber, 99, correios, mercado livre. Mas entendo a sua preocupação, quando digo uber no telegram não é necessariamente o app do uber via telegram, e sim algo que liga passageiros a motorista e vice versa. A questão do endereço é algo que como eu disse acima, comum de se cometer equívocos, o que eu fiz aqui foi usar as funcionalidades de [geolocalização](https://core.telegram.org/api/live-location) fornecidas pelo próprio telegram,e também a opção do usuário inserir os pontos A e B. Ainda tem o lance de que para se encontrar motoristas o sistema usa o recurso de proxmidade do telegram, que se baseia em dispositivos próximos ao solicitante. O sistema faz uma busca por usuários nas [proximidades](https://core.telegram.org/api/live-location#proximity-alert) e envia para cada um deles sendo eles motoristas cadastrados no sistema, essa mensagem contém os dados de quem solicita, ou seja o passageiro incluindo a localização desse passageiro que pode ser acessada e verificada pelo motorista, ao clicar em aceitar a viagem, o motorista dá início a corrida, essa corrida pode ser cancelada por qualquer das partes antes de o passageiro embarcar no veículo, pois quando o passageiro embarca, o motorista dá de fato início a corrida. Existe um bot semelhante, mas com menos recursos que se chama [libretaxi](https://t.me/libretaxi_bot)

Eu estava usando a API do google para calcular distância, mas ficou R$1500,00 no final do mês. Encontrei essa fórmula que faz o cálculo, mas você precisa de latitude e longitude, vai acabar precisando passar o endereço como parametro para gerar os pontos de lat e long em outra api lib.

export function calculateLatAndLong(latitude1: number, longitude1: number, latitude2: number, longitude2: number, unit: 'kilometers' | 'miles' = 'kilometers'): { value: number, unit: string } {
  const radius = 6371; // Earth's radius in kilometers
  const dLat = (latitude2 - latitude1) * Math.PI / 180;
  const dLon = (longitude2 - longitude1) * Math.PI / 180;
  const a = Math.pow(Math.sin(dLat / 2), 2) + Math.cos(latitude1 * Math.PI / 180) * Math.cos(latitude2 * Math.PI / 180) * Math.pow(Math.sin(dLon / 2), 2);
  const c = 2 * Math.atan(Math.sqrt(a) / Math.sqrt(1 - a));
  const distanceInKm = radius * c;
  const kmToMiles = 0.621371;
  const value = unit === 'kilometers' ? parseFloat((distanceInKm * kmToMiles).toFixed(2)) : parseFloat(distanceInKm.toFixed(2));
  return { value, unit };
}

Acho que você também poderia utilizar ageolib Outras Alternativas

Boa, na verdade estou usando o próprio gmaps sem API, webscraping raiz mesmo kkk... ```python def get_address_info(origin, destination): path_url = f"{url_base}/maps/dir/{origin}/{destination}".replace(" ", "+") # print(path_url) response = requests.get(path_url) html = response.text match = re.findall(r'window\.APP_INITIALIZATION_STATE=(.+?);', html) if match: data_str = match[0].strip().replace(")]}'", "") data = json.loads(data_str) other_data = json.loads(data[3][4]) distance_total = other_data[0][1][1][0][2][1] time_total = other_data[0][1][1][0][3][1] return distance_total, time_total else: return None, None ```
caracas man, muito top kkkk