Sadržaj:
U članku ćemo govoriti o tome kako se stvara aplikacija za bota, provodi prva autorizacija na serveru i piše zajednički kod za normalizaciju rada. Imajući "okvir", već možete dodavati korisničke komande i odmah provjeravati kako one rade.
Izrada aplikacije i autorizacija bota
Dalje ćemo govoriti o dvama različitim metodama izrade bota — pomoću JavaScripta i Pythona. Svaka od njih ima svoje osobitosti i nijanse, ali metoda izrade aplikacije i autorizacije bota na serveru ostaje ista, jer ne ovisi o odabranom programskom jeziku.Nakon toga moći ćete preći na odabir biblioteke i rad s kodom.
Pređite na Discord Developer Portal
- Pređite na gornju vezu kako biste došli na glavnu stranicu portala za programere u Discord. Koristite svoje osobne autorizacijske podatke za prijavu u račun.
- Kreirajte novu aplikaciju klikom na gumb "Nova aplikacija".
- Unesite ime aplikacije i potvrdite njezino stvaranje.
- Proširite izbornik stranice klikom na gumb s tri horizontalne linije.
- Iz prikazanog popisa odaberite odjeljak postavki "Bot".
- Započnite dodavanje novog bota za ovu aplikaciju.
- Potvrdite prikazanu obavijest klikom na "Da, učini to".
- Nakon završetka, stranica će se osvježiti i otvorit će se stranica bota, gdje možete promijeniti njegovo ime, kopirati token ili dodati ikonu koja će se prikazivati i na Discordu.
- Međutim, trenutno bot još nije označen kao takav i za njega nisu postavljene dozvole, stoga kroz isto izbornik pređite na odjeljak "OAuth2".
- U popisu "Scopes" označite kvačicom "bot", označavajući tip stvorene aplikacije.
- Pronađite sljedeći blok — "Bot Permissions" i označite kvačice pored svih dozvola koje želite dati stvorenom botu.
- Isto učinite i s ostalim tipovima dozvola, one odgovaraju dostupnim izravno u Discordu za uloge.
- Sada je bot spreman za autorizaciju. Na istoj stranici pronađite redak s vezom i kopirajte ga.
- Zalijepite u adresnu traku i pređite na nju. U prikazanom obrascu odaberite poslužitelj za autorizaciju. Ako još nemate vlastiti poslužitelj, stvorite ga, a zatim se vratite procesu povezivanja bota.
Detaljnije: Kreiranje servera na Discordu
- Upoznajte se s popisom svih dozvola i kliknite na "Autorizirati".
- Preostaje samo potvrditi captcha koja se pojavila na ekranu.
- Otvorite odgovarajući server na Discordu i provjerite je li bot na popisu sudionika. Trenutno je još offline, a pokretanje će biti dostupno nakon što napišemo "tijelo" bota pomoću Pythona ili JS, čime ćemo se baviti dalje.

















Odabir razvojne okoline
Prije nego što započnemo s radom na kodu u spomenutim programskim jezicima, napominjemo da ćete trebati instalirati tekstualni editor ili specijaliziranu razvojnu okolinu koja podržava sintaksu Pythona ili JavaScripta (ovisno o odabranom). Naravno, možete koristiti jednostavno "Bilježenje", ali po udobnosti zaostaje za specijaliziranim programima.
Detaljnije:
Odabir razvojne okoline za programiranje

Opcija 1: Python i biblioteka discord
Ako se ranije niste susretali s programskim jezicima ili ste s njima upoznati samo površno, kreiranje bota za Discord na Pythonu najbolji je izbor. Ovaj programski jezik je lakši za učenje, kompaktan i ima logički razumljiv sintaks, stoga je idealan za početnike. Osim toga, na mreži postoji ogroman broj izvora s raznim komandama ili već gotovim botovima koje možete kopirati i koristiti u svoje svrhe.U sljedećim koracima saznat ćete kako stvoriti "okvir" bota na Pythonu i pokrenuti ga kako biste provjerili njegov rad.
Korak 1: Instalacija Pythona i biblioteke discord
Zadano, Windows nema ugrađene funkcije i alate za rad s Pythonom, stoga ih je potrebno instalirati odvojeno, ne zaboravljajući na biblioteku discord koja omogućava interakciju s korisnim funkcijama i naredbama vezanim isključivo uz Discord.
Idite na službenu stranicu Pythona
- Iskoristite gornju vezu da biste otišli na službenu stranicu Pythona i kliknite gumb za preuzimanje njegove najnovije verzije.
- Na novoj stranici pronađite instalacijski program za Windows i započnite njegovo preuzimanje.
- Pričekajte da preuzimanje završi i pokrenite instalacijski program.
- Možete pokrenuti instalaciju bez promjena, ali obavezno označite opciju "Add Python X.X to PATH", kako bi se sve varijable okruženja automatski dodale i kako ne bi došlo do problema prilikom daljnjeg unosa naredbi.
- Očekujte završetak instalacije i, za svaki slučaj, ponovno pokrenite računalo kako bi sve promjene stupile na snagu.
- Otvorite "Command Prompt" na način koji vam odgovara, na primjer, pronalaskom aplikacije u izborniku "Start".
- Upišite naredbu
pip install discord
i potvrdite je pritiskom na tipku Enter. - Započet će preuzimanje datoteka i u konzoli će se prikazivati linije. Ne zatvarajte ovo prozor dok preuzimanje ne završi.
- Čim se pojavi informacija "Successfully installed", zatvorite "Command Prompt" i nastavite dalje.









Ako je Python instaliran, ali naredba za dodavanje biblioteke ne radi, izvršite ažuriranje PIP komponente, o čemu se govori u drugom članku na našoj stranici.Tamo ćete pronaći upute i za promjenu varijabli okruženja, ako to nije učinjeno tijekom instalacije.
Detaljnije: Ažuriranje PIP-a za Python
Korak 2: Kreiranje rječnika bota
U ovoj verziji koristit ćemo rječnik za bota, odnosno konfiguracijsku datoteku koja pohranjuje vrijednosti tokena, prefiksa i imena bota pod različitim imenima. To značajno pojednostavljuje cijeli proces pisanja koda i ne tjera vas da svaki put pamtite podatke aplikacije kako biste ih unijeli u jednom retku.
- Započnite pokretanjem IDLE-a, pronašavši dodanu aplikaciju kroz izbornik "Start". Ako ste preuzeli drugo razvojno okruženje, otvorite ga i kreirajte novi projekt temeljen na Pythonu.
- Nakon otvaranja novog prozora, pozovite izbornik "File" i odaberite opciju "New File". To možete učiniti i pomoću kombinacije tipki Ctrl + N.
- U novom prozoru, koji je namijenjen pisanju koda, umetnite blok
settings = {
'token': 'Vaš token',
'bot': 'Ime bota',
'id': Client ID bota, bez navodnika,
'prefix': 'Prefiks bota'
} - Sada će biti potrebno pronaći informacije za zamjenu u rječniku. Prvo pronađite Client ID aplikacije na web stranici za programere. Kopirajte ga i zamijenite u odgovarajućem retku.
- Pozovite izbornik i idite na odjeljak "Bot".
- Kopirajte njegov jedinstveni token klikom na posebno dodijeljenu tipku.
- Zalijepite token umjesto natpisa, učinite isto s imenom bota i korištenim prefiksom (prefiks je potreban za pozivanje naredbi i uvijek dolazi ispred njih, na primjer
!play
, a možete zamijeniti uskličnik s bilo kojim drugim simbolima). - Čim su svi podaci zamijenjeni, ponovno pozovite izbornik "File" i odaberite opciju "Save As".
- Kreirajte posebnu mapu za datoteke bota, nazovite ovu mapu
config
i potvrdite spremanje.









Korak 3: Kreiranje tijela bota
Za osiguranje osnovnog funkcioniranja bota potrebno je stvoriti "tijelo" — osnovni kod za pokretanje i rad na poslužitelju.Bit će potreban poseban datoteka, koju možete nazvati kako god želite, ali je obavezno spremiti je na istom mjestu gdje se nalazi ranije stvoreni rječnik.
- U razvojnog okruženju otvorite izbornik "File" i stvorite novu datoteku.
- Zalijepite tamo tri naredbe koje su namijenjene za uvoz instaliranih biblioteka i ranije stvorene datoteke:
import discord
from discord.ext import commands
from config import settings - Dodajte redak
bot = commands.Bot(command_prefix = settings['prefix']) # Budući da smo naveli prefiks u settings, obraćamo se rječniku s ključem prefix
. - Osnovni kod je sljedeći:
@bot.command() # Ne predajemo argument pass_context, jer je bio potreban u starijim verzijama.
async def hello(ctx): # Stvaramo funkciju i predajemo argument ctx.
author = ctx.message.author # Deklariramo varijablu author i zapisujemo informacije o autoru.await ctx.send(f'Hello, {author.mention}!') # Ispisujemo poruku s spominjanjem autora, obraćajući se varijabli author.
- Obratite pažnju na komentare koji slijede nakon znaka "#" — oni će vam pomoći da razumijete svrhu svake linije.
- Naredba za pokretanje izgleda ovako:
bot.run(settings['token']) # Obraćamo se rječniku settings s ključem token, kako bismo dobili token
. - Nakon završetka ponovno otvorite već poznati izbornik i pređite na spremanje datoteke.
- Odredite bilo koje ime za nju i stavite je u mapu s konfiguracijom.







Dalje vidite puni kod o kojem je bilo riječi ranije, pa ga možete jednostavno kopirati ako je potrebno.

import discord
from discord.ext import commands
from config import settings
bot = commands.Bot(command_prefix = settings['prefix'])
@bot.command() # Ne predajemo argument pass_context, jer je bio potreban u starijim verzijama.
async def hello(ctx): # Stvaramo funkciju i predajemo argument ctx.
author = ctx.message.author # Deklariramo varijablu author i zapisujemo informacije o autoru.
await ctx.send(f'Hello, {author.mention}!') # Ispisujemo poruku s spominjanjem autora, obraćajući se varijabli author.
bot.run(settings['token']) # Obraćamo se rječniku settings s ključem token, kako bismo dobili token
Dodatno ćemo pojasniti da možete koristiti alternativnu shemu, oslobađajući se datoteke s rječnikom i dobivajući malo drugačije "tijelo" za bota.Riješite, odgovara li vam ovaj kod više. Navedene retke s tokenom potrebno je urediti prema vlastitim potrebama.
import discord
from discord.ext import commands
TOKEN = 'Vaš token'
bot = commands.Bot(command_prefix='!')
@bot.command(pass_context=True) # dopuštamo prosljeđivanje argumenata
async def test(ctx, arg): # kreiramo asinkronu funkciju bota
await ctx.send(arg) # šaljemo natrag argument
bot.run(TOKEN)
Korak 4: Pokretanje bota
Sada možete pokrenuti bota za provjeru, za što će vam trebati glavni datoteka stvorena u Koraku 3. Kompilirajte je izravno kroz razvojno okruženje ili pozovite "Command Prompt" i unesite python bot.py
, gdje je bot.py naziv stvorene datoteke. Ako datoteku nije moguće pronaći, navedite njezin puni put, na primjer python C:UsersUSER_NAMEbot.py
.

Idite na Discord i provjerite trenutačno stanje bota. Trebao bi se prikazivati u popisu članova u odjeljku "Online" s zelenom točkom.

Iskoristite otvorene izvore ili vlastita znanja kako biste napisali naredbe za bota ili realizirali druge zadatke koje treba izvršiti. Za to uredite njegovu glavnu datoteku ili kreirajte druge, povezujući sve u jedan projekt.
Opcija 2: JavaScript i discord.js
Sljedeća opcija za izradu bota za Discord je korištenje JS-a i knjižnice discord.js, koja dodaje sve potrebne komponente za rad s botovima. Način rada se razlikuje od prethodne opcije samo po alatima i razlikama u sintaksama programskih jezika, ali ostaje otprilike isti.
Korak 1: Instalacija Node.js i discord.js
Proširenje funkcionalnosti JS-a i pretvaranje u jezik opće namjene pomoći će platforma Node.js, čijom instalacijom preporučujemo da se prvo pozabavite.Za to izvršite najjednostavniji algoritam radnji:
Idite na službenu stranicu Node.js
- Otvorite stranicu Node.js na internetu i odaberite najnoviju preporučenu verziju za preuzimanje.
- Pričekajte da dobijete izvršnu datoteku i pokrenite je.
- Slijedite upute koje se pojave na ekranu, završite instalaciju i ponovno pokrenite računalo.
- Otvorite "Start" i putem pretraživanja pronađite klasičnu aplikaciju "Command Prompt".
- U njoj upišite naredbu
npm init
i aktivirajte je pritiskom na Enter. - Kreirajte standardni paket s korisničkim informacijama pritiskom na Enter nakon unosa svakog parametra, ili ostavite sve prema zadanim postavkama.
- Kada svi parametri paketa budu postavljeni, dobit ćete upozorenje koje trebate potvrditi ponovnim pritiskom na Enter.
- Upišite naredbu
npm install
za instalaciju nedostajućih standardnih komponenti. - Pričekajte da se njihovo preuzimanje završi i da se pojavi linija za unos.
- Upišite
npm install discord.js
. - Čim se i ova naredba izvrši, otvorite mapu svog korisnika i provjerite postoji li stvorenih datoteka paketa u JSON formatu.











Korak 2: Rad s datotekama bota
Sve radnje vezane uz datoteke bota i programski kod razmotrit ćemo u okviru jedne faze, jer ih dijeliti na više jednostavno nema smisla.Trebat će vam tri osnovne datoteke u koje se upisuju sve potrebne funkcije: jedna odgovara za konfiguraciju bota, druga za "tijelo", a treća pohranjuje popis dodanih komandi.
- Za početak, kreirajte datoteke "bot.js" i "config.json" u istom direktoriju.
- Otvorite datoteku "config.json" u tekstualnom uređivaču ili razvojnom okruženju i dodajte sljedeće retke:
{
"token" : "Vaš_token",
"prefix" : "Vaš_prefiks"
}Prema tome, izraze unutar dvostrukih navodnika zamijenite jedinstvenim tokenom bota i preferiranim prefiksom.
- Otvorite za uređivanje datoteku "bot.js" (usput, njezino ime može biti bilo koje). Umetnite ovaj blok koda.
const Discord = require('discord.js'); // Povezujemo biblioteku discord.js
const robot = new Discord.Client(); // Objavljujemo da je robot - bot
const comms = require("./comms.js"); // Povezujemo datoteku s naredbama za bota
const fs = require('fs'); // Povezujemo ugrađeni modul datotečnog sustava node.js
let config = require('./config.json'); // Povezujemo datoteku s parametrima i informacijama
let token = config.token; // "Izvlačimo" iz njega token
let prefix = config.prefix; // "Izvlačimo" iz njega prefiksrobot.on("ready", function() {
/* Kada se uspješno pokrene, u konzoli će se pojaviti poruka "[Ime bota] je pokrenut!" */
console.log(robot.user.username + " je pokrenut!");
});robot.on('message', (msg) => { // Reagiranje na poruke
if (msg.author.username != robot.user.username && msg.author.discriminator != robot.user.discriminator) {
var comm = msg.content.trim() + " ";
var comm_name = comm.slice(0, comm.indexOf(" "));
var messArr = comm.split(" ");
for (comm_count in comms.comms) {
var comm2 = prefix + comms.comms[comm_count].name;
if (comm2 == comm_name) {
comms.comms[comm_count].out(robot, msg, messArr);
}
}
}
});robot.login(token); // Autorizacija bota
Pročitajte komentare uz redove koji dolaze nakon kose crte ("//"), kako biste samostalno razumjeli svrhu svakog.
- Kreirajte treću datoteku — "comms.js", u kojoj će u budućnosti biti pohranjene sve potrebne naredbe.
- U nju umetnite osnovni blok koji će se u budućnosti proširivati:
const config = require('./config.json'); // Povezujemo datoteku s parametrima i informacijama
const Discord = require('discord.js'); // Povezujemo biblioteku discord.js
const prefix = config.prefix; // "Izvlačimo" prefiks// Naredbe //
function test(robot, mess, args) {
mess.channel.send('Test!')
}// Popis naredbi //
var comms_list = [{
name: "test",
out: test,
about: "Testna naredba"
}];// Name - naziv naredbe na koju će bot reagirati
// Out - naziv funkcije s naredbom
// About - opis naredbemodule.exports.comms = comms_list;





Za daljnji rad s naredbama bit će dovoljno objaviti njihove funkcije i dopuniti popis odgovarajućim blokovima koda.Na primjeru gotove datoteke "comms.js" izgleda ovako:
const config = require('./config.json');
const Discord = require('discord.js');
const prefix = config.prefix;
const versions = config.versions;
// Komande //
function test(robot, mess, args) {
mess.channel.send("Test!")
}
function hello(robot, mess, args) {
mess.reply("Pozdrav!")
}
// Popis komandi //
var comms_list = [{
name: "test",
out: test,
about: "Testna komanda"
},
{
name: "hello",
out: hello,
about: "Komanda za pozdrav!"
}
}
module.exports.comms = comms_list;
Korak 3: Pokretanje bota
Prvi koraci s botom na JavaScriptu su završeni, što znači da ga možete pokrenuti i provjeriti njegov rad. Za to ćete trebati izvršiti sljedeće:
- Otvorite izbornik "Start" putem pretraživanja pronađite "Command Prompt" i pokrenite ga.
- Unesite
node bot.js
, gdje je bot.js — naziv glavne datoteke s kodom za bota. Ako se ne nalazi u vašem domaćem direktoriju, navedite punu putanju do datoteke ili prvo idite na lokaciju koristeći naredbucd
.


Primjeri korisnih komandi
Na kraju ovog primjera ukratko ćemo opisati dvije korisne komande koje mogu biti korisne prilikom postavljanja bota. Mogu se koristiti kao testne, kada rad na projektu još uvijek traje. Prva komanda — !clear
— briše navedeni broj poruka u chatu.Njezin kod izgleda ovako:
const arggs = mess.content.split(' ').slice(1); // Svi argumenti nakon imena komande s prefiksom
const amount = arggs.join(' '); // Broj poruka koje treba obrisati
if (!amount) return mess.channel.send('Niste naveli koliko poruka treba obrisati!'); // Provjera je li parametar količine postavljen
if (isNaN(amount)) return mess.channel.send('To nije broj!'); // Provjera je li unos korisnika broj
if (amount > 100) return mess.channel.send('Ne možete obrisati više od 100 poruka odjednom'); // Provjera je li unos korisnika broj veći od 100
if (amount {
mess.channel.bulkDelete(messages)
mess.channel.send(`Obrisano je ${amount} poruka!`)
})
};
delete_messages(); // Poziv asinkrone funkcije
Druga komanda služi za bacanje novčića i pokreće se unosom !heads_or_tails
u chatu. Ovdje kod nije tako složen, jer je radnji malo i bot treba odgovoriti samo na jedan zahtjev bez velikog broja varijabli.
mess.channel.send('Novčić se baca...')
var random = Math.floor(Math.random() * 4) + 1; // Deklaracija varijable random - izračunava slučajan broj od 1 do 3
if (random === 1) { // Ako je izračunat broj 1, pada orao.
mess.channel.send(':full_moon: Orao!')
} else if (random === 2) { // Ako je izračunat broj 2, pada pismo.
mess.channel.send(':new_moon: Pismo!')
} else if (random === 3) { // Ako je izračunat broj 3, novčić pada na rub.
mess.channel.send(':last_quarter_moon: Novčić je pao na rub!')
}
Na internetu možete pronaći druge korisne komande koje želite uključiti u svog bota, no za rad s njima ipak su potrebna napredna znanja u JavaScriptu ili Pythonu kako biste sami ispravili greške ili prilagodili kod.