Skip to content

Commit

Permalink
New JerimumBot release (#51)
Browse files Browse the repository at this point in the history
* test_coach with failing test with randint returning max value

* coach: new query parameter and timeout

* New tests

* throttling module

* throttle imported on core

* clima & coach sofrendo throttle

* fixed tests

* fixed possible `0` value on `total_pages`

fixes #41

* flake8

* new badges

* markdown mention on user.full_name

* flake8

* docker configured

* mongoengine installed

* mongoengine connect

* Status created

* env.example

* pendulum installed

* import Status on db.__init__

* datetime with pendulum

* value & sticker properties

* now property

* new messages

* method for status creation

* file name changed

* aberta & fechada removed from sticker module

* house module created with "/aberta", "/fechada" and /status

* house handler added

* flake8 fixes

* dev testing requirements

* test with pytest

* mongo tear down fixture

* Status.__eq__ method

* test house Document

* fixed requirements

* flake8

* save on test

* readme

* readme organized

* wip: readme

* readme with mongo & docker

* readme fixed

* readme

* readme completed

* DB_AUTH env created

* retryWrites=False
  • Loading branch information
rodrigondec authored Oct 28, 2019
1 parent c9894df commit 62c7ed3
Show file tree
Hide file tree
Showing 17 changed files with 485 additions and 104 deletions.
2 changes: 1 addition & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ commands:
steps:
- checkout
- run: make config.env
- run: sudo pip install -r requirements.txt
- run: sudo pip install -r requirements-dev.txt

jobs:
flake8:
Expand Down
18 changes: 14 additions & 4 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,4 +1,14 @@
export BOT_TOKEN=meu_token_123
export OPENWEATHERMAP_TOKEN=meu_token_123
export MODE=cmd
export SERVER_URL=https://jerimumhsbot.herokuapp.com
BOT_TOKEN=meu_token_123
OPENWEATHERMAP_TOKEN=meu_token_123
MODE=cmd
SERVER_URL=https://jerimumhsbot.herokuapp.com

MONGO_INITDB_ROOT_USERNAME=mongo
MONGO_INITDB_ROOT_PASSWORD=mongo

DB_USER=mongo
DB_PASSWORD=mongo
DB_HOST=mongo
DB_NAME=mongo
DB_PORT=27017
DB_AUTH=admin
11 changes: 11 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
FROM python:3.7
ENV PYTHONUNBUFFERED 1

# Requirements have to be pulled and installed here, otherwise caching won't work
COPY requirements.txt requirements.txt
COPY requirements-dev.txt requirements-dev.txt
RUN pip install -r requirements-dev.txt

WORKDIR /app

ADD . /app/
70 changes: 65 additions & 5 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,14 +1,74 @@
current_dir = $(notdir $(shell pwd))

config.env:
cp .env.example .env

##############################
### LOCAL PYTHON COMMANDS ###
#############################
run:
python run.py

test:
python -m unittest discover
pytest

flake8:
flake8

config.env:
cp .env.example .env

pip.install:
pip install -r requirements.txt
pip install -r requirements-dev.txt

##############################
###### DOCKER COMMANDS ######
#############################
docker.build:
docker-compose build

docker.logs:
docker-compose logs -f

docker.up:
docker-compose up -d

docker.down:
docker-compose down

docker.bash:
docker-compose run bot bash

docker.test:
docker-compose run bot pytest

docker.flake8:
docker-compose run bot flake8

docker.bot.stop:
docker stop $(current_dir)_bot_1

docker.bot.restart: docker.bot.stop docker.up

docker.volumes.remove: docker.down
docker volume rm $(current_dir)_mongo_volume

##############################
###### HEROKU COMMANDS ######
#############################
heroku.prod.add_remote:
heroku git:remote -a jerimumhsbot
git remote rename heroku heroku-prod

heroku.prod.deploy:
git push heroku-prod master

heroku.prod.purge_cache:
heroku repo:purge_cache -a jerimumhsbot

heroku.dev.add_remote:
heroku git:remote -a jerimumhstestbot
git remote rename heroku heroku-dev

heroku.dev.deploy:
git push heroku-dev dev:master

heroku.dev.purge_cache:
heroku repo:purge_cache -a jerimumhstestbot
178 changes: 111 additions & 67 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@
![GitHub top language](https://img.shields.io/github/languages/top/jerimumhs/jerimumbot)
![GitHub issues](https://img.shields.io/github/issues/jerimumhs/jerimumbot)
![GitHub closed issues](https://img.shields.io/github/issues-closed/jerimumhs/jerimumbot)
![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/jerimumhs/jerimumbot)
![GitHub release (latest by date)](https://img.shields.io/github/v/release/jerimumhs/jerimumbot)
![GitHub contributors](https://img.shields.io/github/contributors/jerimumhs/jerimumbot)
![GitHub last commit](https://img.shields.io/github/last-commit/jerimumhs/jerimumbot)

![GitHub forks](https://img.shields.io/github/forks/jerimumhs/jerimumbot?style=social)

> É o bot do Telegram controlado pelo Guilherme, o gato mais bonito e simpático do mundo, com finalidade de ajudar a
comunidade do [Jerimum Hackerspace](http://jerimumhs.org/).
Expand All @@ -19,117 +19,161 @@ comunidade do [Jerimum Hackerspace](http://jerimumhs.org/).

Seguindo este rápido guia (desenvolvido para Linux), ao fim você será capaz de executar sua própria instância do nosso bot.

<details><summary>Guia de instalação</summary>

### Clonando o repositório

<details><summary>Utilizando Git</summary>

Para instalar o bot, o primeiro passo é clonar o repositório no seu ambiente local. Isso pode ser
feito através do seguinte comando, via terminal:


git clone https://github.com/jerimumhs/JerimumBot.git

Com isso pronto, basta entrar no diretório recém criado:

cd JerimumBot/

</details>

### Configurando o ambiente
<details>

### Clonando o repositório
Para rodar nosso bot é necessário `Python` e `Mongo`. Pode ser utilizado o docker para facilitar a utilizar ou realizar a instalação dessas tecnologias,

#### instalação Python + Mongo
<details><summary>Python</summary>

É necessário ter algum python a cima da versão 3.6 siga a [documentação oficial](https://www.python.org/downloads/) para instalar.

##### Criando um ambiente virtual
Antes de prosseguir na execução do bot, você precisará criar um ambiente virtual. Existem maneiras diferentes de fazer isso.

<details><summary>utilizando venv</summary>

Utilizando Python3.6, basta executar:

python3 -m venv {{nome_do_seu_venv}}

Onde `{{nome_do_seu_venv}}` deve ser substituído por um nome de sua escolha.

Agora, será necessário ativar este ambiente execute o comando referente ao seu SO:


<details>
<details> <summary>Linux</summary>

Para instalar o bot, o primeiro passo é clonar o repositório no seu ambiente local. Isso pode ser
feito através do seguinte comando, via terminal:
source {{nome_do_seu_venv}}/bin/activate
</details>

~~~~
git clone https://github.com/jerimumhs/JerimumBot.git
~~~~

Com isso pronto, basta entrar no diretório recém criado:
<details> <summary>Windows</summary>

~~~~
cd JerimumBot/
~~~~
</details>
{{nome_do_seu_venv}}/bin/activate.bat
</details>

### Criando um ambiente virtual
Para mais informações sobre o assunto, basta ler a [documentação oficial](https://docs.python.org/3/library/venv.html).

<details>
</details>

Antes de prosseguir na execução do bot, você precisará criar um ambiente virtual. Existem maneiras diferentes de fazer isso, porém, nesse tutorial, mostraremos apenas uma.
##### Instalando dependências
Instale as dependências de desenvolvimento do python

<details><summary>Linux Debian Based</summary>

Utilizando Python3.6, basta executar:
Instale estes pacotes:

~~~~
python3 -m venv {{nome_do_seu_venv}}
~~~~
~~~~
sudo apt install build-essential python3-dev libssl-dev libffi-dev \
libxml2-dev libxslt1-dev zlib1g-dev
~~~~
</details>
Depois disso, dentro do repositório clonado, basta executar:

Onde `{{nome_do_seu_venv}}` deve ser substituído por um nome de sua escolha.
pip install -r requirements-dev.txt

Agora, será necessário ativar este ambiente:
</details>

~~~~
source {{nome_do_seu_venv}}/bin/activate
~~~~
<details><summary>Mongo</summary>
Siga a [documentação oficial](https://docs.mongodb.com/manual/installation/)
</details>

Para mais informações sobre o assunto, basta ler a [documentação oficial](https://docs.python.org/3/library/venv.html).
#### instalação Docker
<details><summary>Docker</summary>

</details>
Para rodar nosso bot no docker é nessecário ter o `docker-ce` e `docker-compose`. Siga as documentações oficiais para instalar o [docker-ce](https://docs.docker.com/install/) e o [docker-compose](https://docs.docker.com/compose/install/)

### Instalando dependências do projeto
Para construir a imagem da aplicação rode o comando

<details>
make docker.build

Instale estes pacotes:
</details>

~~~~
sudo apt install build-essential python3-dev libssl-dev libffi-dev \
libxml2-dev libxslt1-dev zlib1g-dev
~~~~
</details>

Depois disso, dentro do repositório clonado, basta executar:
### Criando seu próprio bot no Telegram

~~~~
pip install -r requirements.txt
~~~~
<details>

</details>
Você precisará criar o seu próprio bot no Telegram para testar/desenvolver o JerimumBot. É um processo bastante rápido e simples.
Inicialmente, acesse a página do [BotFather](https://telegram.me/BotFather) e clique em `Send Message`.

### Criando seu próprio bot no Telegram
A partir daí, o Telegram tentará abrir o aplicativo dele na sua máquina. Caso você não o tenha instalado, pode abrir o Telegram Web (ou até mesmo a versão mobile) e pesquisar por `BotFather`. Ao localizá-lo, inicie a conversa com um `/start` e siga as instruções para criar um novo bot. Ao fim, copie o token gerado, que será necessário na próxima seção.

<details>
</details>

Você precisará criar o seu próprio bot no Telegram para testar/desenvolver o JerimumBot. É um processo bastante rápido e simples.
Inicialmente, acesse a página do [BotFather](https://telegram.me/BotFather) e clique em `Send Message`.
### Configurando o .env no seu repositório local
<details>

A partir daí, o Telegram tentará abrir o aplicativo dele na sua máquina. Caso você não o tenha instalado, pode abrir o Telegram Web (ou até mesmo a versão mobile) e pesquisar por `BotFather`. Ao localizá-lo, inicie a conversa com um `/start` e siga as instruções para criar um novo bot. Ao fim, copie o token gerado, que será necessário na próxima seção.
Você já está quase lá! Agora é necessário configurar a sua versão local do `.env`. Já existe um arquivo chamado `.env.example` na raiz do diretório. Copie o conteúdo dele para um novo arquivo chamando `.env`.

</details>
Na primeira linha do arquivo você encontrará

### Configurando o .env no seu repositório local
BOT_TOKEN=meu_token_123

<details>
Substitua `meu_token_123` pelo token que foi gerado quando você criou o seu bot, no passo anterior.

Você já está quase lá! Agora é necessário configurar a sua versão local do `.env`. Já existe um arquivo chamado `.env.example` na raiz do diretório. Copie o conteúdo dele para um novo arquivo chamando `.env`.
Nas linhas 9 à 13 você encontrará linha do arquivo você encontrará

Na primeira linha do arquivo você encontrará
DB_USER=mongo
DB_PASSWORD=mongo
DB_HOST=mongo
DB_NAME=mongo
DB_PORT=27017
DB_AUTH=admin

~~~~
export BOT_TOKEN=meu_token_123
~~~~
Substitua os valores de acordo com a configuração de seu mongo nos passo anterior.

Substitua `meu_token_123` pelo token que foi gerado quando você criou o seu bot, no passo anterior.
Por último, você precisará carregar as variáveis de ambiente do arquivo `.env` no seu terminal:
<details><summary>Linux</summary>

Por último, você precisará carregar as variáveis de ambiente do arquivo `.env` no seu terminal:
source .env
</details>
</details>

~~~~
source .env
~~~~
### Executando o JerimumBot

</details>
<details><summary>Python + Mongo</summary>

### Executando o JerimumBot
> Confirme que o seu mongo está rodando corretamente antes de executar o bot!
<details>
Depois de ter seguido todos os passos desse tutorial até aqui, você está com tudo pronto para executar o JerimumBot. Basta executar o comando `make run` e... pronto!

Depois de ter seguido todos os passos desse tutorial até aqui, você está com tudo pronto para executar o JerimumBot. Basta executar o comando `make run` e... pronto!
</details>

</details>
<details><summary>Docker</summary>

### Testando a sua instância
Depois de ter seguido todos os passos desse tutorial até aqui, você está com tudo pronto para executar o JerimumBot. Basta executar o comando `make docker.up` e... pronto!

<details>
</details>

Depois disso, você pode testar as funcionalidades do JerimumBot no chat do próprio bot que você criou anteriormente. Todos os comandos do JerimumBot estarão disponíveis para você, além dos novos que você possa ter desenvolvido.
### Testando a sua instância

</details>
<details>

Depois disso, você pode testar as funcionalidades do JerimumBot no chat do próprio bot que você criou anteriormente. Todos os comandos do JerimumBot estarão disponíveis para você, além dos novos que você possa ter desenvolvido.

</details>

</details>

Expand Down
4 changes: 3 additions & 1 deletion commands/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from commands.sticker import config_handlers as sticker_handler
from commands.coach import config_handlers as coach_handler
from commands.weather import config_handlers as weather_handler
from commands.house import config_handlers as house_handler

handlers = [
base_handler,
Expand All @@ -13,5 +14,6 @@
message_handler,
sticker_handler,
coach_handler,
weather_handler
weather_handler,
house_handler
]
Loading

0 comments on commit 62c7ed3

Please sign in to comment.