Tworzenie bota Discord w Pythonie: od zera do działania online

Napisanie bota Discord w Pythonie zajmuje jeden wieczór. Utrzymanie go online 24/7 wymaga pakietu hostingowego. Poniżej pełna droga: od utworzenia aplikacji bota do działającego bota na panelu gry HostValues.

Krok 1: tworzenie aplikacji bota

  1. Przejdź do Discord Developer Portal i kliknij „New Application".
  2. Nadaj aplikacji nazwę i kliknij „Create".
  3. Przejdź do zakładki „Bot" i kliknij „Reset Token", aby wygenerować token. Skopiuj token i przechowaj go w bezpiecznym miejscu. Zobaczysz go tylko raz.
  4. W sekcji „Privileged Gateway Intents" włącz następujące opcje: Presence Intent, Server Members Intent i Message Content Intent.
  5. Przejdź do „OAuth2", zaznacz w Scopes „bot", a w Bot Permissions uprawnienia, których Twój bot potrzebuje (minimum: Send Messages, Read Message History).
  6. Skopiuj wygenerowany URL i otwórz go w przeglądarce, aby dodać bota do swojego serwera.

Krok 2: kod

Utwórz folder z dwoma plikami:

requirements.txt

discord.py>=2.5
python-dotenv

bot.py

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

load_dotenv()

bot = commands.Bot(
    command_prefix="!",
    intents=discord.Intents.all()
)

@bot.event
async def on_ready():
    print(f"Online jako {bot.user}")

@bot.command()
async def ping(ctx):
    await ctx.send(f"Pong! Latency: {round(bot.latency * 1000)}ms")

@bot.command()
async def czesc(ctx):
    await ctx.send(f"Hej {ctx.author.display_name}!")

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

.env

DISCORD_TOKEN=twoj_token_tutaj

Przetestuj lokalnie: pip install -r requirements.txt, następnie python bot.py. Wpisz !ping na swoim serwerze Discord. Działa? Pora na hosting.

Krok 3: hosting na panelu gry

  1. Zamów pakiet Discord bot.
  2. Prześlij bot.py, requirements.txt i .env przez zakładkę Files. Nie przesyłaj folderu __pycache__ ani środowiska wirtualnego.
  3. W zakładce Startup ustaw plik startowy na bot.py i wybierz Python 3.12.
  4. Uruchom serwer. Panel automatycznie zainstaluje pakiety z requirements.txt.
  5. W konsoli pojawi się „Online jako NazwaBota". Twój bot jest teraz dostępny 24/7.

Dodawanie slash commands

Slash commands to nowoczesny sposób interakcji z botami. Pojawiają się w menu Discord po wpisaniu /:

@bot.tree.command(name="info", description="Wyswietla informacje o serwerze")
async def info(interaction: discord.Interaction):
    guild = interaction.guild
    await interaction.response.send_message(
        f"{guild.name} ma {guild.member_count} czlonkow."
    )

# Dodaj do on_ready:
@bot.event
async def on_ready():
    await bot.tree.sync()
    print(f"Online jako {bot.user}")

Trzy błędy, które popełnia każdy

  • Token w kodzie. Umieść token w pliku .env, nie w bot.py. Token, który trafi na GitHub, zostanie automatycznie unieważniony przez Discord.
  • Intents niewłączone. Jeśli używasz discord.Intents.all(), ale nie zaznaczysz intents w Developer Portal, bot uruchomi się, ale nie będzie na nic reagował.
  • Brak requirements.txt. Panel nie może zainstalować pakietów bez tego pliku. Lokalnie działa, bo instalowałeś ręcznie.

Ile RAM potrzebuje mój bot?

Prosty bot komendowy lub moderacyjny: mniej niż 256 MB. Najmniejszy pakiet 1 GB jest w pełni wystarczający. Bot muzyczny na wielu serwerach: 2 GB.

Czy mogę uruchomić wiele botów na jednym pakiecie?

Tak. Użyj pm2 (npm install -g pm2), aby uruchomić wiele skryptów Python jednocześnie. Trzy małe boty zmieszczą się w 1 GB.

discord.py czy discord.js?

Python, jeśli dopiero zaczynasz programować: składnia jest bardziej czytelna. JavaScript, jeśli masz już doświadczenie z webem lub chcesz zbudować dashboard. Obie biblioteki są aktywnie utrzymywane i równoważne pod względem funkcjonalności.

Zobacz pakiety Discord bot lub KVM VPS, jeśli oprócz bota chcesz również prowadzić stronę internetową lub bazę danych.


Nadal masz pytania? Utworz ticket, a nasz zespol Ci pomoze.

Powrot do bloga