W tym odcinku zajmiemy się stworzeniem pliku głównego. Przed przeczytaniem tego poradnika warto też zapoznać się z poprzednią częścią, którą można znaleźć tutaj. Repozytorium z kodem można znaleźć tutaj.
Główny kod naszego bota umieścimy w pliku server.js, który oczywiście musimy najpierw utworzyć w folderze głównym. Po zrobieniu tego możemy rozpocząć jego edycję.
W pierwszej kolejności na początku pliku standardowo umieszczamy dyrektywę uruchamiającą strict mode.
'use strict';
Importujemy moduł fs i path, które wykorzystamy do wczytania pliku config.json i package.json oraz modułów wewnętrznych.
const fs = require('fs'); const path = require('path');
Następnie importujemy bibliotekę, którą wykorzystamy do stworzenia naszego bota - discord.js.
const Discord = require('discord.js');
Ostatnią rzeczą, którą zrobimy, będzie zaimportowanie konfiguracji oraz pliku package.json - korzystając z funkcji JSON.parse przetworzymy zawartość pliku dostępnego pod ścieżką wygenerowaną przez path.join, odczytaną za pomocą funkcji fs.readFileSync (używamy funkcji synchronicznej ze względu na to, że plik ten wczytujemy jednorazowo).
const config = JSON.parse(fs.readFileSync(path.join(__dirname, 'config.json'))); const packageInfo = JSON.parse(fs.readFileSync(path.join(__dirname, 'package.json')));
Zaimportowaliśmy już wszystkie gotowe moduły. Teraz utworzymy nową instancję klienta Discord.
const client = new Discord.Client();
Następnie ustawimy funkcję wywoływaną po połączeniu się z API Discorda przez bota.
client.on('ready', () => { });
Wewnątrz ustawiamy status naszego bota na !pomoc | v{wersja} za pomocą funkcji client.user.setActivity - wersję pobieramy z pliku package.json, który wcześniej zaimportowaliśmy.
client.user.setActivity(`!pomoc | v${packageInfo.version}`);
Następnie przygotowujemy informację o gotowości, który będzie się pojawiać w konsoli po udanym połączeniu się z API Discorda.
console.log('Client is ready!');
Kod powinien teraz wyglądać w ten sposób:
client.on('ready', () => { client.user.setActivity(`!pomoc | v${packageInfo.version}`); console.log('Client is ready!'); });
Teraz zajmiemy się ustawieniem funkcji wywoływaniu przez bota po tym, jak na jednym z dostępnych dla niego kanałów tekstowych zostanie wysłana nowa wiadomość.
client.on('message', message => { });
Wewnątrz funkcji umieszczamy w pierwszej kolejności argumenty komendy. Aby je uzyskać usuniemy z zawartości wiadomości (message.content) niepotrzebne spacje (i część innych znaków specjalnych) za pomocą funkcji trim, a następnie rozdzielimy ją za pomocą wyrażenia regularnego \s+, odpowiadającego dowolnej ilości spacji.
const args = message.content.trim().split(/\s+/);
Pod tym umieścimy instrukcję switch, wykonującą podaną przez nas polecenia zależnie od wartości args[0].toLowerCase() - na razie pozostawimy ją pustą.
switch(args[0].toLowerCase()) { }
Nasz kod powinien teraz wyglądać tak:
client.on('message', message => { const args = message.content.trim().split(/\s+/); switch(args[0].toLowerCase()) { } });
Na końcu pliku używając funkcji client.login spowodujemy połączenie się naszego bota z API Discorda.
client.login(config.token);
Plik główny naszego bota jest teraz gotowy!