Ebben a cikkben beszélünk arról, hogy manuálisan hozzunk létre egy botot a zene lejátszására. Egyszerűen másolhatja a teljes benyújtott kódot, és módosíthatja magának, ha saját JavaScript készségeket használ. A bot hozta létre minket, de egy bizonyos szakaszában a felhasználó továbbra is szembe különböző problémákkal, ezért javasoljuk, hogy figyelmesen olvassa el nemcsak a használati utasítás, hanem a képernyőn megjelenő hibakódok ha vannak is ilyen.
Ha kiderül, hogy ez az anyag túl bonyolult az Ön számára, vagy más okokból nem alkalmas, használjon kész szabad botokat a zene lejátszásához. Az alábbi linkről szóló cikk részletes információkat talál róla, és megvalósíthatja a feladatot.
Olvass tovább:
Zenei bot hozzáadása a kiszolgálóhoz a Diszkordban
Játsszon zenét a boton keresztül a Diszkordban
1. lépés: Új alkalmazás létrehozása
A dobás minden egyes botjának regisztrálnia kell a fejlesztők hivatalos portálján. Tehát hozzáférést kapsz a botok engedélyeihez és általános viselkedéséhez kapcsolódó összes szükséges beállításhoz, akkor átmásolhatja a hivatkozást a személyes kiszolgálóra való jogosultságához, és használja az egyedülálló token-t, amelyre szükség van a parancsok további fejlesztéséhez.
Menjen a Discord Developer Portal hivatalos honlapjára
- Használd a fenti linkre, hogy megnyitja a portál főoldala fejlesztők be, hogy a viszály Personal Account, és kattintson az „Új alkalmazás”, hogy hozzon létre egy új alkalmazás.
- Írja be a nevét, tekintettel az egyediségre, mert ha sok azonos nevű bot van, akkor nem lesz lehetséges létrehozni - értesítést kell adni.
- A befejezés után nyissa meg a menüt a webhelyen, és válassza a "Bot" kategória lehetőséget.
- A "Build-A-bot" karakterlánc ellentétes, kattintson a "Bot hozzáadása" gombra.
- Erősítse meg a kiválasztott alkalmazás botjának hozzáadását.
- Egy ismerős menün keresztül menj «Oauth2-re».
- Ez a rész felelős a bot általános paramétereiért és annak engedélyezéséért. A "Scopes" blokkban jelölje meg a "bot" bekezdést.
- Az engedélyek listáját, biztos, hogy aktiválja a kapcsolatot hangcsatornák és képes beszélni, mivel ez szükséges a további műsorszolgáltatási zene.
- A bot képesnek kell lennie arra, hogy olvassa el, és üzenetet küldeni, ezért ne felejtsük el, hogy ezek a lehetőségek a szakasz szöveges chat engedélyeket. Természetesen egyszerre minden engedélyt adhat, de ez a megközelítés hihetetlen, különösen olyan esetekben, amikor egy tömeges felhasználó számára botot készít.
- Amint az engedélyezési beállítás befejeződött, másolja a linket a bot első engedélyének a szerveren, mert egyébként addig addig addig addig, amíg ki nem kapcsol.
- Kövesse ezt a linket, és válassza ki a tesztkiszolgálót, ahol meg szeretné ellenőrizni a botot.
- A sikeres engedélyezéssel kapcsolatos információk megerősítése és várjon.
Most van egy bot egy egyedi tokent, és a bot már hozzá a szerver, de offline üzemmódban. Elindításához néhány további műveletet kell végrehajtania a helyi számítógépen, hiszen, míg az offline működéshez nem töltődik ki az offline működéshez.
2. lépés: Előkészítő intézkedések
Az előkészítő intézkedések magukban foglalják a szükséges könyvtárak és fájlok létrehozását, az eszközök és függőségek telepítését. Ehhez semmi sem bonyolult, csak minden egyes akciót meg kell tennie, óvatosan a hibákat követve bármely szakaszban.
- Hozzon létre egy mappát a bot nevével. Választhat bármely helyet, de a felhasználó otthoni mappája a leginkább alkalmas erre.
- Hozzon létre két fájlt benne: "config.json" és "index.js". Az első telepíti a teljes konfiguráció a bot - az előtag és egyedi tokent, és a második - a teljes programkódot parancsok és a közös feladatok ennek az eszköznek.
- A bot munkájához node.js.j Ez az eszköz úgy van kialakítva, hogy parancsfájlokat indítsa el a helyi számítógépen. Kövesse az alábbi linket, és töltse le a telepítőt a Windows rendszerhez.
Letöltés node.js a hivatalos webhelyről
- Remélik, hogy töltse le a futtatható fájl futtatható, fuss, és adja át az egyszerű telepítési eljárás utasításait követve jelenik meg a képernyőn.
- Ezt követően nyissa meg a „Command Line” kényelmesen az Ön számára, például belépő CMD a „Run” segédprogram (kezdődik a Win + R gombokat kombináció).
- Telepítse a modult a Diszkord API-vel való munkához, amelyet "Discord.js" neveznek. Ehhez a konzol ablakban adja meg a NPM telepíteni discord.js ffmpeg-bináris opsscript YTDL-Core --save és nyomja meg az ENTER - így azonnal hozzá az összes szükséges függőségeket.
- Várjon a képernyőn megjelenő értesítések sikeres telepítésével, az aktuális konzol ablak bezárása nélkül. Ha hibák jelennek meg, tanulják meg a kódot, és használd a keresőmotort, hogy megtalálják a munka döntését a fórumokon vagy a hivatalos weboldalon.
Ennek eredményeképpen a felhasználó otthoni mappája a NODE.JS összetevőhöz kapcsolódó fájlokat kell megjelenítenie, és a modul után hozzáadva. Indítsa újra a számítógépet úgy, hogy a bot ne legyen nehézségei, majd menjen a következő lépésre.
3. lépés: Bot konfigurációs fájl szerkesztése
Azt már tudjuk, hogy a teremtett bot konfigurációs fájl lesz minden egy pár sort a kód, amely felelős a használt előtag (szimbólum, mielőtt a parancsot a szerver) és egy egyedi azonosító, amely úgy határozza meg az alkalmazás az API. Teljesíti az összes további intézkedéseket, javasoljuk letölteni egy programot JS szintaxis támogatása vagy egyéb speciális szövegszerkesztő, ha ez még nem történt meg korábban. Az alábbi linkről szóló cikk megismerheti a rendelkezésre álló megfelelő megoldásokat.
Bővebben: A fejlesztési környezet kiválasztása a programozáshoz
Amint telepítve van a számítógépre, és készen áll a munkára, biztonságosan kezdheti szerkeszteni a konfigurációs fájlt, beírhatja a felhasználói adatokat.
- Futtassa a config.js fájlt szövegszerkesztőben vagy fejlesztési környezetben, illessze be az alábbi kódot.
{
"Prefix": "!",
"Token": "Your-toka"
}
Módosítsa az előtagot kettős idézetekben a kívánt vagy hagyja ki a felkiáltójel. Egy példa egy parancsra, amely ezt a jelet használja: Játssz.
- Menj a botodra a fejlesztési portálon, talál egy egyedülálló token ott és másolja meg.
- Helyezze be a toka-ellenőrzést a kettős idézetek törlése nélkül.
- Mentse a módosításokat, és zárja be ezt a fájlt. By the way, ugyanazt a műveletet végezheti egy szabványos "notebook" segítségével.
Ezen a műveleteken a konfigurációs fájl befejeződött, már nincs több kódot kell írnia. Zárja be, anélkül, hogy elfelejtené, hogy mentse a szerkesztéseket, és folytassa a zene lejátszására szolgáló botot.
4. lépés: Trial indítási bot
Először is meg kell győződnünk arról, hogy a bot általában a kiszolgálón fut, és az online módba kerül, meg kell írnia a kód fő részét az indexig.
- A fejlesztési környezetben vagy a kiválasztott szövegszerkesztő segítségével nyissa meg az említett fájlt a szerkesztéshez.
- Helyezze be a függőségi telepítésért felelős kódblokkot, és jelzi az alkalmazott modulokat:
CONST DISCORD = szükséges ("diszkrét.js");
const {
Előtag,
jelképes
} = Szükséges ('./ config.json);
const ytdl = szükség ("ytdl-core");
- A korábban meghatározott tokenek segítségével hozzon létre egy ügyfél és bejelentkezés, amelyet csak két egyszerű vonal beírása:
CONST CLIENT = új Discord.Client ();
Ügyfél.login (token);
- Csak az utolsó alapvető vonalak megadása a bot hallgatásához.
Ügyfél.oncce ("Ready", () => {
Konzol.log ("Ready!");
});
Ügyfél.oncce ("újracsatlakoztatás", () => {
Konzol.log ("újracsatlakoztatás!");
});
Client.Once ("leválasztás", () => {
Konzol.log ("leválasztás!");
});
- Bontsa ki a "Fájl" menüt és mentse el a módosításokat.
- Futtassa újra a konzolt kényelmes módon.
- Adja meg a csomópont index.js parancsot a bot script elindításához.
- Ha a fájlok nem találhatók a felhasználó otthoni könyvtárában, miután a csomópontnak meg kell adnia egy teljes megengedéseket.
- A bot sikeres elindítását a "Ready!" Felirat jelzi.
- Nyissa meg a viszályt, és győződjön meg róla, hogy a bot az "Online" állapotához ment.
5. lépés: A zenei bot fő kódolójának írása
A legösszetettebb folyamat továbbra is - a zenei bot alapkódjának megírása. Van egy listát a feladatokról, amelyeket végre kell hajtani: az üzenetek és feldolgozási parancsok olvasása, dal neve vagy címének meghatározása, a hangcsatornához és a lejátszáshoz való csatlakozáshoz. Engedélyek mindezen botonként, így csak a JavaScript funkciókat használó műveleteket kell megadnia, amelyet ugyanabban az "index.js" fájlban végeznek.
Adjon hozzá egy egyszerű funkciót az üzenetek olvasásához:
Client.on ('Message', Async Message => {
}
Ez csak két vonalból áll, de lehetővé teszi, hogy a bot egyéni lekérdezést végezzen és megfelelően feldolgozza. Azt mondhatjuk, hogy ez az egyik legfontosabb csapat bármely típusú botok számára. Győződjön meg róla, hogy a más botokból származó üzenetek figyelmen kívül hagyása
ha (message.author.bot) visszatér;
Ez elkerüli a konfliktusokat, miközben több botot használ a kiszolgálón egyidejűleg. Ezután szükség lesz az előtag ellenőrzésére, hogy a bot elfogadta a csapatot, vagy visszaadta.
Ha (! Message.content.Startsswith (előtag)) visszatér;
Az elindított parancsok ellenőrzése egyszerű, ha az üzemeltetők, és a formatervezésünk így néz ki:
Const serverqueue = queue.get (message.guild.id);
ha (üzenet.content.startswith (`$ {prefix} PLAY))) {
Végrehajtás (üzenet, szervereue);
Visszatérés;
} Más, ha (üzenet.content.startswith (`$ {prefix} Skip))) {
Skip (üzenet, szervereue);
Visszatérés;
} Más, ha (üzenet.content.startswith (`$ {prefix} stop))) {
Stop (üzenet, szervereue);
Visszatérés;
} MÁS {
Message.channel.send ("A meglévő parancsot kell használnia!")
}
Kérjük, vegye figyelembe, hogy a Send ('') függvény elküldi az üzenetet a felhasználónak, ha hirtelen belép a nem működő parancsra. Ezt az üzenetet szerkesztheti, megváltoztathatja a feliratot idézőjelben.
Most a bot megtanulta parancsokat, de addig, amíg meg nem léphet velük, mivel a műveletek nincsenek megadva. Először adja hozzá a lejátszási parancsot, amely felelős a lejátszásért. Ehhez egy tömb szükséges a következő formával:
CONST QUEUE = Új térkép ();
Elküldi az összes parancsot a sorban, és a dalokat csak akkor játssza meg, ha az előző vége. Ezután szükség lesz olyan funkció létrehozására, amely ellenőrzi, hogy a felhasználó csatlakozik-e a hangcsatornához, és hogy a bot a megfelelő jogosultságok.
Async funkció végrehajtása (üzenet, szervereue) {
const args = message.content.split ('');
Const voicechannel = üzenet.ember.voiceChannel;
Ha (! VOICECHANNEL) VISSZATÉRÍTÉSE.CHANNEL.SEND ('A zene hallgatásához, hanem hangcsatornában kell lennie!);
const Engedélyek = VoiceChannel.permissionSFOR (Message.Client.user);
Ha (! Permissions.has ('Connect') ||! Permissions.has ("Beszélgetés")) {
Visszatérő üzenet.Cannel.Send ("Megengedem, hogy csatlakozzon és beszéljek a hangcsatornádhoz!");
}
}
Következő művelet - Az YTDL könyvtár összekapcsolása, mivel ez a bot elolvassa a dal nevét a Linken a YouTube-on, majd a kiszolgálón lejátszott. Ez egy kis kódbetét beillesztéséhez.
Const songinfo = várja az ytdl.getinfo-t (Args [1]);
Const dal = {
Cím: Songinfo.title,
URL: Songinfo.video_url,
};
A következő kódrészletet lehetővé teszi, hogy megértsük, hogy vannak dalok a sorban, vagy akkor azonnal csatlakozni a hangcsatorna és indítsa el a lejátszást.
Ha (! ServerQueue) {
} MÁS {
Serverqueue.songs.push (dal);
Console.log (Serverqueue.songs);
Visszatérő üzenet.CHANNEL.SEND (`$ {song.title} hozzá lett adva a sorba!
}
Ezután egy kicsit bonyolult a kezdő programozók számára, amely egy olyan szerződéses rendszert ad hozzá, amely egy tömbbe kerül, és minden alkalommal, amikor belépsz! Figyeljen a bemutatott észrevételekre, amelyek lehetővé teszik az összes finomság kezelését.
// létrehozása a sorban
Const queueconruct = {
Textchannel: Message.Channel,
VOICECHANNEL: VOICECHANNEL,
Csatlakozás: null,
Dalok: [],
Hangerő: 5,
Játék: Igaz,
};
// Sorozat a szerződésünkkel
queue.set (message.guild.id, queueconruct);
// Helyezze be a készítményt a dalok tömbben
queueconruct.songs.push (dal);
próbálja meg {
// itt próbálunk csatlakozni a hangos csevegéshez, és mentjük a kapcsolatot az objektumban
var csatlakozás = VOICECECHANNEL.JOIN ();
queueconruct.connection = kapcsolat;
// A lejátszási funkció hívása a dal elindításához
Play (message.guild, queueconruct.songs [0]);
} Fogás (hibás) {
// hibaüzenet jelenik meg, ha a bot nem csatlakozik a hangcsevegéshez
Konzol.log (hibás);
queue.delete (message.guild.id);
Visszaadása.Cannel.send (hibás);
}
A sorban minden tiszta, de még mindig nem játszik dalokat, mert nincs hozzárendelése a lejátszási funkcióhoz. Ehhez a kódban meg kell adni a struktúrát
Funkció lejátszása (céh, dal) {
CONST SERVERQUEUE = QUEUE.GET (GUILD.ID);
Ha (! Song) {
Serverqueue.voicechannel.leave ();
Queue.Delete (Guild.ID);
Visszatérés;
}
}
A lejátszás elindul a Playstream () funkcióval és a megadott link segítségével a pályára.
Const dispatcher = serverqueue.connection.playstream (ytdl (song.url)))
.on ("vége", () => {
Konzol.log ("zene vége!");
// eltávolítja a kész dalt a sorból
serverqueue.songs.Shift ();
// ismét a lejátszási funkciót a következő dallal okozza
Play (céh, kiszolgálásique.songs [0]);
})
.on ("hiba", hiba => {
Konzol.Error (hiba);
});
dispatcher.setvolumelogarithmic (serverqueue.volume / 5);
Ha szeretné hozzáadni egy dal átugrás funkciót, például amikor lejátszási lista lejátszása, először vigyázzon a megfelelő parancsra, majd adjon hozzá egy ilyen töredéket:
Funkció Skip (üzenet, ServerQueue) {
Ha (! Message.member.voiceChannel) Visszatérő üzenet. Vissza.
Ha (! ServerQueue) visszaadja az üzenetet.Cannel.send ('nincs dal, amit tudnék kihagyni! ");
Serverqueue.connection.dispatcher.end ();
}
Körülbelül ugyanaz a rendszer is működik a stop funkció, de a kóddal rendelkező blokk kissé eltérő megjelenést szerez:
Funkciómegálló (üzenet, szervereue) {
Ha (! Üzenet.ember.voiceChannel) Visszatérő üzenet.CHANNEL.SEND ('
A zene leállításához a hangcsatornában kell lennie! ");
Serverqueue.songs = [];
Serverqueue.connection.dispatcher.end ();
}
Fontolja meg, hogy a fent bemutatott információk kizárólag azoknak a felhasználóknak felelnek meg, akik már ismerik a JavaScript-nyelvet, vagy csak tanulmányoznak, és úgy döntenek, hogy zenei botot hoznak létre. Ha nem a saját készségeit általában és a megadott blokkok a kóddal, akkor egyáltalán nem mond semmit, egyszerűen illessze be a teljes forráskódot a fájlba, cserélje ki az üzeneteket az oroszul (idézőjelek) változtatások. Minden forráskód ilyen jellegű:
CONST DISCORD = szükséges ("diszkrét.js");
const {
Előtag,
jelképes
} = Szükséges ('./ config.json);
const ytdl = szükség ("ytdl-core");
CONST CLIENT = új Discord.Client ();
CONST QUEUE = Új térkép ();
Ügyfél.oncce ("Ready", () => {
Konzol.log ("Ready!");
});
Ügyfél.oncce ("újracsatlakoztatás", () => {
Konzol.log ("újracsatlakoztatás!");
});
Client.Once ("leválasztás", () => {
Konzol.log ("leválasztás!");
});
Client.on ('Message', Async Message => {
ha (message.author.bot) visszatér;
Ha (! Message.content.Startsswith (előtag)) visszatér;
Const serverqueue = queue.get (message.guild.id);
ha (üzenet.content.startswith (`$ {prefix} PLAY))) {
Végrehajtás (üzenet, szervereue);
Visszatérés;
} Más, ha (üzenet.content.startswith (`$ {prefix} Skip))) {
Skip (üzenet, szervereue);
Visszatérés;
} Más, ha (üzenet.content.startswith (`$ {prefix} stop))) {
Stop (üzenet, szervereue);
Visszatérés;
} MÁS {
Message.channel.send ("Meg kell adnia egy érvényes parancsot!")
}
});
Async funkció végrehajtása (üzenet, szervereue) {
const args = message.content.split ('');
Const voicechannel = üzenet.ember.voiceChannel;
Ha (! VOICECHANNEL) Visszatérő üzenet.
const Engedélyek = VoiceChannel.permissionSFOR (Message.Client.user);
Ha (! Permissions.has ('Connect') ||! Permissions.has ("Beszélgetés")) {
Visszatérő üzenet.Cannel.Send ('Meg kell adnom az engedélyeket, hogy csatlakozzon és beszéljen a hangcsatornában!');
}
Const songinfo = várja az ytdl.getinfo-t (Args [1]);
Const dal = {
Cím: Songinfo.title,
URL: Songinfo.video_url,
};
Ha (! ServerQueue) {
Const queueconruct = {
Textchannel: Message.Channel,
VOICECHANNEL: VOICECHANNEL,
Csatlakozás: null,
Dalok: [],
Hangerő: 5,
Játék: Igaz,
};
queue.set (message.guild.id, queueconruct);
queueconruct.songs.push (dal);
próbálja meg {
var csatlakozás = VOICECECHANNEL.JOIN ();
queueconruct.connection = kapcsolat;
Play (message.guild, queueconruct.songs [0]);
} Fogás (hibás) {
Konzol.log (hibás);
queue.delete (message.guild.id);
Visszaadása.Cannel.send (hibás);
}
} MÁS {
Serverqueue.songs.push (dal);
Console.log (Serverqueue.songs);
Visszatérő üzenet.CHANNEL.SEND (`$ {song.title} hozzá lett adva a sorba!
}
}
Funkció Skip (üzenet, ServerQueue) {
Ha (! Message.Member.voiceChannel) Visszatérő üzenet.CHANNEL.SEND ('Hangcsatornában kell beállítani a zenét!');
Ha (! ServerQueue) visszaadja az üzenetet.Cannel.send ('nincs dal, amit tudnék kihagyni!
Serverqueue.connection.dispatcher.end ();
}
Funkciómegálló (üzenet, szervereue) {
Ha (! Message.Member.voiceChannel) Visszatérő üzenet.CHANNEL.SEND ('Hangcsatornában kell beállítani a zenét!');
Serverqueue.songs = [];
Serverqueue.connection.dispatcher.end ();
}
Funkció lejátszása (céh, dal) {
CONST SERVERQUEUE = QUEUE.GET (GUILD.ID);
Ha (! Song) {
Serverqueue.voicechannel.leave ();
Queue.Delete (Guild.ID);
Visszatérés;
}
Const dispatcher = serverqueue.connection.playstream (ytdl (song.url)))
.on ("vége", () => {
Konzol.log ("Zene véget ért!");
serverqueue.songs.Shift ();
Play (céh, kiszolgálásique.songs [0]);
})
.on ("hiba", hiba => {
Konzol.Error (hiba);
});
dispatcher.setvolumelogarithmic (serverqueue.volume / 5);
}
Ügyfél.login (token);
A befejezés után jobb újraindítani a botot, amely után lépjen a kiszolgálóra, csatlakoztassa a hangcsatornához, és adja meg az interakció bármely parancsát, ellenőrizze, hogyan reagál a botra.
Ha a bot fenti változata nem megfelelő az Ön számára, megtalálhatja a forráskódokat ugyanazon a githubon, és másolja őket a számítógépre. A regisztráció és a bevezetés elve ugyanaz marad, ezért szükség esetén egyszerűen módosítsa a kész kódot, majd folytassa a bot tesztelését.
Ebben a cikkben, azt nem befolyásolja a kisülés egy bot volt a házigazdája, terjesztése körében a többi felhasználó, ami egy avatar és a nyílt helyek, ahonnan lehet engedélyezni. Mindezek külön folyamatok, amelyek csak akkor kell bekapcsolódniuk, ha meg kell adnod a készségedet, hogy botokat hozzanak létre, és készen álljanak a hálózaton lévő projektek terjesztésére.