LombardiDaniel / Sebotiao

AutoMod [PT-BR] para sua comunidade do discord, com o perfil daquele tiozão do zap - desenvolvido em Python e servido à você com Docker!

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MIT License Build tag


LOGO

Sebotião

O AutoMod do discord que parece aquele tiozão do zap.
Coloque-o em seu servidor »

Tabela de Conteúdos

Sobre o Projeto

Sebotiao é um AutoMod para seu servidor do Discord que lembra o tiozão do zap. Ele possui funcionalidades básicas (por em quanto) e é bem simples de configurar. Para adicioná-lo ao seu servidor, basta clicar aqui.

Mas se você está aqui, imagino que tenha vindo para adicionar funcionalidades à ele. Nesse caso, continue lendo o documento.

Feito com

Feito com discord.py, sqlalchemy. Servido à você por Docker.

Desenvolvendo

Aqui você verá as ferramentas necessárias para o desenvolvimento do Sebotiao. De maneira mega resumida: rode o arquivo ./dev.sh (use -h/--help para ver as opções), ele criará o container com o seu bot em modo de desenvolvimento.

Pré-requisitos

Pessoalmente, recomendo que utilize docker. Nesse caso, utilize o docker-compose.development.yml. Ele criará uma database SQLite local, ao contrário de um container separado de PostgreSQL. Ela ficará salva no volume docker chamado dev_bot_db.

Utilizando Docker
Direto no Python

Organização do Projeto

De forma geral, o arquivo src/main.py roda o bot, utilizando os arquivos da pasta src/cogs/ (leia mais sobre cogs aqui). As interações com a database são feitas pelo arquivo src/utils/dbManager.py, que simplifica o acesso utilizando a biblioteca sqlalchemy. Os modelos para criação das tabelas ficam no arquivo src/models.py.

Variáveis de Ambiente

As variáveis de ambiente que o container bot precisa são, dê uma olhada nos arquivos docker-compose, ou crie a pasta env/ e coloque os arquivos .env na mesma:

Nome da Variável Significado Obrigatória
BOT_TOKEN Token do bot (disponibilizado pelo discord) Sim
DB_HOST IP (ou nome do container) da localidade da database Não (default=db)
DEBUG Se 1, a database será SQLite no próprio diretório (único container docker); se 0, é necessário um segundo container, contendo uma database PostgreSQL. Não (default=0)
YT_API_KEY Chave de API do Youtube (Para ter acesso à função zap) Sim

As variáveis de ambiente que o container da database precisa são:

Nome da Variável Significado Obrigatória
POSTGRES_DB Nome da database para ser criada Sim
POSTGRES_USER Nome do usuário para ser criado (terá privilégios máximos em POSTGRES_DB) Sim
POSTGRES_PASSWORD Senha para o acesso do usuário POSTGRES_USER Sim
POSTGRES_PORT Porta em que a database será hosteada Sim

Chaves de Acesso

As chaves de acesso para database e o token do bot do discord devem ser providenciados (gerados) por você, assim como a chave da API do YouTube.

Crie um bot por aqui e lembre-se de permitir acesso de administrador e habilitar intents.

Para a API do YouTube, dê uma olhada na documentação oficial.

Logs

Para logs, você deve utilizar a classe DockerLogger, declarada no arquivo src/utils/docker.py. Ela salva arquivos .log nos host volumes do docker, ou seja, é criada uma pasta logs/ no diretório do projeto para que sejam salvos lá. E também imprime todos os logs no stdout, para facilitar o acesso por meios como docker logs e portainer.io.

Os arquivos .log são separados de acordo com o prefix especificados na inicialização do objeto. Este prefix também é usado para marcar no stdout. Formato dos logs:

# Nos arquivos .log
f"{lvl_str}; {str(datetime.now())[:-3]}; {msg};\n"

# No stdout
f"{lvl_str}; {str(datetime.now())[:-3]}; {msg};"

Caso esteja debugando, pode-se chamar o método estático stdout_log, da mesma classe. Este aceita *args e **kwargs, para auxiliar.

Comandos

Eu optei por não usar o manuseador default de comandos do discordpy, então montei um parser que pode ser encontrado no arquivo src/extras/messages.py. Mas de forma resumida, basta adicionar seu comando ao arquivo src/extras/commands.yml, mantendo a lógica do arquivo e tudo deve funcionar. (A lógica é:)

nome_do_cog:
    msg: "Descrição do cog"
    commands:
        nome_do_comando:
            aliases: "aliases do comando"
            msg: "Descrição do comando"
            args: "Argumentos do comando"

License

Este projeto está sob a Licença MIT - veja o arquivo LICENSE.md para detalhes.

About

AutoMod [PT-BR] para sua comunidade do discord, com o perfil daquele tiozão do zap - desenvolvido em Python e servido à você com Docker!

License:MIT License


Languages

Language:Python 96.9%Language:Shell 2.1%Language:Dockerfile 1.0%