W tym artykule mowa będzie o ręcznym tworzeniu bota do odtwarzania muzyki w Discordzie. Możesz zarówno skopiować cały przedstawiony kod, jak i edytować go według własnych potrzeb, jeśli posiadasz umiejętności JavaScript. Stworzony przez nas bot został przetestowany, ale na niektórych etapach użytkownik może napotkać różne problemy, dlatego zalecamy uważne czytanie nie tylko naszej instrukcji, ale także pojawiających się na ekranie kodów błędów, jeśli takie wystąpią.

Jeśli okaże się, że ten materiał jest dla Ciebie zbyt skomplikowany lub nieodpowiedni z innych powodów, skorzystaj z gotowych darmowych botów do odtwarzania muzyki. W artykule pod poniższym linkiem znajdziesz szczegółowe informacje na ten temat i będziesz mógł zrealizować postawione zadanie.

Więcej:
Dodanie bota muzycznego na serwerze w Discordzie
Odtwarzanie muzyki przez bota w Discordzie

Krok 1: Utworzenie nowej aplikacji

Każdy bot do Discorda musi być zarejestrowany na oficjalnym portalu dla deweloperów.Tak uzyskujesz dostęp do wszystkich niezbędnych ustawień związanych z uprawnieniami i ogólnym zachowaniem bota, możesz skopiować link do jego autoryzacji na osobistym serwerze i użyć unikalnego tokena, który jest potrzebny do dalszego rozwoju komend.

Przejdź do oficjalnej strony Discord Developer Portal

  1. Skorzystaj z powyższego linku, aby otworzyć stronę główną portalu dla deweloperów, zaloguj się na swoje konto Discord i kliknij na "Nowa aplikacja", aby stworzyć nową aplikację.
  2. Przejdź do rejestracji nowej aplikacji do tworzenia muzycznego bota w Discordzie
  3. Wprowadź jej nazwę, pamiętając o unikalności, ponieważ jeśli już istnieje wiele botów o tej samej nazwie, nie będzie można jej stworzyć — pojawi się powiadomienie o konieczności zmiany nazwy.
  4. Wprowadzenie nazwy podczas rejestracji nowej aplikacji do tworzenia muzycznego bota w Discordzie
  5. Po zakończeniu otwórz menu na stronie i wybierz kategorię "Bot".
  6. Przejście do podłączenia komponentów nowej aplikacji do tworzenia muzycznego bota w Discordzie
  7. Naprzeciwko linii "Build-A-Bot" kliknij na "Dodaj bota".
  8. Przycisk do podłączenia komponentów nowej aplikacji do tworzenia muzycznego bota w Discordzie
  9. Potwierdź dodanie bota do wybranej aplikacji.
  10. Potwierdzenie podłączenia komponentów do nowej aplikacji do tworzenia muzycznego bota w Discordzie
  11. Przez już znane menu przejdź do "OAuth2".
  12. Przejdź do strony ustawień aplikacji do tworzenia muzycznego bota w Discordzie
  13. Ta sekcja odpowiada za ogólne parametry bota i jego autoryzację. W bloku "Scopes" zaznacz pole "bot".
  14. Wybór typu pracy aplikacji do stworzenia muzycznego bota w Discordzie
  15. Na liście uprawnień koniecznie aktywuj dołączenie do kanałów głosowych i możliwość mówienia, ponieważ jest to potrzebne do dalszej transmisji muzyki.
  16. Wyszukiwanie uprawnień kanałów głosowych podczas konfigurowania aplikacji do tworzenia muzycznego bota w Discordzie
  17. Bot musi umieć czytać i wysyłać wiadomości, więc nie zapomnij włączyć tych opcji w sekcji z uprawnieniami czatów tekstowych. Oczywiście, można przyznać wszystkie uprawnienia od razu, ale takie podejście jest niewłaściwe, szczególnie w przypadkach, gdy tworzysz bota dla masowego użytkownika.
  18. Wyszukiwanie uprawnień kanałów tekstowych podczas konfigurowania aplikacji do tworzenia muzycznego bota w Discordzie
  19. Gdy tylko ustawienia uprawnień będą zakończone, skopiuj link do pierwszej autoryzacji bota na serwerze, ponieważ w przeciwnym razie nie będzie można go dodać.
  20. Kopiowanie linku autoryzacyjnego narzędzia do tworzenia muzycznego bota w Discordzie
  21. Przejdź pod ten link i wybierz serwer testowy, na którym chcesz przeprowadzić testy bota.
  22. Pierwsza autoryzacja po przejściu przez link do stworzenia muzycznego bota w Discordzie
  23. Potwierdź captcha i poczekaj na pojawienie się informacji o pomyślnej autoryzacji.
  24. Udana autoryzacja po przejściu przez link do stworzenia muzycznego bota w Discordzie

Teraz masz aplikację bota z unikalnym tokenem, a bot został już dodany na serwer, ale wciąż jest w trybie offline.Na początku jego pracy trzeba wykonać jeszcze kilka działań na lokalnym komputerze, ponieważ na razie nie przesyłamy bota na hosting do autonomicznego działania.

Krok 2: Działania przygotowawcze

Do działań przygotowawczych należy stworzenie wymaganych katalogów i plików, zainstalowanie narzędzi oraz zależności dla nich. Nie ma w tym nic skomplikowanego, wystarczy po kolei wykonać każde działanie, uważnie obserwując, aby na żadnym etapie nie pojawiły się błędy.

  1. Utwórz folder o nazwie bota. Możesz wybrać dowolne miejsce, ale najlepiej nadaje się do tego folder domowy użytkownika.
  2. Dodanie folderu użytkownika do tworzenia bota muzycznego w Discordzie
  3. W nim stwórz dwa pliki: "config.json" oraz "index.js". W pierwszym zapiszemy ogólną konfigurację bota — jego prefiks i unikalny token, a w drugim — cały kod programu z komendami i ogólnymi zadaniami tego narzędzia.
  4. Dodawanie plików do folderu użytkownika w celu stworzenia muzycznego bota w Discordzie
  5. Do działania bota potrzebny będzie Node.js. To narzędzie służy do uruchamiania skryptów na lokalnym komputerze. Przejdź do poniższego linku i pobierz jego instalator dla Windows.

    Pobierz Node.js z oficjalnej strony

  6. Pobieranie komponentu do stworzenia muzycznego bota w Discordzie
  7. Czekaj na zakończenie pobierania pliku wykonywalnego, uruchom go i przejdź przez prostą procedurę instalacji, postępując zgodnie z instrukcjami wyświetlanymi na ekranie.
  8. Uruchomienie i instalacja komponentu do tworzenia muzycznego bota w Discordzie
  9. Następnie otwórz "Wiersz polecenia" w dogodny dla siebie sposób, na przykład wpisując cmd w narzędziu "Uruchom" (uruchamia się kombinacją klawiszy Win + R).
  10. Uruchomienie Wiersza poleceń w celu stworzenia muzycznego bota w Discordzie
  11. Zainstaluj moduł do pracy z API Discord, który nazywa się "discord.js". W tym celu w otwartym oknie konsoli wpisz npm install discord.js ffmpeg-binaries opusscript ytdl-core --save i naciśnij Enter — w ten sposób od razu dodasz wszystkie niezbędne zależności.
  12. Zespół instalacji dodatkowych modułów do tworzenia muzycznego bota w Discordzie
  13. Czekaj na pojawienie się powiadomień na ekranie o pomyślnej instalacji, nie zamykając bieżącego okna konsoli. Jeśli pojawią się błędy, zapoznaj się z ich kodem i skorzystaj z wyszukiwarki, aby znaleźć działające rozwiązanie na forach lub oficjalnej stronie.
  14. Proces instalacji dodatkowych modułów do stworzenia muzycznego bota w Discordzie

W rezultacie w folderze domowym użytkownika powinny pojawić się pliki związane z komponentem Node.js oraz dodanym po nim modułem.Zrestartuj komputer, aby przy dalszym uruchamianiu bota nie wystąpiły trudności, a następnie przejdź do następnego kroku.

Krok 3: Edytowanie pliku konfiguracyjnego bota

Już wiesz, że w utworzonym pliku konfiguracyjnym bota będzie tylko kilka linii kodu, odpowiadających za używany prefiks (symbol przed wprowadzeniem komendy na serwerze) oraz unikalny token, definiujący aplikację w API. Aby wykonać wszystkie dalsze czynności, zalecamy pobranie programu z obsługą składni JS lub dowolnego zaawansowanego edytora tekstu, jeśli nie zostało to wcześniej zrobione. W artykule pod linkiem poniżej możesz zapoznać się z dostępnymi odpowiednimi rozwiązaniami.

Szczegóły: Wybór środowiska programistycznego

Gdy oprogramowanie jest zainstalowane na komputerze i gotowe do pracy, można śmiało przystąpić do edytowania pliku konfiguracyjnego, wprowadzając tam dane użytkownika.

  1. Uruchom plik config.js za pomocą edytora tekstu lub środowiska programistycznego, wklej tam przedstawiony poniżej kod.

    {
    "prefix": "!",
    "token": "your-toke"
    }

    Zmiana prefiksu podczas edytowania pliku konfiguracyjnego do stworzenia muzycznego bota w Discordzie

    Zmień prefiks w podwójnych cudzysłowach na wymagany lub pozostaw wykrzyknik. Przykład komendy z użyciem tego znaku wygląda tak: !play.

  2. Przejdź na stronę swojego bota na portalu deweloperskim, znajdź tam unikalny token i skopiuj go.
  3. Kopiowanie unikalnego tokena do stworzenia muzycznego bota w Discordzie
  4. Wklej zamiast napisu your-toke, nie usuwając przy tym podwójnych cudzysłowów.
  5. Zamiana unikalnego tokena w pliku konfiguracyjnym do stworzenia muzycznego bota w Discordzie
  6. Zapisz zmiany i zamknij ten plik. Przy okazji, to samo działanie można wykonać również za pomocą standardowego "Notatnika".
  7. Użycie edytora tekstu przy edytowaniu pliku konfiguracyjnego do stworzenia muzycznego bota w Discordzie

Na tym działania z plikiem konfiguracyjnym są zakończone, nie trzeba tam wpisywać żadnej dodatkowej linii kodu.Zamknij go, nie zapominając o zapisaniu wprowadzonych poprawek, i przystąp do dalszego pisania bota do odtwarzania muzyki.

Krok 4: Próbne uruchomienie bota

Najpierw musimy upewnić się, że bot w ogóle uruchamia się na serwerze i przechodzi w tryb online, w tym celu należy zapisać jego główną część kodu w index.js, a następnie użyć Node.js do uruchomienia.

  1. Za pomocą środowiska programistycznego lub wybranego edytora tekstu otwórz wspomniany plik do edycji.
  2. Otwieranie pliku wejściowego kodu do stworzenia muzycznego bota w Discordzie
  3. Wklej tam blok kodu odpowiedzialny za instalację zależności i wskazujący na używane moduły:

    const Discord = require('discord.js');
    const {
    prefix,
    token,
    } = require('./config.json');
    const ytdl = require('ytdl-core');

  4. Kod ogłoszenia zależności do stworzenia muzycznego bota w Discordzie
  5. Za pomocą wcześniej podanego tokena stwórz klienta i zaloguj się, co odbywa się poprzez wpisanie zaledwie dwóch prostych linii:

    const client = new Discord.Client();
    client.login(token);

  6. Dodanie klienta i tokena do stworzenia muzycznego bota w Discordzie
  7. Pozostaje tylko wskazać ostatnie podstawowe linie do nasłuchiwania bota.

    client.once('ready', () => {
    console.log('Gotowy!');
    });
    client.once('reconnecting', () => {
    console.log('Ponowne łączenie!');
    });
    client.once('disconnect', () => {
    console.log('Rozłączono!');
    });

  8. Polecenia przy podłączeniu w kodzie do stworzenia muzycznego bota w Discordzie
  9. Rozwiń menu "Plik" i zapisz wprowadzone zmiany.
  10. Zapisanie zmian po edytowaniu kodu w celu stworzenia muzycznego bota na Discordzie
  11. Ponownie uruchom konsolę w dogodny sposób.
  12. Uruchomienie wiersza poleceń w celu włączenia bota do tworzenia bota muzycznego w Discordzie
  13. Wpisz polecenie node index.js w celu uruchomienia skryptu bota.
  14. Komenda włączenia bota do tworzenia bota muzycznego na Discordzie
  15. Jeśli jego pliki nie znajdują się w katalogu domowym użytkownika, po node należy podać pełną ścieżkę do nich.
  16. Wprowadzenie innej komendy uruchamiającej bota do stworzenia bota muzycznego w Discordzie
  17. O pomyślnym uruchomieniu bota świadczy pojawiający się komunikat "Gotowy!".
  18. Wynik udanego uruchomienia do stworzenia muzycznego bota w Discordzie
  19. Otwórz Discord i upewnij się, że bot przeszedł w status "Online".
  20. Sprawdzanie bota w trybie online do tworzenia bota muzycznego w Discordzie

Krok 5: Pisanie głównego kodu muzycznego bota

Pozostał najtrudniejszy proces — napisanie głównego kodu dla muzycznego bota.Jest lista zadań, które bot musi wykonać: czytanie wiadomości i przetwarzanie poleceń, określenie tytułu piosenki lub jej adresu, podłączenie do kanału głosowego i odtwarzanie. Bot ma na to wszystkie uprawnienia, więc wystarczy wskazać mu działania za pomocą funkcji JavaScript, co wykonuje się w tym samym pliku "index.js".

Edycja kodu w celu zapewnienia prawidłowego działania bota muzycznego w Discordzie

Dodaj prostą funkcję do czytania wiadomości:

client.on('message', async message => {
}

Składa się zaledwie z dwóch linii, ale pozwoli botowi przyjąć użytkownikowe zapytanie i poprawnie je przetworzyć. Można powiedzieć, że to jedna z najważniejszych komend dla botów wszelkiego rodzaju. Koniecznie dodaj ignorowanie wiadomości od innych botów, wprowadzając

if (message.author.bot) return;

To pozwala uniknąć konfliktów przy jednoczesnym używaniu kilku botów na serwerze. Następnie trzeba sprawdzić prefiks, aby bot przyjął komendę lub ją zwrócił.

if (!message.content.startsWith(prefix)) return;

Sprawdzanie uruchamianych komend odbywa się za pomocą prostych operatorów if, a konstrukcja w naszym przypadku wygląda następująco:

const serverQueue = queue.get(message.guild.id);
if (message.content.startsWith(`${prefix}play`)) {
execute(message, serverQueue);
return;
} else if (message.content.startsWith(`${prefix}skip`)) {
skip(message, serverQueue);
return;
} else if (message.content.startsWith(`${prefix}stop`)) {
stop(message, serverQueue);
return;
} else {
message.channel.send('Musisz użyć istniejącej komendy!')
}

Zauważ, że funkcja send('') wysyła użytkownikowi wiadomość, jeśli wprowadzi nieprawidłową komendę. Tę wiadomość możesz edytować, zmieniając tekst w cudzysłowie.

Teraz bot nauczył się przyjmować komendy, ale na razie nie może z nimi interagować, ponieważ działania nie są określone. Najpierw dodamy komendę play, która odpowiada za odtwarzanie. Potrzebny jest do tego tablica o następującym kształcie:

const queue = new Map();

Wysyła wszystkie komendy do kolejki i sprawia, że piosenki grają tylko wtedy, gdy poprzednia się kończy.Następnie należy stworzyć funkcję, która będzie sprawdzać, czy użytkownik połączył się z kanałem głosowym i czy bot ma odpowiednie uprawnienia.

async function execute(message, serverQueue) {
const args = message.content.split(' ');
const voiceChannel = message.member.voiceChannel;
if (!voiceChannel) return message.channel.send('Aby słuchać muzyki, musisz być na kanale głosowym!');
const permissions = voiceChannel.permissionsFor(message.client.user);
if (!permissions.has('CONNECT') || !permissions.has('SPEAK')) {
return message.channel.send('Potrzebuję uprawnień, aby dołączyć i mówić na twoim kanale głosowym!');
}
}

Następnym krokiem jest podłączenie biblioteki ytdl, ponieważ ten bot będzie odczytywał tytuł piosenki z linku do YouTube, a następnie odtwarzał ją na serwerze. Wymaga to wstawienia tylko małego fragmentu kodu.

const songInfo = await ytdl.getInfo(args[1]);
const song = {
title: songInfo.title,
url: songInfo.video_url,
};

Następny blok kodu pozwoli zrozumieć, czy w kolejce są piosenki, czy można od razu połączyć się z kanałem głosowym i rozpocząć odtwarzanie.

if (!serverQueue) {

}else {
serverQueue.songs.push(song);
console.log(serverQueue.songs);
return message.channel.send(`${song.title} został dodany do kolejki!`);
}

Następnie znajduje się nieco skomplikowany dla początkujących programistów schemat kontraktu, który dodaje piosenkę do tablicy i wykonuje to samo przy każdym wprowadzeniu !play, sprawdzając kolejkę i wybierając odpowiednią akcję.Zwróć uwagę na przedstawione komentarze, które pozwalają zrozumieć wszystkie niuanse.

// Tworzenie kontraktu dla kolejki
const queueContruct = {
textChannel: message.channel,
voiceChannel: voiceChannel,
connection: null,
songs: [],
volume: 5,
playing: true,
};
// Ustawienie kolejki za pomocą naszego kontraktu
queue.set(message.guild.id, queueContruct);
// Wstawiamy utwór do naszej tablicy piosenek
queueContruct.songs.push(song);

try {
// Tutaj próbujemy dołączyć do czatu głosowego i zachować połączenie w obiekcie
var connection = await voiceChannel.join();
queueContruct.connection = connection;
// Wywołanie funkcji odtwarzania, aby rozpocząć piosenkę
play(message.guild, queueContruct.songs[0]);
} catch (err) {
// Wyświetlenie komunikatu o błędzie, jeśli bot nie może dołączyć do czatu głosowego
console.log(err);
queue.delete(message.guild.id);
return message.channel.send(err);
}

Z kolejką wszystko jasne, ale na razie piosenki nie są odtwarzane, ponieważ brakuje przypisania dla funkcji play. W tym celu do kodu należy dodać strukturę

function play(guild, song) {
const serverQueue = queue.get(guild.id);
if (!song) {
serverQueue.voiceChannel.leave();
queue.delete(guild.id);
return;
}
}

Odtwarzanie zaczyna się za pomocą funkcji playStream() i podanego linku do utworu.

const dispatcher = serverQueue.connection.playStream(ytdl(song.url))
.on('end', () => {
console.log('Muzyka się skończyła!');
// Usuwa zakończoną piosenkę z kolejki
serverQueue.songs.shift();
// Ponownie wywołuje funkcję odtwarzania z następną piosenką
play(guild, serverQueue.songs[0]);
})
.on('error', error => {
console.error(error);
});
dispatcher.setVolumeLogarithmic(serverQueue.volume / 5);

Jeśli chcesz dodać funkcję pomijania piosenek, na przykład, gdy postanowisz odtworzyć playlistę, najpierw zadbaj o odpowiednią komendę, a następnie dodaj taki fragment:

function skip(message, serverQueue) {
if (!message.member.voiceChannel) return message.channel.send('Musisz być na czacie głosowym, aby zatrzymać muzykę!');
if (!serverQueue) return message.channel.send('Nie ma piosenki, którą mógłbym pominąć!');
serverQueue.connection.dispatcher.end();
}

Podobnie działa funkcja zatrzymywania, ale blok kodu przyjmuje nieco inny wygląd:

function stop(message, serverQueue) {
if (!message.member.voiceChannel) return message.channel.send('
Musisz być na czacie głosowym, aby zatrzymać muzykę!');
serverQueue.songs = [];
serverQueue.connection.dispatcher.end();
}

Pamiętaj, że powyższe informacje są przeznaczone wyłącznie dla użytkowników, którzy już znają język JavaScript lub dopiero zaczynają jego naukę i postanowili stworzyć muzycznego bota.Jeśli nie posiadasz żadnych umiejętności i podane bloki kodu nic ci nie mówią, po prostu wklej cały kod źródłowy do pliku, zamień wiadomości od bota na rosyjskie (znajdują się w cudzysłowach) i zapisz zmiany.Cały kod źródłowy wygląda następująco:

Wygląd pełnego kodu źródłowego do stworzenia muzycznego bota w Discordzie

const Discord = require('discord.js');
const {
prefix,
token,
} = require('./config.json');
const ytdl = require('ytdl-core');
const client = new Discord.Client();
const queue = new Map();
client.once('ready', () => {
console.log('Gotowe!');
});
client.once('reconnecting', () => {
console.log('Ponowne łączenie!');
});
client.once('disconnect', () => {
console.log('Rozłączono!');
});
client.on('message', async message => {
if (message.author.bot) return;
if (!message.content.startsWith(prefix)) return;
const serverQueue = queue.get(message.guild.id);
if (message.content.startsWith(`${prefix}play`)) {
execute(message, serverQueue);
return;
} else if (message.content.startsWith(`${prefix}skip`)) {
skip(message, serverQueue);
return;
} else if (message.content.startsWith(`${prefix}stop`)) {
stop(message, serverQueue);
return;
} else {
message.channel.send('Musisz wpisać poprawne polecenie!')
}
});
async function execute(message, serverQueue) {
const args = message.content.split(' ');
const voiceChannel = message.member.voiceChannel;
if (!voiceChannel) return message.channel.send('Musisz być na kanale głosowym, aby odtwarzać muzykę!');
const permissions = voiceChannel.permissionsFor(message.client.user);
if (!permissions.has('CONNECT') || !permissions.has('SPEAK')) {
return message.channel.send('Potrzebuję uprawnień, aby dołączyć i mówić na twoim kanale głosowym!');
}
const songInfo = await ytdl.getInfo(args[1]);
const song = {
title: songInfo.title,
url: songInfo.video_url,
};
if (!serverQueue) {
const queueContruct = {
textChannel: message.channel,
voiceChannel: voiceChannel,
connection: null,
songs: [],
volume: 5,
playing: true,
};
queue.set(message.guild.id, queueContruct);
queueContruct.songs.push(song);
try {
var connection = await voiceChannel.join();
queueContruct.connection = connection;
play(message.guild, queueContruct.songs[0]);
} catch (err) {
console.log(err);
queue.delete(message.guild.id);
return message.channel.send(err);
}
} else {
serverQueue.songs.push(song);
console.log(serverQueue.songs);
return message.channel.send(`${song.title} został dodany do kolejki!`);
}
}
function skip(message, serverQueue) {
if (!message.member.voiceChannel) return message.channel.send('Musisz być na kanale głosowym, aby zatrzymać muzykę!');
if (!serverQueue) return message.channel.send('Nie ma żadnej piosenki, którą mógbym mógł pominąć!');
serverQueue.connection.dispatcher.end();
}
function stop(message, serverQueue) {
if (!message.member.voiceChannel) return message.channel.send('Musisz być na kanale głosowym, aby zatrzymać muzykę!');
serverQueue.songs = [];
serverQueue.connection.dispatcher.end();
}
function play(guild, song) {
const serverQueue = queue.get(guild.id);
if (!song) {
serverQueue.voiceChannel.leave();
queue.delete(guild.id);
return;
}
const dispatcher = serverQueue.connection.playStream(ytdl(song.url))
.on('end', () => {
console.log('Muzyka zakończona!');
serverQueue.songs.shift();
play(guild, serverQueue.songs[0]);
})
.on('error', error => {
console.error(error);
});
dispatcher.setVolumeLogarithmic(serverQueue.volume / 5);
}
client.login(token);

Po zakończeniu najlepiej zrestartować bota, po czym można przejść do swojego serwera, połączyć się z kanałem głosowym i wpisać dowolne polecenie interakcji, sprawdzając, jak na to zareaguje bot.

Zespół do weryfikacji kodu źródłowego do stworzenia muzycznego bota w Discordzie

Jeśli powyższa wersja bota ci nie odpowiada, możesz znaleźć kody źródłowe na tym samym GitHubie i skopiować je na swój komputer.Zasada rejestracji i uruchamiania pozostaje ta sama, dlatego w razie potrzeby po prostu edytuj gotowy kod, a następnie przystąp do testowania bota.

Poszukiwanie gotowych rozwiązań do stworzenia muzycznego bota w Discordzie

W tym artykule nie poruszyliśmy kwestii wdrożenia bota na hosting, jego rozpowszechniania wśród innych użytkowników, tworzenia awatara oraz korzystania z otwartych platform, z których można go autoryzować. Wszystko to to oddzielne procesy, którymi warto zająć się dopiero wtedy, gdy opanujesz umiejętność tworzenia botów i będziesz gotowy do rozpowszechniania projektów w sieci.