Projeto que compara preços de boardgames anunciados do Ludopedia com o preço médio encontrado no Compara Jogos, e notifica caso o valor esteja abaixo da média.
- Este bot serve para monitorar o preço de um boardgame que você tenha interesse, no site de leilões Ludopedia. Fiz a pedido de um amigo que é viciado em comprar boardgames nesses leilões da vida.
- O preço dos anúncios do Ludopedia é comparado com o preço médio do jogo no Compara Jogos
- Caso o preço de um anúncio esteja abaixo da média, o bot te notifica, informando o jogo, o preço, e o link
- Este bot está online atualmente, basta clicar no aqui para acessá-lo em seu Telegram
- Cadastre produtos neles com o comando
/busca <nome do jogo>
- Pronto. A partir de agora você receberá notificações caso o bot encontre algum anúncio com preço abaixo da média
- Para cancelar a busca de um produto, utilize o comando
/cancela <nome do jogo>
Para desenvolvimento local eu utilizei o Docker-compose. Caso queira rodar localmente suba o banco com:
docker-compose up postgres adminer
Com o adminer você pode ver os dados no banco em http://localhost:8080
Crie um arquivo .env
na raíz do projeto com a seguinte estrutura:
TELEGRAM_TOKEN=<seu:token_do_telegram>
Suba o Bot com
docker-compose up bot
E para executar o script de verificação:
docker-compose up checker
Este repositório possui 2 scripts que são pontos de partida: o start_bot.py
e o checker.py
.
- O
start_bot
inicializa o bot e mantém ele ouvindo os comandos. Todo cadastro recebido é salvo no postgres através dosync
- O
checker
é o script que faz a verificação periódica, compara os preços, e notifica o usuário. Um scheduler no Heroku roda esse script de hora em hora
Dentro de modules
, temos:
- O
bot
, é o Bot (dã), implementado usando o python-telegram-bot - O
scrapper
é quem faz a busca no ludopedia, aqui eu uso o BeautifulSoup para fazer o web scrapping - O
service
(não arrumei um nome melhor) utiliza o backend do Compara Jogos para buscar o preço médio, através de graphQL (agradeço de coração aos devs do Compara Jogos pelo endpoint) - O
sync
é quem manipula o banco. Utilizei o Peewee como ORM
- Não permitir que o bot notifique o usuário mais de uma vez caso encontre um produto abaixo do preço
- Adicionar um comando
/cancela
, que remove um jogo da busca periódica