BotUts
BotUts é uma biblioteca para automação de tarefas, monitoramento, integração com Portainer, Selenoid, e gerenciamento de bots. Ela oferece uma interface CLI e diversas funcionalidades para facilitar a operação de robôs e stacks.
Instalação
Para instalar a biblioteca, basta executar:
pip install botUts
Configuração
Você pode definir as variáveis de ambiente manualmente ou criar um arquivo .env na raiz do projeto com o seguinte formato:
Obrigatórias:
BOT_NAME = MeuBot
BOT_ID = 123
MODE = DEV #DEFAULT DEV (`DEV` ou `PRD`)
LOG_DB = Y #DEFAULT N (Y|N)
DATABASE_URL = #SQLACHEMY URL DB sqlite:/// OR SIMILAR
O arquivo .env será carregado automaticamente
Defina as variáveis de ambiente necessárias para o funcionamento do bot e integrações:
Portainer: (Opcional fixo na maquina de DEV)
PORTAINER_HOST = <http://localhost:9000>
PORTAINER_USER = <USER>
PORTAINER_PASSWORD = <PASWORD>
Selenoid/Moon: (Opcional fixo na maquina de DEV)
MOON_HOST = <http://localhost:444/wd/hub>
Funcionalidades Principais
CLI (Interface de Linha de Comando)
Execute comandos utilitários para setup, atualização, execução de tasks e integração com Portainer:
bot-help— Mostra ajuda e comandos disponíveisgitup <comment>— Atualiza o repositório Gitupreq <atualiza a venv com os novos requirements>— Atualiza os requirements da venvsetupy— Cria venv, atualiza pip e instala requirementsbot-tasks— Lista todas as tasks do botbot-run— Executa a primeira taskbot-run <task>— Executa uma task específicabot-run-all— Executa todas as tasksbot-loop— Inicia o loop do processo (verifica os schedulles) #Auto orquestraçaobot-stack— Cria stack no Portainerbot-deploy— Redeploy da stack no Portainerbot-run-prd— Executa o bot em produção
Portainer
Validação de credenciais, criação e redeploy de stacks, integração com ambiente Portainer.
Selenoid/Moon
Listagem, remoção e gerenciamento de sessões de automação.
Tasks
Definição e execução de tarefas agendadas ou locais, com suporte a CRON.
Marcação e Monitoramento
Marcação de eventos/interações e monitoramento de APIs, com registro de logs e métricas.
Logs Organizados
O sistema de logs do BotUts é altamente organizado e flexível, permitindo:
- Armazenamento de logs em arquivos diários, terminal e banco de dados.
- Formatação avançada das mensagens, incluindo informações de função, arquivo, linha e extras.
- Detecção automática de warnings e erros.
- Integração com monitoramento de tarefas e eventos.
Vantagens:
- Facilita auditoria e rastreamento de execuções.
- Permite análise detalhada de falhas e performance.
- Logs podem ser visualizados no terminal, arquivos ou banco, conforme necessidade.
- Customização de níveis e formatos.
Exemplo de Uso
Variaveis do projeto
from bot_lib import botConfig
print(botConfig.BOT_NAME)
print(botConfig.BOT_ID)
print(botConfig.MODE)
print(botConfig.LOG_DB) #HABILITA OU NAO OS LOGS BANCO DE DADOS EM PRODUCAO
print(botConfig.is_in_prd)
<BOT_NAME>
R001
DEV
False
Criando uma Task
from bot_lib import Task,logger
@Task.new(name="minha_task", local=True,comment="task de teste") #local=True sao tasks que nao sao schedulladas e sao executadas sobre demanda
def main():
logger.info("Executando task personalizada!")
@Task.new(name="minha_cron_task", cron="0 14 * * *") #essa task ira executar automaticamente as 14:00 utilize o comando bot-loop
def main():
logger.info("Executando task personalizada!")
- utilize
bot-taskspara caso deseje listar as tasks - para executar a primeira task definida
bot-run - para executar uma task especifica
bot-run minha-task - para executar as tasks em loop
bot-loop
Retry
Permite repetir uma função automaticamente em caso de falha.
from bot_lib import retry
@retry(attempts=3, delay=2)
def tarefa():
print("Executando tarefa...")
raise Exception("Falha!")
tarefa() # Será executada até 3 vezes
Timeout
Permite limitar o tempo de execução de uma função:
from bot_lib import timeout
import time
@timeout(time=5)
def tarefa_lenta():
time.sleep(10)
print("Finalizou!")
tarefa_lenta() # Será interrompida após 5 segundos
logger_class
O Logger class faz o traking automatico dos seus metodos informando nos logs caso algum erro ocorra.
from bot_lib import logger_class
@logger_class
class Rpa:
def sub_funcao(self):
raise Exception("Erro no processamento")
def start(self):
self.sub_funcao()
Rpa().start()
Marcação (marks)
Permite registrar eventos, interações e jobs para rastreamento e auditoria.
- INTERACAO -> sao pequenos ganhos de tempo
- JOB -> tarefas completas concluidas
from bot_lib import mark_inter, commit_mark_inter, mark_job
# Marca uma interação de 10 segundos (commita diretamente no banco caso em producao)
mark_inter(10,"Descricao da interacao")
# Marca 1 arquivo processado para contabilizar
mark_job("ARQUIVO","Arquivos Processados",qtd=1)
#EXEMPLO COM COMMIT ATRASADO
mark_inter(10,"Relatorio 1 OK",commit=False)
mark_inter(10,"Relatorio 2 OK",commit=False)
# Commita todas as marcações pendentes
commit_mark_inter()
Observações
- Consulte o código dos módulos para detalhes avançados.
- As funcionalidades são acessíveis via CLI ou importando os módulos Python.
- Para integração com Portainer e Selenoid, configure as variáveis de ambiente corretamente.
Licença
Este projeto é distribuído sob a licença MIT.
Metadata
Release files for botUts 1.1.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| botuts-1.1.9.tar.gz | 28.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| botuts-1.1.9-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 62.6 kB
Release files / botuts-1.1.9.tar.gz
| Download URL | botuts-1.1.9.tar.gz |
|---|---|
| Size | 28.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9a1b736211d96d0f390ed336fb8ef250a7f876d4bab2822d8fa962fa90e1b552
|
|
BLAKE2b-256 checksum How to use checksums |
16cf934af2d87ada677a53ede34180d63f11d5024a086861f8dd543d0b3eabb5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 6, 2026.
Transparency logRelease files / botuts-1.1.9-py3-none-any.whl
| Download URL | botuts-1.1.9-py3-none-any.whl |
|---|---|
| Size | 34.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f631567c136aa4c69fd0d1cde2bca99d677770dc977c03f7fbe07b59917700b9
|
|
BLAKE2b-256 checksum How to use checksums |
0650a700540001cc1a29bc6857aae7c865dbe5323c166998a2987f7296afebd0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 6, 2026.
Transparency log