Je Discord-bot 24/7 online houden: de hosting-gids
Je hebt een Discord-bot gebouwd. Hij deelt netjes rollen uit, reageert op commands of houdt de moderatie bij, en je community is er blij mee. Tot je je laptop dichtklapt en de bot offline gaat. Herkenbaar? Dan is het tijd om je bot ergens te draaien waar hij dag en nacht online blijft, zonder dat jouw pc daarvoor aan moet staan.
Goed bot-beheer komt in de praktijk neer op vier dingen: een stabiele plek om te draaien, een veilig bewaard token, automatisch herstarten na een crash en logs die je kunt teruglezen als er iets misgaat. Die vier lopen we stuk voor stuk langs.
Waarom je eigen pc geen goede host is
Voor het bouwen en testen van je bot is je eigen computer prima. Voor 24/7 draaien niet, en dat heeft weinig te maken met hoe snel je pc is. Het probleem zit in alles eromheen:
- Updates en herstarts. Windows installeert een update, je pc herstart, en je bot is weg tot jij het merkt. Zet je je pc in de slaapstand, dan slaapt je bot mee.
- Stroom en geluid. Een gamende pc die 24/7 aanstaat voor een botje van een paar megabyte is zonde van je energierekening, en die ventilatoren hoor je 's nachts echt wel.
- Thuisinternet. Je verbinding valt weleens weg, je router krijgt af en toe een ander IP-adres, en tijdens een storing bij je provider is je bot net zo lang offline als jij.
- Alles op één machine. Crasht je pc tijdens het gamen, dan trek je je bot mee omlaag.
Een Raspberry Pi in de meterkast is een leuk alternatief en kan best werken, maar ook die hangt aan jouw thuisverbinding en jouw stroomaansluiting. Een klein plekje in een datacenter, met redundante stroom en een vaste, snelle verbinding, lost al deze problemen in één keer op. En nee, daar heb je geen zware server voor nodig: de meeste bots zijn juist heel licht.
Node.js of Python: allebei prima
De twee populairste manieren om een Discord-bot te bouwen zijn JavaScript met discord.js (draait op Node.js) en Python met discord.py. Functioneel maakt het voor de meeste bots weinig uit: beide kunnen commands afhandelen, events verwerken en met de Discord-API praten. Kies gewoon de taal die je al kent.
Voor hosting is vooral dit belangrijk:
- Leg je dependencies vast. Met een
package.json(Node) ofrequirements.txt(Python) installeert de server exact dezelfde pakketten als op je eigen machine. Zonder die bestanden wordt "werkt bij mij wel" een terugkerend gesprek. - Ken je startcommando. Iets als
node index.jsofpython main.py. Dat is wat de host uitvoert om je bot te starten, dus test het lokaal voordat je uploadt. - Overschat je resources niet. Een gemiddelde community-bot gebruikt maar een bescheiden hoeveelheid geheugen. Muziekbots en bots die veel data cachen zijn de uitzondering; die lusten meer RAM.
Je token is de sleutel tot je bot
Het bot-token dat je in het Discord Developer Portal aanmaakt, geeft volledige controle over je bot. Iedereen die dat token in handen krijgt, kan namens jouw bot berichten sturen, servers verlaten of je community volspammen. Tokens lekken vaker uit dan je denkt, en bijna altijd op dezelfde manier: ze staan hardcoded in de code en belanden zo op GitHub. Publieke repositories worden door kwaadwillenden geautomatiseerd gescand; een gelekt token wordt vaak binnen enkele minuten misbruikt.
Zo hoort het wel:
- Zet je token nooit direct in je code, maar in een
.env-bestand of in de omgevingsvariabelen van je hostingpaneel. - Zorg dat dat
.env-bestand in je.gitignorestaat, zodat het nooit meegaat naar GitHub. - Print je token nooit in logs. Ook logbestanden worden gedeeld, bijvoorbeeld als je hulp vraagt bij een probleem.
- Is je token toch gelekt? Reset hem direct in het Discord Developer Portal. Het oude token werkt dan meteen niet meer.
Geef je bot daarnaast alleen de permissies en intents die hij echt nodig heeft. Een bot die alleen rollen uitdeelt, hoeft geen administrator te zijn. Mocht er dan toch iets misgaan, dan is de schade beperkt.
Auto-restart: crashes gebeuren, downtime hoeft niet
Elke bot crasht weleens. Een onverwachte fout in je code, een haperende verbinding met de Discord-API, een dependency die zich anders gedraagt dan je dacht. Op je eigen pc betekent dat: bot offline tot jij toevallig kijkt. Bij een goede host niet, want daar houdt het paneel je proces in de gaten en start het je bot automatisch opnieuw zodra hij stopt. Meestal is de bot dan binnen enkele seconden weer online, nog voordat iemand in je community het doorheeft.
Wel eerlijk: auto-restart is een pleister, geen genezing. Crasht je bot elke vijf minuten, dan maskeert automatisch herstarten alleen maar dat er een echte bug in je code zit. Zie je in je paneel een reeks herstarts achter elkaar, duik dan in de logs en los de oorzaak op. Vang fouten in je code netjes af waar dat kan, zodat één mislukt command niet je hele bot omtrekt.
Logs lezen: saai, maar onmisbaar
Als je bot raar doet, zijn logs je beste vriend. Via de live console van je hostingpaneel zie je precies wat je bot uitspookt: wanneer hij opstartte, welke commands binnenkomen en welke foutmelding er verscheen vlak voordat het misging.
Een paar tips om daar echt iets aan te hebben:
- Log de belangrijke momenten: opstarten, verbinden met Discord en elke afgevangen fout, het liefst met tijdstip. Bij een klacht als "de bot deed het gisteravond niet" kun je dan gericht terugzoeken.
- Log niet álles. Elk binnenkomend bericht wegschrijven maakt je logs onleesbaar en kan bovendien privacygevoelig zijn.
- Neem waarschuwingen over rate limits serieus. Als je bot te veel verzoeken naar de Discord-API stuurt, wordt hij afgeremd en voelt hij traag aan. Vaak is een lus in je code de boosdoener.
In onze kennisbank vind je handleidingen voor het uploaden en beheren van je bot via het paneel, inclusief waar je de console en logs vindt.
Gratis beginnen bij MC-Node
Het mooie van Discord-bots is dat ze zo licht zijn dat hosten bijna niets hoeft te kosten. Bij MC-Node kost het zelfs helemaal niets: het Starter-pakket voor Discord-bot-hosting is gratis, voor €0,- per maand. Je bot draait daarmee op onze eigen hardware in het Previder PDC2-datacenter in Hengelo, met NVMe-opslag en DDoS-bescherming, aan een verbinding die niet plat gaat omdat iemand thuis de magnetron aanzet.
Via het webpaneel upload je je bestanden, stel je je startcommando en omgevingsvariabelen in (daar hoort je token dus thuis) en volg je de live console. Crasht je bot, dan wordt hij automatisch opnieuw gestart. Groeit je bot ooit uit z'n jasje, bijvoorbeeld omdat je een grote muziekbot draait, dan kun je altijd doorschuiven naar een zwaardere oplossing, maar voor de meeste community-bots is dit ruim voldoende.
Zin om je bot vanavond nog 24/7 online te hebben? Start je gratis bot-server via mc-node.net/store/discord-bot-hosting, upload je code en klaar. Bevalt het niet, dan zit je nergens aan vast.