Plataforma modular para gerenciamento de múltiplos bots Discord
DisBot Canella é uma plataforma modular e escalável para gerenciar múltiplos bots Discord, onde cada bot opera de forma independente com suas próprias configurações, credenciais e arquivos isolados.
| Recurso | Descrição |
|---|---|
| Isolamento Completo | Cada bot possui configurações, credenciais e logs independentes |
| Integração Google Sheets | Conexão nativa com planilhas Google para gerenciamento de dados |
| Logs Estruturados | Sistema de logging robusto com arquivos separados por bot |
| Backups Automáticos | Sistema de backup integrado para dados críticos |
| Fácil Escalabilidade | Adicione novos bots com um único comando |
DisBot_Canella/
├── Bot_Gerson/ # Bot principal
│ ├── config/
│ │ ├── .env # Configurações sensíveis
│ │ ├── .env.example # Template de configuração
│ │ └── credentials.json # Credenciais Google
│ ├── data/
│ │ └── estado_empresas.json
│ ├── logs/
│ │ └── bot_logs.log
│ ├── backups/
│ └── main.py
│
├── Bot_[NovoBot]/ # Estrutura para novos bots
│ ├── config/
│ ├── data/
│ ├── logs/
│ ├── backups/
│ └── main.py
│
├── create_bot.py # Script de criação de bots
├── .gitignore
└── README.md
- Python 3.8 ou superior
- Conta Discord Developer
- Credenciais Google Cloud (para integração com Sheets)
pip install discord.py python-dotenv gspread google-authgit clone https://github.com/seu-usuario/DisBot_Canella.git
cd DisBot_Canellacp Bot_Gerson/config/.env.example Bot_Gerson/config/.envEdite o arquivo .env com suas credenciais:
# Discord Bot Token
DISCORD_TOKEN=seu_token_aqui
# Discord Channel ID
DISCORD_CHANNEL_ID=id_do_canal
# Google Sheets
GOOGLE_SHEET_ID=id_da_planilha
# Google Credentials File
GOOGLE_CREDENTIALS_FILE=credentials.json
# Discord General Channel ID
DISCORD_CHANNEL_GENERAL=id_do_canal_geralpython Bot_Gerson/main.pypython create_bot.py Bot_NomeDoBotO script cria automaticamente:
- Estrutura completa de diretórios
- Arquivos de configuração (
.enve.env.example) - Template
main.pyconfigurado - README específico do bot
Clique para expandir
mkdir -p Bot_NomeDoBot/config
mkdir -p Bot_NomeDoBot/data
mkdir -p Bot_NomeDoBot/logs
mkdir -p Bot_NomeDoBot/backupscp Bot_Gerson/config/.env.example Bot_NomeDoBot/config/.envimport discord
import os
from pathlib import Path
from dotenv import load_dotenv
import logging
# === CONFIGURAÇÃO DE CAMINHOS ===
BOT_DIR = Path(__file__).parent.resolve()
CONFIG_DIR = BOT_DIR / "config"
DATA_DIR = BOT_DIR / "data"
LOGS_DIR = BOT_DIR / "logs"
BACKUPS_DIR = BOT_DIR / "backups"
# Cria diretórios se não existirem
for directory in [CONFIG_DIR, DATA_DIR, LOGS_DIR, BACKUPS_DIR]:
directory.mkdir(parents=True, exist_ok=True)
# Carrega variáveis de ambiente
load_dotenv(dotenv_path=CONFIG_DIR / ".env")
# === CONFIGURAÇÃO DE LOGGING ===
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler(LOGS_DIR / 'bot_logs.log', encoding='utf-8'),
logging.StreamHandler()
]
)
logger = logging.getLogger(__name__)
# === CONFIGURAÇÕES ===
DISCORD_TOKEN = os.getenv('DISCORD_TOKEN')
# === SEU CÓDIGO AQUI ===Execute cada bot em um terminal separado:
Terminal 1:
python Bot_Gerson/main.pyTerminal 2:
python Bot_Vendas/main.pyOs seguintes arquivos são automaticamente ignorados:
| Padrão | Descrição |
|---|---|
Bot_*/config/.env |
Tokens e credenciais |
Bot_*/config/*.json |
Credenciais Google |
Bot_*/data/ |
Dados persistentes |
Bot_*/logs/ |
Arquivos de log |
Bot_*/backups/ |
Backups automáticos |
Importante: Nunca commite arquivos contendo tokens, senhas ou credenciais.
┌─────────────────────────────────────────────────────────┐
│ DisBot Canella │
├─────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Bot_Gerson │ │ Bot_Vendas │ │ Bot_[...] │ │
│ │ ───────── │ │ ───────── │ │ ───────── │ │
│ │ config/ │ │ config/ │ │ config/ │ │
│ │ data/ │ │ data/ │ │ data/ │ │
│ │ logs/ │ │ logs/ │ │ logs/ │ │
│ │ backups/ │ │ backups/ │ │ backups/ │ │
│ │ main.py │ │ main.py │ │ main.py │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │ │
│ └────────────────┼────────────────┘ │
│ │ │
│ ┌──────▼──────┐ │
│ │ Discord │ │
│ │ API │ │
│ └─────────────┘ │
└─────────────────────────────────────────────────────────┘
- Isolamento: Cada bot opera independentemente, sem conflitos
- Segurança: Credenciais isoladas e protegidas pelo
.gitignore - Escalabilidade: Adicione quantos bots precisar
- Organização: Estrutura padronizada e intuitiva
- Manutenção: Fácil debugging com logs separados
Contribuições são bem-vindas! Sinta-se à vontade para:
- Fazer um fork do projeto
- Criar uma branch para sua feature (
git checkout -b feature/NovaFeature) - Commit suas mudanças (
git commit -m 'Adiciona NovaFeature') - Push para a branch (
git push origin feature/NovaFeature) - Abrir um Pull Request
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
|
Hugo L. Almeida Desenvolvedor |
Feito com 💜 usando Python e Discord.py