Encontranos en redes
Pythondiscord.pyDeploy5 min de lectura
Deploy de bot Discord con Python
Configurar y ejecutar un bot Python (discord.py) con entorno virtual y systemd.
Requisitos
- VPS con Ubuntu/Debian
- Python 3.10+ instalado
- Tu bot desarrollado con discord.py o similar
- Token del bot desde Discord Developer Portal
Paso 1: Instalar Python y dependencias del sistema
bash
sudo apt update
sudo apt install -y python3 python3-pip python3-venv git
python3 --versionPaso 2: Crear usuario dedicado para el bot
bash
sudo useradd -m -s /bin/bash botuser
sudo su - botuserPaso 3: Subir el código
bash
mkdir -p ~/bots && cd ~/bots
git clone https://github.com/tu-usuario/mi-bot-python.git
cd mi-bot-pythonPaso 4: Crear entorno virtual
Siempre usá un virtualenv para aislar dependencias:
bash
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txtPaso 5: Configurar variables de entorno
Creá un archivo .env:
bash
DISCORD_TOKEN=tu_token_aqui
BOT_PREFIX=!
DATABASE_URL=sqlite:///bot.dbEn tu código, cargá las variables con python-dotenv:
python
import os
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')Paso 6: Verificar que el bot funciona
bash
source venv/bin/activate
python3 bot.pySi el bot se conecta correctamente, detenelo con Ctrl+C y continuá con el servicio.
Paso 7: Crear servicio systemd
Salí del usuario botuser y creá el servicio como root:
bash
sudo nano /etc/systemd/system/discord-bot-python.serviceini
[Unit]
Description=Discord Bot Python
After=network.target
[Service]
Type=simple
User=botuser
WorkingDirectory=/home/botuser/bots/mi-bot-python
ExecStart=/home/botuser/bots/mi-bot-python/venv/bin/python3 bot.py
Restart=always
RestartSec=10
EnvironmentFile=/home/botuser/bots/mi-bot-python/.env
# Seguridad adicional
NoNewPrivileges=true
PrivateTmp=true
[Install]
WantedBy=multi-user.targetPaso 8: Activar y arrancar el servicio
bash
sudo systemctl daemon-reload
sudo systemctl enable discord-bot-python
sudo systemctl start discord-bot-pythonPaso 9: Verificar estado y logs
bash
# Estado del servicio
sudo systemctl status discord-bot-python
# Logs en tiempo real
journalctl -u discord-bot-python -f
# Últimas 50 líneas de log
journalctl -u discord-bot-python -n 50Paso 10: Script de actualización
Creá /home/botuser/bots/update-bot.sh:
bash
#!/bin/bash
cd /home/botuser/bots/mi-bot-python
git pull origin main
source venv/bin/activate
pip install -r requirements.txt
sudo systemctl restart discord-bot-python
echo "Bot actualizado: $(date)"Estructura recomendada del proyecto
terminal
mi-bot-python/
├── bot.py # Archivo principal
├── cogs/ # Módulos/comandos
│ ├── moderation.py
│ ├── fun.py
│ └── admin.py
├── utils/ # Utilidades
├── .env # Variables (no commitear)
├── .gitignore
├── requirements.txt
└── README.mdRecomendaciones
- Usá
discord.py2.x con slash commands para bots modernos - Implementá logging con el módulo
loggingde Python para debugging - Configurá
Restart=alwaysen systemd para que el bot se recupere de crashes - Actualizá las dependencias regularmente por seguridad
¿Te resultó útil esta guía?