Python15 dicembre 2025 183 visualizzazioni

Come ospitare un bot Discord (Python) su OuiPanel

Come ospitare un bot Discord (Python) su OuiPanel

Tempo stimato : 15 minuti
Difficoltà : Intermedia ⭐⭐
Tipo di server : Python


📋 Introduzione

Questa guida ti spiega come ospitare un bot Discord sviluppato con discord.py (Python) su OuiPanel. Il tuo bot sarà online 24 ore su 24, 7 giorni su 7.

Di cosa hai bisogno

Requisiti Descrizione
🤖 Un bot Discord Creato sul Portale Sviluppatori Discord
🔑 Il token del bot Chiave segreta per connettere il tuo bot
📁 I file del bot Il tuo codice sorgente (bot.py, requirements.txt, ecc.)
🐍 Un server Python Ordinato su OuiHeberg

🤖 Passo 1 : Creare il Bot su Discord

Se hai già il tuo bot e il suo token, passa al passo 2.

Creare l'applicazione

  1. Vai al Portale Sviluppatori Discord
  2. Accedi con il tuo account Discord
  3. Clicca su New Application

Immagine

  1. Dai un nome alla tua applicazione (es: "Il Mio Bot Python")
  2. Accetta i termini di utilizzo
  3. Clicca su Create

Immagine


Recuperare il Token

Il token è la chiave segreta che consente al tuo codice di connettersi al bot.

  1. Nella sezione Bot, trova l'area TOKEN
  2. Clicca su Reset Token
  3. Conferma cliccando su Yes, do it!
  4. Clicca su Copy per copiare il tokenImmagine

⚠️ IMPORTANTE - SICUREZZA :

  • Il token è come una password. Non condividerlo MAI!
  • Non metterlo mai in codice pubblico (GitHub, GitLab, ecc.)
  • Se il tuo token è compromesso, rigeneralo immediatamente
  • Conservalo in un luogo sicuro per il passo successivo

Attivare gli Intents

Gli Intents consentono al tuo bot di accedere a determinate informazioni (messaggi, membri, ecc.).

  1. Ancora nella sezione Bot, scorri fino a Privileged Gateway Intents
  2. Attiva gli intents necessari :
Intent Descrizione Raccomandazione
PRESENCE INTENT Vedere lo stato dei membri Opzionale
SERVER MEMBERS INTENT Accedere alla lista dei membri Opzionale
MESSAGE CONTENT INTENT Leggere il contenuto dei messaggi Richiesto

Immagine

  1. Clicca su Save Changes

⚠️ Importante : Senza MESSAGE CONTENT INTENT, il tuo bot non potrà leggere il contenuto dei messaggi degli utenti.


Invitare il Bot sul tuo Server Discord

  1. Nel menu a sinistra, clicca su OAuth2
  2. Clicca su URL GeneratorImmagine
  1. Nella sezione SCOPES, seleziona :
    • bot

  1. Nella sezione BOT PERMISSIONS, seleziona i permessi necessari :
Permesso Descrizione
Administrator Tutti i permessi (semplice ma ampio)
O permessi specifici :
Send Messages Inviare messaggi
Read Message History Leggere la cronologia
Embed Links Inviare embed
Attach Files Inviare file
Use Slash Commands Utilizzare i comandi slash

Immagine

  1. In fondo alla pagina, copia l'URL generato

Immagine

  1. Apri questo URL nel tuo browser
  2. Seleziona il server dove invitare il bot
  3. Clicca su Autorizza
  4. Completa il captcha se richiesto

Immagine

✅ Il tuo bot appare ora nella lista dei membri del tuo server (offline per ora).


📁 Passo 2 : Preparare i File del Bot

Struttura dei file

Il tuo bot deve avere questa struttura :

📁 MonBotPython/
├── 📄 bot.py             ← File principale (o main.py, index.py...)
├── 📄 requirements.txt   ← Dipendenze Python
├── 📄 .env               ← Token del bot (creato sul server)
└── 📁 cogs/              ← (Opzionale) Cartella dei moduli

File requirements.txt

Crea un file requirements.txt con le dipendenze discord.py e python-dotenv :

audioop-lts==0.2.1
discord.py==2.3.2
python-dotenv==1.0.0

💡 Questi due pacchetti sono essenziali :

  • discord.py : La libreria per interagire con Discord
  • python-dotenv : Per caricare il token dal file .env

File principale (bot.py)

Crea il tuo file principale con python-dotenv per caricare il token :

import os
import discord
from discord.ext import commands
from dotenv import load_dotenv

# Carica le variabili d'ambiente da .env
load_dotenv()

# Configurazione degli intents
intents = discord.Intents.default()
intents.message_content = True

# Creazione del bot con un prefisso
bot = commands.Bot(command_prefix='!', intents=intents)

# Evento : Bot pronto
@bot.event
async def on_ready():
    print(f'✅ Bot connesso come {bot.user.name}')
    print(f'📊 Connesso a {len(bot.guilds)} server(s)')

# Comando : !ping
@bot.command()
async def ping(ctx):
    """Risponde Pong con la latenza"""
    latenza = round(bot.latency * 1000)
    await ctx.send(f'🏓 Pong ! Latenza : {latenza}ms')

# Comando : !hello
@bot.command()
async def hello(ctx):
    """Dice ciao"""
    await ctx.send(f'👋 Ciao {ctx.author.name} !')

# Gestione degli errori
@bot.event
async def on_command_error(ctx, error):
    if isinstance(error, commands.CommandNotFound):
        await ctx.send('❌ Comando sconosciuto.')
    else:
        print(f'Errore : {error}')

# Connessione con il token da .env
bot.run(os.getenv('DISCORD_TOKEN'))

⚠️ Importante : load_dotenv() deve essere chiamato prima di utilizzare os.getenv().


📤 Passo 3 : Caricare i File su OuiPanel

Via il Gestore di File

  1. Accedi a OuiPanel
  2. Seleziona il tuo server Python
  3. Nel menu laterale, clicca su Gestore di file

Immagine

  1. Elimina i file di default (se ce ne sono)
  2. Clicca su Invia (Upload)
  3. Carica i tuoi file :
    • bot.py (o main.py, index.py...)
    • requirements.txt
    • I tuoi folder (cogs/...) se necessario

Immagine

⚠️ Non caricare : Il file .env sarà creato direttamente sul server nel passo successivo (più sicuro).


Via SFTP (Consigliato per più file)

  1. Accedi in SFTP con FileZilla
  2. Trascina tutto il contenuto della tua cartella bot
  3. Verifica che tutti i file siano stati caricati correttamente

📖 Consulta la guida "Accesso SFTP con FileZilla" per le istruzioni dettagliate.


🔑 Passo 4 : Creare il File .env (Token)

Non mettere mai il tuo token direttamente nel codice! Crea un file .env sul server.

Creare il file .env

  1. Nel Gestore di file, clicca su Nuovo file
  2. Nominalo .env (con il punto davanti)
  3. Aggiungi il seguente contenuto :
# Token del bot Discord
DISCORD_TOKEN=il_tuo_token_qui

Immagine

  1. Sostituisci il_tuo_token_qui con il token copiato al Passo 1
  2. Clicca su Crea o Salva

Esempio con un vero token (formato) :

DISCORD_TOKEN=MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.ABcdEF.abcdefghijklmnopqrstuvwxyz123456

Esempio con più variabili :

# Token del bot Discord
DISCORD_TOKEN=MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.ABcdEF.abcdefghijklmnopqrstuvwxyz123456

# Prefisso dei comandi
PREFIX=!

# ID del proprietario (opzionale)
OWNER_ID=123456789012345678

⚠️ Importante :

  • Nessuno spazio attorno al =
  • Nessuna virgolette attorno ai valori
  • Non condividere mai questo file

Struttura finale sul server

📁 Radice del server/
├── 📄 .env               ← Contiene DISCORD_TOKEN
├── 📄 bot.py             ← Il tuo codice
├── 📄 requirements.txt   ← Dipendenze
└── ...

⚙️ Passo 5 : Configurare il File di Avvio

OuiPanel deve sapere quale file Python eseguire all'avvio.

Accedere alle impostazioni

  1. Nel menu laterale, clicca su Configurazione
  2. Clicca su Impostazioni del server

Immagine



Configurare il file da eseguire

Trova il campo File da eseguire (o Main File / Startup File) :

Immagine

Il tuo file principale Valore da impostare
bot.py bot.py
main.py main.py
index.py index.py
app.py app.py
src/bot.py src/bot.py

⚠️ Importante : Il nome deve corrispondere esattamente al tuo file (sensibile al maiuscolo/minuscolo).


🚀 Passo 6 : Avviare il Bot

Avviare il server

  1. Nel menu laterale, clicca su Console
  2. Clicca su Avvia

Installazione automatica delle dipendenze

Al primo avvio, il server installa automaticamente i pacchetti da requirements.txt :

Installing requirements from requirements.txt...
Collecting discord.py==2.3.2
Collecting python-dotenv==1.0.0
Successfully installed discord.py-2.3.2 python-dotenv-1.0.0

Running bot.py...
✅ Bot connesso come MonBot
📊 Connesso a 1 server(s)

Immagine


✅ Passo 7 : Verificare che il Bot Funzioni

Nella Console OuiPanel

Dovresti vedere :

✅ Bot connesso come MonBot
📊 Connesso a 1 server(s)

Su Discord

  1. Apri Discord
  2. Vai sul server dove hai invitato il bot
  3. Il tuo bot dovrebbe apparire online (punto verde)
  4. Prova un comando : !ping
  5. Il bot risponde : 🏓 Pong ! Latenza : XXms

Immagine


🔧 Risoluzione dei Problemi

Il bot non si avvia

❌ Errore ✅ Soluzione
ModuleNotFoundError: No module named 'discord' Controlla requirements.txt e riavvia
ModuleNotFoundError: No module named 'dotenv' Aggiungi python-dotenv in requirements.txt
FileNotFoundError: bot.py File di avvio configurato in modo errato
SyntaxError Errore nel tuo codice Python

Errore di Token

❌ Errore ✅ Soluzione
LoginFailure: Improper token has been passed Controlla il token in .env
HTTPException: 401 Unauthorized Token non valido, rigeneralo
PrivilegedIntentsRequired Attiva gli intents sul portale Discord

Il bot non legge i messaggi

❌ Causa ✅ Soluzione
MESSAGE CONTENT INTENT disattivato Attivalo sul portale Discord
Intents configurati in modo errato nel codice Aggiungi intents.message_content = True

Controlla il tuo codice :

intents = discord.Intents.default()
intents.message_content = True  # Questa riga è obbligatoria!

Il file .env non viene letto

❌ Causa ✅ Soluzione
python-dotenv non installato Controlla requirements.txt
load_dotenv() non chiamato Aggiungi load_dotenv() prima di os.getenv()
File mal nominato Il file deve chiamarsi esattamente .env
Formato errato Nessuno spazio attorno al =

pip install fallisce

❌ Errore ✅ Soluzione
requirements.txt not found Controlla che il file sia nella radice
Could not find a version Controlla i nomi e le versioni dei pacchetti

🔒 Sicurezza del file .env

✅ Da fare ❌ Da non fare
Tenere il .env solo sul server Condividere il .env
Creare il .env direttamente su OuiPanel Mettere il token nel codice
Aggiungere .env a .gitignore Commit il .env su GitHub

File .gitignore consigliato :

# Variabili d'ambiente
.env
.env.local

# Python
__pycache__/
*.py[cod]
venv/

💡 Buone Pratiche

Sicurezza

  • Non condividere mai il tuo token
  • ✅ Crea il .env direttamente sul server
  • ✅ Rigenera il token se compromesso

Performance

  • ✅ Attiva solo gli intents necessari
  • ✅ Usa commands.Bot invece di discord.Client per i comandi
  • ✅ Usa i Cogs per organizzare il tuo codice

Codice

  • ✅ Gestisci gli errori con try/except
  • ✅ Aggiungi log con print() o il modulo logging
  • ✅ Usa i Cogs per i bot grandi

📂 Struttura Avanzata con Cogs (Consigliata)

Per un bot più organizzato :

📁 MonBotPython/
├── 📄 bot.py               ← Punto d'ingresso
├── 📄 requirements.txt
├── 📄 .env                 ← Creato sul server
├── 📁 cogs/
│   ├── 📄 moderation.py    ← Comandi di moderazione
│   ├── 📄 fun.py           ← Comandi divertenti
│   └── 📄 utility.py       ← Comandi utilitari
└── 📄 config.py            ← Configurazione non sensibile

Esempio di bot.py con Cogs :

import os
import discord
from discord.ext import commands
from dotenv import load_dotenv

load_dotenv()

intents = discord.Intents.default()
intents.message_content = True

bot = commands.Bot(command_prefix='!', intents=intents)

# Carica i cogs all'avvio
@bot.event
async def on_ready():
    print(f'✅ Bot connesso come {bot.user.name}')
    
    # Carica i cogs
    for filename in os.listdir('./cogs'):
        if filename.endswith('.py'):
            await bot.load_extension(f'cogs.{filename[:-3]}')
            print(f'📦 Cog caricato : {filename}')

bot.run(os.getenv('DISCORD_TOKEN'))

Esempio di cog (cogs/fun.py) :

import discord
from discord.ext import commands

class Fun(commands.Cog):
    def __init__(self, bot):
        self.bot = bot
    
    @commands.command()
    async def ping(self, ctx):
        """Risponde Pong !"""
        latenza = round(self.bot.latency * 1000)
        await ctx.send(f'🏓 Pong ! Latenza : {latenza}ms')
    
    @commands.command()
    async def hello(self, ctx):
        """Dice ciao"""
        await ctx.send(f'👋 Ciao {ctx.author.name} !')

async def setup(bot):
    await bot.add_cog(Fun(bot))

📝 Riepilogo

1. Creare il bot su Discord Developer Portal
2. Recuperare il Token (Reset Token → Copia)
3. Attivare MESSAGE CONTENT INTENT
4. Invitare il bot (OAuth2 → URL Generator → bot + applications.commands)
5. Preparare i file (bot.py + requirements.txt con python-dotenv)
6. Caricare i file su OuiPanel (senza il .env)
7. Creare il file .env sul server con il token
8. Configurare il file di avvio (bot.py, main.py...)
9. Avviare il server
10. Verificare che il bot sia online su Discord → !ping

Hai bisogno di un hosting Python?

Distribuisci le tue applicazioni Python con il nostro hosting ottimizzato e supporto dedicato.

Vedi le offerte