Discord ma doskonały interfejs API do pisania niestandardowych botów i bardzo aktywną społeczność botów. Dzisiaj przyjrzymy się, jak zacząć tworzyć własne.
Będziesz potrzebował trochę wiedzy programistycznej, aby zakodować bota, więc nie jest dla wszystkich, ale na szczęście istnieje kilka modułów popularnych języków, które bardzo ułatwiają. Będziemy używać najpopularniejszego, discord.js.
Udaj się do portalu botów Discord i stwórz nową aplikację.
Będziesz chciał zanotować identyfikator klienta i sekret (oczywiście, że powinieneś zachować tajemnicę). Jednak to nie jest bot, tylko "Aplikacja". Musisz dodać bota pod zakładką "Bot".
Zanotuj również token i zachowaj go w tajemnicy. W żadnym wypadku nie należy przypisywać tego klucza do Github. Twój bot zostanie zhakowany prawie natychmiast.
Aby uruchomić kod JavaScript poza stroną internetową, potrzebujesz węzła. Pobierz, zainstaluj i upewnij się, że działa w terminalu (lub w wierszu poleceń, ponieważ wszystko to powinno działać w systemach Windows). Domyślne polecenie to "węzeł".
Zalecamy również zainstalowanie narzędzia nodemon. Jest to aplikacja wiersza poleceń, która monitoruje kod twojego bota i automatycznie uruchamia się po zmianach. Możesz go zainstalować, uruchamiając następujące polecenie:
npm i -g nodemon
Potrzebujesz edytora tekstu. Możesz po prostu użyć notatnika, ale zalecamy Atom lub VSC.
Oto nasz "Hello World":
const Discord = require ('discord.js'); const client = new Discord.Client (); client.on ("ready", () => console.log ("Zalogowano jako $ client.user.tag!");); client.on ('message', msg => if (msg.content === 'ping') msg.reply ('pong');); client.login ("token");
Ten kod pochodzi z przykładu discord.js. Złam to.
client.on ("gotowe")
blok zostanie uruchomiony, gdy bot się uruchomi. Tutaj jest skonfigurowany tak, aby rejestrować jego nazwę na terminalu.client.on ("wiadomość")
blok będzie uruchamiany za każdym razem, gdy nowa wiadomość zostanie wysłana na dowolny kanał. Oczywiście musisz sprawdzić treść wiadomości i właśnie to Jeśli
blokuje. Jeśli komunikat po prostu mówi "ping", to odpowie "Pong!"Skopiuj ten kod, wklej token u dołu i zapisz go jako index.js
w dedykowanym folderze.
Udaj się do terminala i uruchom następujące polecenie:
nodemon --inspect index.js
Spowoduje to uruchomienie skryptu, a także uruchomi debuger Chrome, do którego można uzyskać dostęp, pisząc chrome: // inspect /
do Omnibara Chrome, a następnie otwierając "dedykowane devtools dla Węzła".
Teraz powinien po prostu powiedzieć "Zalogowany jako", ale tutaj dodałem linię, która rejestruje wszystkie odebrane obiekty wiadomości do konsoli:
Czym więc jest ten obiekt wiadomości? Rzeczywiście:
Przede wszystkim masz informacje o autorze i informacje o kanale, do których możesz uzyskać dostęp za pomocą msg.author i msg.channel. Polecam tę metodę rejestrowania obiektów w devtools Chrome Node i po prostu rozglądam się, aby zobaczyć, co działa. Możesz znaleźć coś interesującego. Tutaj, na przykład, bot loguje swoje odpowiedzi do konsoli, więc odpowiedzi bota wywołują client.on ("wiadomość")
. Więc zrobiłem spambot:
Uwaga: Ostrożnie z tym, ponieważ tak naprawdę nie chcesz zajmować się rekurencją.
Ta część jest trudniejsza niż powinna być. Musisz wziąć ten URL:
https://discordapp.com/oauth2/authorize?client_id=CLIENTID&scope=bot
Zastąp CLIENTID swoim identyfikatorem klienta, znajdującym się na karcie ogólnych informacji na stronie aplikacji. Gdy to zrobisz, możesz podać link do znajomych, aby dodać ich do swoich serwerów.
Poza podstawową konfiguracją wszystko inne zależy wyłącznie od Ciebie. Ale to nie byłby samouczek, gdybyśmy zatrzymali się w hello world, więc przejrzyjmy część dokumentacji, aby lepiej zrozumieć, co jest możliwe. Sugeruję, abyś przeczytał jak najwięcej, ponieważ jest bardzo dobrze udokumentowany.
Polecam dodanie console.log (klient)
na początek kodu i przyjrzenie się obiektowi klienta w konsoli:
Stąd możesz się wiele nauczyć. Ponieważ możesz dodać bota do wielu serwerów jednocześnie, serwery są częścią Gildie
obiekt mapy. W tym obiekcie znajdują się poszczególne Gildie (która jest nazwą API dla "serwera"), a te obiekty gildii mają listy kanałów, które zawierają wszystkie informacje i listy wiadomości. Interfejs API jest bardzo głęboki i może trochę potrwać, zanim się go nauczy, ale przynajmniej jest łatwy do skonfigurowania i rozpoczęcia nauki.