# Desplegar un bot de Python

> Guía paso a paso para desplegar un bot de Discord en Python (discord.py o py-cord) en Daki Hosting.

Esta guía te acompaña en el despliegue de un bot de Discord en Python en Daki Hosting: desde la creación de tu servidor hasta leer el token de tu bot de forma segura y ponerlo en línea.

## Lo que aprenderás

- Cómo crear un servidor de Python para tu bot
- Cómo subir tu código
- Cómo configurar el comando de instalación, el comando de inicio y la versión de Python
- Cómo guardar el token de tu bot de forma segura con un archivo `.env`
- Cómo iniciar tu bot y comprobar que funciona

---

## Requisitos previos

- Una cuenta de Daki (Free Tier o de pago): consulta [Crear una cuenta](https://daki.cc/es/wiki/guides/account-create)
- Un bot de Discord con un **bot token**, creado en el [Discord Developer Portal](https://discord.com/developers/applications)
- El código fuente de tu bot, con un `requirements.txt` que liste todas las dependencias (por ejemplo, `discord.py` o `py-cord`, y `python-dotenv`)

> **Info:** Los bots de Discord se conectan **de forma saliente** a los servidores de Discord y no necesitan un puerto de entrada. Por eso funcionan tanto en el Free Tier como en los planes de pago. Si tu bot también ejecuta un servidor HTTP (por ejemplo, para webhooks o un panel web), necesitarás un plan de pago, ya que los puertos públicos solo están disponibles en los planes de pago. Consulta [Red y asignaciones](https://daki.cc/es/wiki/guides/network-allocations).

---

## Despliegue

**Paso 1: Crea un servidor de Python**

1. Inicia sesión en el Free Tier Dashboard en [free.daki.cc](https://free.daki.cc) o en el Billing Panel en [billing.daki.cc](https://billing.daki.cc).
2. Crea un servidor nuevo y selecciona el egg de **Python**.
3. Ponle un nombre a tu servidor (por ejemplo, `MyPythonBot`).

Consulta [Crea tu primer servidor](https://daki.cc/es/wiki/guides/create-server) para ver la guía completa.

**Paso 2: Accede al Portal**

Inicia sesión en el Portal mediante SSO o directamente en [portal.daki.cc](https://portal.daki.cc). Consulta [Resumen del Portal](https://daki.cc/es/wiki/guides/portal).

**Paso 3: Sube el código de tu bot**

**Opción A: subirlo como ZIP (lo más sencillo):**
1. Comprime la carpeta de tu proyecto en un archivo `.zip`.
2. En el Portal, ve a la pestaña **Files** y haz clic en **Upload**.
3. Haz clic derecho en el `.zip` y pulsa **Extract**.

**Opción B: usar SFTP (sin límite de tamaño):**
Usa tus credenciales de SFTP desde la pestaña **Settings** para subir la carpeta directamente. Consulta [Gestor de archivos](https://daki.cc/es/wiki/guides/file-manager).

> **Info:** Incluye un `requirements.txt` en la raíz de tu proyecto. El comando de instalación lo usa para instalar tus dependencias.

**Paso 4: Configura la pestaña Startup**

Abre la pestaña **Startup** y configura los tres campos:

**1. Docker Image** — Selecciona la versión de Python que necesite tu bot (por ejemplo, **Python 3.13**). Python 3.13 es una opción segura por defecto si no lo tienes claro; las versiones más nuevas funcionan si todas tus librerías las soportan. Evita las versiones marcadas como **EOL**, porque ya no reciben actualizaciones de seguridad.

**2. Install Command** — Indícalo para instalar tus dependencias automáticamente:
```
pip install -r requirements.txt
```
**3. Startup Command** — Indica el comando que ejecuta tu bot:
- `python main.py` — si tu archivo de entrada es `main.py`
- `python bot.py` — si tu archivo de entrada es `bot.py`
- `python -m mypackage` — si tu proyecto está estructurado como paquete

Puedes ajustar estos comandos para que coincidan con la estructura y los requisitos de tu proyecto.

Consulta [Configuración de inicio](https://daki.cc/es/wiki/guides/startup-settings) para ver la explicación completa.

**Paso 5: Añade el token de tu bot mediante un archivo .env**

Guarda el token de tu bot de Discord en un archivo `.env` del servidor para que nunca aparezca en tu código fuente.

1. En la pestaña **Files**, haz clic en **New File** y ponle el nombre `.env`.
2. Añade tu token:
   ```
   BOT_TOKEN=your_discord_bot_token_here
   ```
3. Haz clic en **Save**.

Asegúrate de que `python-dotenv` está en tu `requirements.txt` y, después, carga el archivo en tu código:

```python

from dotenv import load_dotenv

import os

import discord



load_dotenv()

TOKEN = os.environ.get("BOT_TOKEN")



intents = discord.Intents.default()

client = discord.Client(intents=intents)



@client.event

async def on_ready():

    print(f"Logged in as {client.user}")



client.run(TOKEN)

```
Consulta [Variables de entorno](https://daki.cc/es/wiki/guides/environment-variables) para más detalles sobre el uso de archivos `.env`.

**Paso 6: Inicia tu bot**

Haz clic en **Start** en la pestaña **Console**. Un lanzamiento correcto mostrará:

```

Logged in as MyBot#1234

```
Si ves errores, consulta la guía de [Solución de problemas](https://daki.cc/es/wiki/guides/troubleshooting).

---

## Problemas comunes

**ModuleNotFoundError: No module named 'discord'**

Tus dependencias no se han instalado. Comprueba que `discord.py` o `py-cord` aparece en `requirements.txt` y que el **Install Command** está definido como `pip install -r requirements.txt` en la pestaña Startup. Reinicia el servidor para lanzar la instalación.

**ModuleNotFoundError: No module named 'dotenv'**

Añade `python-dotenv` a tu `requirements.txt` y reinicia el servidor.

**discord.errors.LoginFailure: Improper token has been passed**

El token del archivo `.env` es incorrecto o falta. Abre el archivo `.env` en la pestaña Files y revisa el valor con atención. Elimina los espacios o comillas adicionales.

**Error PrivilegedIntentsRequired**

Tu bot solicita intents que no están activados en el Discord Developer Portal. Activa los intents privilegiados necesarios (por ejemplo, Message Content Intent) en los ajustes de la aplicación de tu bot, y asegúrate de que tu código solicita los mismos intents.

**El servidor se cae inmediatamente al iniciarse**

Lee la salida de la Console para ver el error. Causas habituales: un comando de inicio incorrecto (error tipográfico o ruta equivocada), falta `requirements.txt` o falta algún paquete. Consulta [Solución de problemas](https://daki.cc/es/wiki/guides/troubleshooting).

---

## Próximos pasos

- [Variables de entorno](https://daki.cc/es/wiki/guides/environment-variables): guía completa sobre archivos `.env` y lectura de variables en el código.
- [Renovar tu servidor gratuito](https://daki.cc/es/wiki/guides/save-free-server-from-purge): mira anuncios con regularidad para mantener en marcha tu servidor del Free Tier.
- [Gestor de archivos](https://daki.cc/es/wiki/guides/file-manager): actualiza tu código después de hacer cambios.

---
Source: https://daki.cc/es/wiki/guides/deploy-python
