Skocz do zawartości
  • Pierwszy bot dla Discorda #2 - Tworzymy plik główny

       (3 opinie)

    Nieaktywny

    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!




    Opinie użytkowników

    Dołącz do dyskusji

    Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

    Nieaktywny

    Michaux0

       2 z 4 użytkowników uznało tę opinię za pomocną 2 / 4 użytkowników

    A po co kombinować z fs i path? Wystarczy zrobić

    const data = require('./plik.json');

    No i jeszcze ja klienta nazwałbym z dużej litery bo jest to instancja klasy, ale to już zależy od piszącego.

    Odnośnik do opinii
    Udostępnij na innych stronach

    Gość Vylence

       0 z 2 użytkowników uznało tę opinię za pomocną 0 / 2 użytkowników

    WALL OF TEXT, a bardziej WALL OF CODE no ale spoko.

    Odnośnik do opinii
    Udostępnij na innych stronach

    Nieaktywny

       0 z 4 użytkowników uznało tę opinię za pomocną 0 / 4 użytkowników

    W Python łatwiej dało by się to napisać.

    Odnośnik do opinii
    Udostępnij na innych stronach


×
×
  • Dodaj nową pozycję...