Discord bot

Nabídky občasných obchodních partnerů:
Z těchto nabídek nemám žádnou provizi, nicméně jsou zajímavé a sem tam si rád přihodím též;-)

Bot v akci

Nevíte, co dá za práci napsat jednoduchého a hlavně funkčního bota pro Discord někomu, kdo nic takového nikdy nedělal. Přiblížím vám to tedy v několika následujících odstavcích. Pokud provozujete server s OS Windows, je to o něco jednodušší. Linuxovým serverům se zde věnovat nebudu. Pravděpodobně to však bude podobné.

Jako první je potřeba si stáhnout aplikaci node.js z webu https://www.nodejs.org, kterou budete potřebovat k samotnému spuštění bota. Jestliže budete bota provozovat na lokálním PC uvědomte si, že jakmile bude tento vypnut, bot bude odpojen též. Stejně tak bude vypnut, pokud zavřete příkazový řádek, ve kterém běží.

Takže co budeme potřebovat? Předně je potřeba si stáhnout nějaký textový editor s možností zvýraznění syntaxe. Osobně doporučuji Notepad++.  Dále pak nějakou složku, ve které budeme pracovat a ve které si vytvoříme ještě podsložky s názvy „events“ a „commands“. Co budete potřebovat dál, je příkazový řádek. Jasně, už vidím ty vyděšené pohledy čtenářů. Ale nemusíte mít strach, je to jednoduché. V případě, že máte složku s botem na ploše, zadáte jen dva příkazy:

CD \
CD users\ Vaše jméno \desktop\ Název složky s botem

Za proměnné „Vaše jméno“ a „Název složky s botem“ dodejte vlastní cestu. Příkazový řádek nechte otevřený po celou dobu práce, protože jej budete ještě potřebovat. Jako další bude potřeba v této složce spustit několik příkazů z příkazového řádku:

npm install discord.js
npm init -y
npm install nodemon --save-dev
npm install dotenv

První příkaz nainstaluje skript discordu, aby se bylo jak připojit. Další má na starosti vytvoření minimálního souboru package.json, který budeme dále doplňovat. Třetí příkaz nainstaluje nějaké další vývojářské nástroje a poslední se postará o skrytí nastavení vašeho tokenu, tedy přihlašovací údaj bota, do .env souboru.

Defaultně se bot bude jmenovat podle složky, ve které je uložen. V průběhu zadávání příkazů, tedy po zadání druhého, si budete moci některé informace zapsat sami. Většinu parametrů je možné změnit později přímo v souboru package.json. Zde je příklad souboru package.json použitého pro můj projekt:

{
„name“: „fonline-bot“,
„version“: „1.0.0“,
„description“: „FOnline Discord Bot“,
„main“: „bot.js“,
„scripts“: {
„start“: „node index.js“,
„dev“: „nodemon index.js“
},
„author“: „Powerack“,
„license“: „ISC“,
„dependencies“: {
„discord.js“: „^11.5.1“,
„dotenv“: „^8.0.0“
},
„devDependencies“: {
„nodemon“: „^1.19.1“
}
}

Jak vidíte, je to textový soubor. Uvozovky je potřeba dodržovat standardní, tedy nikoliv ty, které vám servíruje WordPress. To samé platí i pro všechny ostatí případy.

Jedna menší výzva bude pro běžného uživatele vytvořit soubor bez názvu s příponou .env, do kterého musíte vložit svůj token pro bota. Jde to, ale dře to. Proto si pomůžeme například v Total Commanderu a vytvoříme ve složce soubor s libovolným názvem a příponou .env. Název souboru pak jednoduše umažeme při přejmenování. Soubor si otevřeme v jakémkoliv textovém editoru a vložíme do něj náš token takto:

BOT_TOKEN=Váš token z discordu.

Následující nastavení je již jen pouhou formalitou. Abych to ale předvedl názorně, přidám výpis souboru index.js:

const Discord = require(‚discord.js‘)
const client = new Discord.Client()
const fs = require(‚fs‘)
require(‚dotenv‘).config()
fs.readdir(‚./events/‘, (err, files) => {
files.forEach(file => {
const eventHandler = require(`./events/${file}`)
const eventName = file.split(‚.‘)[0]
client.on(eventName, arg => eventHandler(client, arg))
})
})
client.login(process.env.BOT_TOKEN)

Na posledním řádku vidíte, že se token načítá z externího zdroje, tedy souboru s názvem .env, který jste si vytvořili.

Dále budeme potřebovat ještě nekolik dalších souborů, které umístíme do vytvořené podsložky events. Jsou to tyto:

Ready.js

// Tento soubor pouze oznamuje, zda je bot připraven.
module.exports = client => {
console.log(`Prihlasen jako: ${client.user.tag}!`)
}

Message.js

// Zde budou veškeré zprávy. Zatím jen test…

// Vykopávací mechanismus
module.exports = (client, message) => {
if (message.content.startsWith(‚!kick‘)) {
const member = message.mentions.members.first()

if (!member) {
return message.reply(
`Koho se pokoušíš vyhodit?`
)
}

if (!member.kickable) {
return message.reply(`Tohoto uživatele nemohu vyhodit.`)
}

return member
.kick()
.then(() => message.reply(`${member.user.tag} byl vyhozen.`))
.catch(error => message.reply(`Nastala nějaká chyba, sorry.`))
}
}

guildMemberAdd.js

// Uvítací zpráva pro nového člena
module.exports = (client, member) => {
member.send(
`Vítej na našem serveru! Prosím pochop, že zde netolerujeme trolly, spammery a další podobné živly. Pokud máš nutkání si někde vybít vztek, jdi raději na hřiště, nebo si zaběhat. Patříš-li mezi ty na správné straně barikády, přejeme ti příjemnou zábavu!`
)
}

 

Ke složce commands jsem se ještě neprokousal, je dost možné, že tento projekt budu ještě upravovat. Doplnění hlášek a dalších věcí je čistě na ostatních uživatelích, ale pokud máte nějaké rady pro začátečníka, budu rád, když se o ně podělíte.

 

Jak to spustit? Připravil jsem si krátký skript pro příkazový řádek (.bat soubor), který zkontroluje, zda jsou všechny potřebné soubory k dispozici. Pokud chybí jakýkoliv z vyžadovaných souborů, program oznámí, že soubor nenalezl a bota nespustí. Toto je možné ještě pomocí příkazu „echo soubor ten či onen nenalezen >> log.txt“ rozšířit o možnost tvorby logu. Tuto funkcionalitu jsem používal ještě v dřevních dobách, kdy nejpoužívanějším OS byl DOS a hned po něm Windows 3.11 a 95, pro některé své projekty, kde byl každý chybějící soubor klíčový. Tímto způsobem lze ve starších OS (DOS, Windows 9x / ME) posílat dokonce řetězce textu přímo na tiskárnu, ale to je jen taková zajímavost. Zde je tedy můj soubor startbot.bat:

Startovací „skript“ pro Discrod Bot

Slovo Pravděpodobně je zde pro srandu králíkům, protože je jasné, že díky tomu bot nenastartuje. Pochopitelně souborů, bez kterých bot nenastartuje je více, ale toto jsou ty „hlavní“. Ano, uvědomuji si, že se to dalo napsat i lépe, ale toto je pro začátečníka nejpochopitelnější. A ano, vím, že pokud se soubor spustí přímo z Windows, v případě chyby jen problikne okno, protože mi zde chybí na konci skoku :konec příkaz pause. Hlavně vím, že tam mám chybu, ale komu se kdy nějaká nestala že?

A takto vypadá spuštěný bot v příkazovém řádku:

Spuštěný bot v příkazovém řádku.

Líbil se vám tento článek? Budu rád, když se vám bude líbit i tato nabídka:


Poznámka: Pokud blokujete reklamy, je možné, že i přes veškerou mou snahu váš software na blokování reklam obejít, neuvidíte jednoduše nic.
Tato reklama se zobrazuje jen nepřihlášeným uživatelům. Přihlásit se můžete přes Patreon.

Buďte první kdo přidá komentář

Napište komentář

Vaše e-mailová adresa nebude zveřejněna.


*


19 − 10 =