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
- Vai al Portale Sviluppatori Discord
- Accedi con il tuo account Discord
- Clicca su New Application

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

Recuperare il Token
Il token è la chiave segreta che consente al tuo codice di connettersi al bot.
- Nella sezione Bot, trova l'area TOKEN
- Clicca su Reset Token
- Conferma cliccando su Yes, do it!
- Clicca su Copy per copiare il token

⚠️ 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.).
- Ancora nella sezione Bot, scorri fino a Privileged Gateway Intents
- 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 |

- 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
- Nel menu a sinistra, clicca su OAuth2
- Clicca su URL Generator

- Nella sezione SCOPES, seleziona :
- ✅
bot
- ✅
- 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 |

- In fondo alla pagina, copia l'URL generato

- Apri questo URL nel tuo browser
- Seleziona il server dove invitare il bot
- Clicca su Autorizza
- Completa il captcha se richiesto

✅ 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 Discordpython-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 utilizzareos.getenv().
📤 Passo 3 : Caricare i File su OuiPanel
Via il Gestore di File
- Accedi a OuiPanel
- Seleziona il tuo server Python
- Nel menu laterale, clicca su Gestore di file

- Elimina i file di default (se ce ne sono)
- Clicca su Invia (Upload)
- Carica i tuoi file :
bot.py(omain.py,index.py...)requirements.txt- I tuoi folder (
cogs/...) se necessario

⚠️ Non caricare : Il file
.envsarà creato direttamente sul server nel passo successivo (più sicuro).
Via SFTP (Consigliato per più file)
- Accedi in SFTP con FileZilla
- Trascina tutto il contenuto della tua cartella bot
- 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
- Nel Gestore di file, clicca su Nuovo file
- Nominalo
.env(con il punto davanti) - Aggiungi il seguente contenuto :
# Token del bot Discord
DISCORD_TOKEN=il_tuo_token_qui

- Sostituisci
il_tuo_token_quicon il token copiato al Passo 1 - 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
- Nel menu laterale, clicca su Configurazione
- Clicca su Impostazioni del server

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

| 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
- Nel menu laterale, clicca su Console
- 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)

✅ Passo 7 : Verificare che il Bot Funzioni
Nella Console OuiPanel
Dovresti vedere :
✅ Bot connesso come MonBot
📊 Connesso a 1 server(s)
Su Discord
- Apri Discord
- Vai sul server dove hai invitato il bot
- Il tuo bot dovrebbe apparire online (punto verde)
- Prova un comando :
!ping - Il bot risponde : 🏓 Pong ! Latenza : XXms

🔧 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
.envdirettamente sul server - ✅ Rigenera il token se compromesso
Performance
- ✅ Attiva solo gli intents necessari
- ✅ Usa
commands.Botinvece didiscord.Clientper i comandi - ✅ Usa i Cogs per organizzare il tuo codice
Codice
- ✅ Gestisci gli errori con try/except
- ✅ Aggiungi log con
print()o il modulologging - ✅ 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 → !pingHai bisogno di un hosting Python?
Distribuisci le tue applicazioni Python con il nostro hosting ottimizzato e supporto dedicato.
