Stvaranje vašeg prvog Discord bota lakše je nego što mislite. Ne trebate diplomu računarstva ili godine programerskog iskustva. U 2026. godini, izgradnja i implementacija funkcionalnog bota traje vikend ako ste usredotočeni.
Ovaj vodič vas vodi kroz cijeli proces: registraciju vašeg bota, pisanje vaše prve naredbe, testiranje lokalno i implementaciju uživo. Do kraja ćete imati bota koji radi na vašem serveru.
Razumijevanje što je Discord Bot
Discord bot je program koji se povezuje s Discordom putem API-ja i reagira na događaje: kada netko upiše naredbu, reagira na poruku, pridruži se serveru itd.
Ključni koncepti:
- Aplikacija vs. Bot: Vaša "aplikacija" je registrirana u Discord Developer Portalu. "Bot" je korisnički račun povezan s tom aplikacijom. Jedna aplikacija ima jednog bota.
- Tokeni: Tajni ključ koji autentificira vašeg bota. Nikada ga ne dijelite. To je kao lozinka za vašeg bota.
- Intents: Dozvole koje omogućuju vašem botu da vidi određene događaje (poruke, reakcije, promjene statusa članova itd.). Omogućujete samo ono što vam je potrebno.
- Naredbe: Botovi reagiraju na naredbe. Moderni botovi koriste slash naredbe (
/naredba) umjesto prefiks naredbi (!naredba). Slash naredbe su službeno podržane i preporučene. - Događaji: Vaš bot sluša Discord događaje (poslana poruka, dodana reakcija, pridruženi član) i reagira na njih.
Korak 1: Registrirajte svog bota u Discord Developer Portalu
Ovdje vaš bot službeno postoji u Discordovom sustavu.
Proces:
- Idite na Discord Developer Portal
- Prijavite se sa svojim Discord računom
- Kliknite "New Application"
- Imenujte ga (npr., "Moj Prvi Bot")
- Kliknite "Create"
- Sada ste u postavkama svoje aplikacije
Sada stvorite korisnika bota:
- Idite na odjeljak "Bot" (lijeva bočna traka)
- Kliknite "Add Bot"
- Ispod korisničkog imena bota vidjet ćete gumb "TOKEN"
- Kopirajte token — ovako se vaš bot autentificira. Čuvajte ovo u tajnosti. Nikada ga nemojte javno dijeliti ili ga predavati GitHubu bez enkripcije.
Konfigurirajte postavke bota:
- Omogućite "Message Content Intent" (omogućuje botu čitanje teksta poruke)
- Omogućite "Server Members Intent" (omogućuje botu da vidi tko je na serveru)
- Pomaknite se prema dolje do odjeljka "OAuth2"
Korak 2: Generirajte pozivnicu za svog bota
Potrebna vam je posebna pozivnica za dodavanje bota na server.
U Developer Portalu:
- Idite na "OAuth2" → "URL Generator"
- Pod "SCOPES", označite:
bot - Pod "PERMISSIONS", odaberite što vaš bot može raditi:
Send Messages(bitno za svakog bota)Manage Messages(ako moderirate)Add Reactions(ako bot reagira na stvari)Connect+Speak(ako je to glazbeni/glasovni bot)- Za učenje, samo odaberite
Send Messages+Read Messages(minimalno održivo)
- Kopirajte generirani URL na dnu
- Podijelite ovaj URL s vlasnicima servera (ili ga sami upotrijebite da biste ga dodali na svoj testni server)
Nemojte koristiti administratorsku dozvolu osim ako je apsolutno neophodno. Prekomjerno dopuštanje je sigurnosni rizik.
Korak 3: Odaberite svoj jezik i okvir
Dvije glavne opcije za početnike:
JavaScript (discord.js)
Discord.js je najpopularniji okvir za Discord botove. Ogromna zajednica, mnoštvo tutorijala i izvrsna dokumentacija.
Prednosti:
- Najveća zajednica i najviše tutorijala na mreži
- discord.js dokumentacija je izvrsna
- Node.js se široko koristi i lako ga je naučiti
- Jednostavna implementacija na većinu platformi za hosting
Nedostaci:
- JavaScript ima neobičnosti (krivulja učenja async/await)
- Node.js dodaje memorijsko opterećenje u odnosu na Python
Početak:
- Instalirajte Node.js (v18+)
- Stvorite mapu projekta
npm init -ynpm install discord.js
Python (discord.py)
Jednostavnija sintaksa, odlična za početnike, izvrsna za učenje osnova.
Prednosti:
- Najlakša sintaksa za učenje
- Intuitivno za početnike
- discord.py dokumentacija je dobra
- Python se koristi posvuda (znanost o podacima, web, automatizacija)
Nedostaci:
- Manja zajednica od discord.js (ali još uvijek velika)
- Manje tutorijala od JavaScripta
- Nešto veća potrošnja memorije
Početak:
- Instalirajte Python 3.10+
- Stvorite mapu projekta
pip install discord.py
Preporuka za početnike: Ako znate Python, koristite discord.py. Ako znate JavaScript, koristite discord.js. Ako ne znate nijedan, Python je lakše naučiti, ali JavaScript ima više resursa na mreži. Odaberite jedan i posvetite se.
Korak 4: Napišite svog prvog bota (primjer u Pythonu)
Evo minimalnog radnog Discord bota u Pythonu koji reagira na naredbu:
import discord
from discord.ext import commands
# Stvorite bota s prefiksom naredbe i namjerama
intents = discord.Intents.default()
intents.message_content = True
bot = commands.Bot(command_prefix='!', intents=intents)
@bot.event
async def on_ready():
print(f'{bot.user} se povezao s Discordom!')
@bot.command(name='hello', help='Kaže hello')
async def hello(ctx):
await ctx.send(f'Hello {ctx.author.name}!')
@bot.command(name='ping', help='Odgovara s pong')
async def ping(ctx):
await ctx.send('Pong!')
bot.run('YOUR_TOKEN_HERE')
Što ovo radi:
- Povezuje se s Discordom
- Sluša naredbe
!helloi!ping - Odgovara porukom kada se pokrene
Da biste ga pokrenuli:
- Zamijenite
'YOUR_TOKEN_HERE'sa svojim stvarnim tokenom iz koraka 1 - Spremite kao
bot.py - Pokrenite:
python bot.py - U Discordu upišite
!hellou bilo kojem kanalu - Bot odgovara: "Hello [VašeIme]!"
Korak 5: Testirajte lokalno
Prije implementacije, testirajte svog bota lokalno (na svom računalu).
Postavite testni server:
- Stvorite privatni Discord server za testiranje
- Dodajte svog bota na njega pomoću pozivnice iz koraka 2
- Pokrenite svoj kod bota lokalno
- Upišite naredbe na testnom serveru
- Pazite na pogreške u svom terminalu; popravite ih
Uobičajene pogreške:
- "Invalid token" — Pogrešno ste kopirali token ili je istekao. Regenerirajte u Developer Portalu.
- "Missing permissions" — Bot nema dozvolu za tu radnju u ovom kanalu. Dodajte dozvole ili upotrijebite kanal u kojem bot ima više prava.
- "Intents are not enabled" — Morate omogućiti namjere u Developer Portalu (Message Content Intent, Server Members Intent, itd.)
Temeljito testirajte. Bot s greškama u produkciji je neugodan.
Korak 6: Dodajte više naredbi
Sada kada razumijete osnove, proširite s više značajki.
Primjer u Pythonu — jednostavna naredba za ekonomiju:
@bot.command(name='balance', help='Provjerite stanje svojih kovanica')
async def balance(ctx):
# U pravom botu, ovo bi upitivalo bazu podataka
# Za sada, samo vratite lažnu vrijednost
await ctx.send(f'{ctx.author.name}, imate 100 kovanica!')
@bot.command(name='roll', help='Bacite kocku (1-6)')
async def roll(ctx):
import random
result = random.randint(1, 6)
await ctx.send(f'{ctx.author.name} je bacio: **{result}**')
Svaka naredba je jednostavna funkcija. Dodajte ih koliko god želite.
Korak 7: Implementirajte svog bota
Hosting lokalno radi za testiranje, ali vaš bot prestaje raditi kada zatvorite prijenosno računalo. Implementirajte na server kako bi radio 24/7.
Besplatne opcije hostinga
Replit (najlakši za početnike):
- Idite na Replit.com
- Stvorite novi Repl → Python (ili Node.js)
- Zalijepite svoj kod bota
- Kliknite "Run"
- Replit ga hosta besplatno (s ograničenjima: može spavati nakon neaktivnosti)
Railway.app (moderno, pouzdano):
- Idite na Railway.app
- Povežite GitHub (ili izravno prenesite datoteke)
- Stvorite novi projekt → odaberite svog bota
- Railway se automatski implementira
- Besplatna razina uključuje 5 USD mjesečnog kredita
Glitch (slično Replitu):
- Idite na Glitch.com
- Stvorite novi projekt
- Zalijepite kod
- Glitch ga održava pokrenutim (unutar granica besplatne razine)
Važno: Nemojte hardkodirati svoj token u kodu koji šaljete na GitHub. Koristite varijable okruženja:
import os
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
bot.run(TOKEN)
Stvorite .env datoteku lokalno (dodajte u .gitignore tako da se ne predaje):
DISCORD_TOKEN=vaš_stvarni_token_ovdje
Na Replitu/Railwayu postavite token kao tajnu varijablu okruženja u postavkama platforme (ne u kodu).
Uobičajene pogreške početnika
Pogreška 1: Hardkodiranje tokena Nikada nemojte stavljati svoj token u kod koji šaljete na GitHub. Botovi s procurjelim tokenima odmah su ugroženi. Koristite varijable okruženja.
Pogreška 2: Ne rukovanje pogreškama Vaš bot se ruši na neočekivani unos. Dodajte rukovanje pogreškama:
@bot.command()
async def divide(ctx, a: int, b: int):
try:
result = a / b
await ctx.send(result)
except ZeroDivisionError:
await ctx.send('Ne može se dijeliti s nulom!')
except ValueError:
await ctx.send('Molimo unesite valjane brojeve!')
Pogreška 3: Ne poštivanje ograničenja brzine Discord ograničava koliko brzo možete slati poruke. Nemojte slati neželjenu poštu API-ju. Dodajte kašnjenja između skupnih radnji.
Pogreška 4: Zanemarivanje namjera Mnogi botovi za početnike ne uspijevaju jer ne omogućuju potrebne namjere u Developer Portalu. Provjerite namjere koje vaš bot treba prije implementacije.
Pogreška 5: Preambiciozan opseg Nemojte pokušavati izgraditi sustav ekonomije, moderiranje, glazbu i 50 naredbi u svom prvom botu. Počnite s 3-5 jednostavnih naredbi. Proširite se kada vam bude ugodno.
Sljedeći koraci
Sada kada imate osnovnog bota:
- Proširite funkcionalnost: Dodajte više naredbi, koristite baze podataka za pohranu podataka, implementirajte složenu logiku
- Koristite slash naredbe: Moderna
/naredbasintaksa umjesto prefiks naredbi - Dodajte reakcije: Neka korisnici kliknu gumbe ili reagiraju emojijima
- Povežite bazu podataka: Pohranite korisničke podatke, kovanice, postavke (SQLite za početnike, PostgreSQL za opseg)
- Pridružite se zajednicama: Zajednice programera Discord botova (reddit.com/r/discordbots, Discord.js support server) imaju odgovore na svako pitanje
Resursi
- discord.js dokumentacija: https://discord.js.org
- discord.py dokumentacija: https://discordpy.readthedocs.io
- Discord API dokumentacija: https://discord.com/developers/docs/intro
- YouTube tutorijali: Pretražite "[discord.js/discord.py] tutorial" — ogromna količina sadržaja
Vaš prvi Discord bot je vikend projekt. Vaš prvi dobar Discord bot je mjesec dana vježbe. Vaš prvi bot koji koristi 1000 servera je mjeseci iteracija, razvoja značajki i izgradnje zajednice. Počnite sada, stalno ponavljajte i nemojte previše razmišljati o tome.