Add comprehensive project documentation including README.md with installation instructions, configuration reference, and usage guide. Add RULES.md defining development standards, code organization requirements, and environment variable conventions for contributors.
AutoTigrinho 🤖
Sistema de cliques automáticos baseado em reconhecimento de imagem. O bot detecta visualmente um botão na tela e clica nele em intervalos configuráveis, respeitando horários e períodos definidos pelo usuário.
Requisitos
- Python 3.10+
- Ambiente gráfico (DISPLAY) — em servidores headless o script usa Xvfb automaticamente
Instalação
./iniciar.sh
O iniciar.sh executa automaticamente:
- Verifica/cria o ambiente virtual (
venv/) - Instala/atualiza as dependências do
requirements.txt - Verifica a existência do
.enve da imagem do botão - Configura Xvfb se não houver ambiente gráfico
- Inicia o programa
Configuração
Edite o arquivo .env para ajustar o comportamento:
Intervalos de clique
| Variável | Descrição | Padrão |
|---|---|---|
INTERVALO_MINIMO_CLIQUE |
Tempo mínimo entre cliques durante uma sessão (s) | 10 |
INTERVALO_MAXIMO_CLIQUE |
Tempo máximo entre cliques durante uma sessão (s) | 30 |
INTERVALO_PRIMEIRO_CLIQUE |
Espera antes do primeiro clique de uma sessão (s) | 10 |
INTERVALO_ENTRE_SESSOES |
Tempo de espera entre o fim de uma sessão e o início da próxima (s) | 60 |
INTERVALO_CLIQUE_GLOBAL |
Intervalo para clique de keep-alive em qualquer estado (s) | 900 (15 min) |
Controle de sessões
| Variável | Descrição | Padrão |
|---|---|---|
MAXIMO_CLIQUES_POR_SESSAO |
Número de cliques por sessão antes da pausa | 20 |
MAXIMO_FALHAS |
Limite de falhas de detecção antes de encerrar | 5 |
CONFIANCA |
Confiança mínima da correspondência de imagem (0.0 a 1.0) | 0.8 |
Períodos de funcionamento
Até 10 períodos podem ser configurados. Fora desses intervalos o sistema permanece ativo mas não executa sessões, apenas cliques de keep-alive.
PERIODO_1_INICIO=09:00
PERIODO_1_FIM=12:00
PERIODO_2_INICIO=14:00
PERIODO_2_FIM=18:00
PERIODO_3_INICIO= ← deixe vazio para desativar
PERIODO_3_FIM=
Aparência
| Variável | Descrição | Padrão |
|---|---|---|
LARGURA_TERMINAL |
Largura da interface em caracteres | 60 |
Como funciona
Sessões
Uma sessão é um bloco de até MAXIMO_CLIQUES_POR_SESSAO cliques consecutivos. Quando esse limite é atingido:
- A sessão é finalizada e contabilizada
- O sistema entra em modo de espera por
INTERVALO_ENTRE_SESSOESsegundos - A cada
INTERVALO_CLIQUE_GLOBALsegundos durante essa espera, um clique de keep-alive é executado - Ao terminar a espera, uma nova sessão é iniciada automaticamente
Clique de keep-alive (global)
Independentemente do estado — dentro ou fora dos períodos, durante espera entre sessões — o sistema executa um clique de manutenção a cada INTERVALO_CLIQUE_GLOBAL segundos. Isso evita timeout de sessão em aplicações que exigem atividade contínua.
Detecção de botão
O sistema usa OpenCV com template matching (TM_CCOEFF_NORMED) para encontrar a posição do botão na tela. O template deve ser fornecido como botaoparaclicar.png na raiz do projeto. Quando o botão não é encontrado, o sistema re-tenta automaticamente a cada INTERVALO_MINIMO_CLIQUE segundos até conseguir detectar e clicar.
Controle de horário
- Dentro de um período configurado → sessões são executadas normalmente
- Fora de todos os períodos → aguarda
INTERVALO_CLIQUE_GLOBALsegundos, executa um clique de keep-alive e volta a verificar
Modo headless (sem DISPLAY)
Em servidores ou máquinas sem ambiente gráfico, o iniciar.sh tenta instalar e usar o Xvfb (X virtual framebuffer) automaticamente, sem necessidade de sudo.
Estrutura de arquivos
AutoTigrinho/app/
├── main.py # Código principal
├── iniciar.sh # Script de inicialização e setup
├── .env # Configurações
├── botaoparaclicar.png # Imagem do botão (template)
├── requirements.txt # Dependências Python
├── log.txt # Log de execução
└── venv/ # Ambiente virtual Python
Log de execução
Todas as ações são registradas em log.txt com timestamp:
[2026-09-09 15:00:00] Sessão 1 iniciada
[2026-09-09 15:00:10] Clicando em (450, 320)...
[2026-09-09 15:01:15] Aguardando 15s até o próximo ciclo...
[2026-09-09 15:05:00] Sessão 1 finalizada: 20 cliques
[2026-09-09 15:05:00] Aguardando 900s até a Sessão 2...
[2026-09-09 15:20:00] [Espera] Clicando em (450, 320)...
Interromper
Pressione CTRL+C para parar o programa a qualquer momento. O total de cliques realizados é exibido no encerramento.
Dicas
- A imagem
botaoparaclicar.pngdeve ser um recorte apenas do botão, sem fundo ou com fundo transparente (PNG com canal alpha é suportado) - Ajuste
CONFIANCAconforme necessário: valores mais baixos detectam com menos precisão, valores mais altos exigem correspondência exata - Use
INTERVALO_MINIMO_CLIQUEeINTERVALO_MAXIMO_CLIQUEpara simular comportamento humano (intervalos aleatórios) - O
pyautogui.FAILSAFEestá ativado: mova o mouse para um dos cantos da tela para abortar imediatamente