Je Discord bot online zetten met Python (discord.py)

Zet je discord.py-bot 24/7 online: bot en token aanmaken, requirements.txt en je hoofdbestand instellen, intents aanzetten en fouten oplossen.

EliteStarHosting Team2 november 20264 min lezen

Zo zet je een bot in Python met discord.py dag en nacht online. discord.py werkt met Python 3.8 en nieuwer. Je server moet daarvoor op Python draaien: onder Startup zie je dan het veld APP PY FILE. Zie je daar MAIN FILE? Dan draait je server op Node.js: vraag ons via support om hem om te zetten. Schrijf je in JavaScript? Lees dan de handleiding voor Node.js.

1. Je bot aanmaken in Discord

  1. Ga naar het Discord Developer Portal, klik op New Application, kies een naam en klik op Create.
  2. Open Bot, klik op Reset Token en kopieer de token. Discord laat hem maar één keer zien.
  3. Zet onder Privileged Gateway Intents de intents aan die je bot gebruikt, zie hieronder.
  4. Open OAuth2, ga naar de OAuth2 URL Generator en vink bot en applications.commands aan. Kies onder Bot Permissions wat je bot mag, liever niet Administrator.
  5. Open de link onderaan, kies je Discord-server en klik op Authorize.

De token is het wachtwoord van je bot: deel hem met niemand, ook niet met ons.

2. Intents aanzetten

Een privileged intent moet aan staan in het Developer Portal en in je code. Staat hij in het portal uit, dan start je bot niet.

  • intents.message_content = True hoort bij de Message Content Intent. Die heb je nodig om berichten te lezen, zoals commando's met !.
  • intents.members = True hoort bij de Server Members Intent, voor joins, leaves en de ledenlijst.
  • intents.presences = True hoort bij de Presence Intent, voor online-statussen.

3. Je bestanden klaarzetten

In requirements.txt zet je de packages die je bot nodig heeft, één per regel:

discord.py
python-dotenv

Een eenvoudige bot.py:

import os
import discord
from dotenv import load_dotenv

load_dotenv()
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)

@client.event
async def on_ready():
    print(f"Logged in as {client.user}")

client.run(os.getenv("DISCORD_TOKEN"))

In .env staat één regel: DISCORD_TOKEN= met je token erachter. Deel dat bestand nooit: zo bewaar je je token veilig. Noem je bestand nooit discord.py, anders laadt Python je eigen bestand in plaats van de library.

4. Uploaden en Startup instellen

  1. Upload je .py-bestanden, requirements.txt en .env via Files of SFTP. Laat mappen als venv en __pycache__ weg.
  2. Vul onder Startup bij APP PY FILE je hoofdbestand in, zoals bot.py.
  3. Laat REQUIREMENTS FILE op requirements.txt staan: daarmee installeert de server bij elke start je packages. Losse packages mogen ook in ADDITIONAL PYTHON PACKAGES, met spaties ertussen.
  4. Kun je bij Docker Image een Python-versie kiezen? Neem dan de nieuwste.

SFTP Details met Server Address, Username en de knop Launch SFTP

5. Starten en fouten oplossen

Klik op Start en open Console. Zie je Logged in as met de naam van je bot? Dan is hij online.

De console met het geheugengebruik (hier van een Minecraft server)

  • PrivilegedIntentsRequired: zet de intent die je code vraagt aan in het Developer Portal.
  • Improper token has been passed.: de token klopt niet. Maak een nieuwe met Reset Token.
  • received NoneType instead: je bot vindt .env of de naam DISCORD_TOKEN niet.
  • No module named 'discord': je packages zijn niet geïnstalleerd. Staat requirements.txt in de hoofdmap, en heet hij niet per ongeluk requirements.txt.txt?
  • No module named 'audioop': je discord.py is te oud voor Python 3.13 of nieuwer. Zet discord.py>=2.5 in requirements.txt.

Bijwerken

Upload je gewijzigde bestanden en klik op Restart. Nieuwe packages zet je eerst in requirements.txt, dan installeert de server ze bij de herstart. Crasht je bot, dan start het paneel hem opnieuw, behalve bij een tweede crash binnen een minuut. Lees dan de fout in de console. Elke nacht herstarten? Gebruik Schedules.