V tomto článku budeme hovořit o ručním vytváření bota pro přehrávání hudby na discord. Můžete jednoduše zkopírovat celý předložený kód a upravit jej pro sebe, pokud vlastníte JavaScript dovednosti. Bot byl vytvořen u nás, ale v některých fázích může uživatel ještě čelit různým problémům, takže doporučujeme pečlivě číst nejen naše pokyny, ale také se objevit na chybových kódech obrazovky, pokud jsou takové.
Pokud se ukáže, že tento materiál je pro vás příliš komplikovaný nebo není vhodný pro jiné důvody, použijte hotové bezplatné roboty pro přehrávání hudby. Článek na níže uvedeném odkazu najdete podrobné informace o tom a můžete realizovat úkol.
Přečtěte si více:
Přidání hudebního bota na server ve vzdálenosti
Přehrajte hudbu přes bot v nesouhlasu
Krok 1: Vytvoření nové aplikace
Každý bot pro vyřazení musí být registrován na oficiálním portálu pro vývojáře. Takže získáte přístup ke všem nezbytným nastavením spojeným s oprávněními a obecným chováním bota, můžete kopírovat odkaz na jeho autorizaci na osobním serveru a použít jedinečný token, který je potřebný pro další rozvoj příkazů.
Jděte na oficiální stránky Discord Developer Portal
- Pomocí výše uvedeného odkazu otevřete hlavní stránku portálu pro vývojáře, přihlaste se k osobnímu účtu Discord a klikněte na "Nová aplikace" pro vytvoření nové aplikace.
- Zadejte jeho jméno, vzhledem k jedinečnosti, protože pokud existuje mnoho botů se stejným názvem, nebude možné jej vytvořit - oznámení o přejmenování.
- Po dokončení otevřete nabídku na webu a vyberte kategorii "BOT".
- Naproti řetězci "build-a-bot" klikněte na "Přidat bot".
- Potvrďte přidání bota pro vybranou aplikaci.
- Přes známé menu, přejděte na «OAuth2».
- Tato část je zodpovědná za obecné parametry BOT a jeho povolení. V bloku "Scopes" označte odstavec "BOT".
- V seznamu oprávnění nezapomeňte aktivovat připojení k hlasovým kanálům a schopnost hovořit, protože je nutná pro další vysílání hudby.
- Bot by měl být schopen číst a odesílat zprávy, takže nezapomeňte povolit tyto možnosti v sekci s oprávněními textového chatu. Samozřejmě můžete poskytnout všechna oprávnění najednou, ale tento přístup je neuvěřitelný, zejména v případech, kdy se bota pro masový uživatel.
- Jakmile je nastavení oprávnění dokončeno, zkopírujte odkaz na první autorizaci bota na serveru, protože jinak přidejte, dokud se nezobrazí.
- Postupujte podle tohoto odkazu a vyberte zkušební server, kam chcete zkontrolovat bot.
- Potvrďte zachycení a počkejte na informace o úspěšném povolení.
Nyní máte bot s jedinečným tokenem a bot již byl přidán na server, ale zatímco v režimu offline. Chcete-li to spustit, bude muset provést několik dalších akcí na místním počítači, protože i když nevybereme boting boting pro operaci offline.
Krok 2: Přípravné akce
Přípravné akce zahrnují vytvoření požadovaných adresářů a souborů, instalace nástrojů a závislostí pro ně. V tom není nic složitého, stačí provést každou akci, pečlivě sledovat chyby v libovolné fázi.
- Vytvořte složku se jménem BOT. Můžete si vybrat libovolné místo, ale domovská složka uživatele je pro to nejvhodnější.
- Vytvořte dva soubory v něm: "config.json" a "index.js". V první instalaci celkovou konfiguraci bota - jeho předpon a jedinečný token a ve druhém - celý programový kód s příkazy a běžné úkoly tohoto nástroje.
- Pro práci bota bude potřebovat node.js. Tento nástroj je určen pro spuštění skriptů v místním počítači. Postupujte podle níže uvedeného odkazu a stáhněte si instalační program pro Windows.
Stáhnout uzl.js z oficiální stránky
- Očekávejte, že stáhnete spustitelný soubor spustitelného souboru, spusťte jej a předejte jednoduchou instalaci postupu podle pokynů zobrazených na obrazovce.
- Poté otevřete "příkazový řádek" pohodlné pro vás například zadávání cmd v nástroji "Spustit" (spustí kombinaci kláves Win + R).
- Nainstalujte modul pro práci s rozhraním API, která se nazývá "Discord.js". Chcete-li to provést, v okně konzoly, které se otevře, zadejte instalační disk NPM Discord.JS FFMPEG-binární soubory OPSScript Ytdl-Core --Save a stiskněte ENTER - Takže okamžitě přidejte všechny potřebné závislosti.
- Počkejte na oznámení na obrazovce na úspěšné instalaci bez zavření aktuálního okna konzoly. Pokud se objeví chyby, naučte se jejich kód a používat vyhledávače najít pracovní rozhodnutí na fórech nebo oficiálních stránkách.
Výsledkem je, že domovská složka uživatele by měla zobrazit soubory spojené s komponentou Node.js a přidán po modulu. Restartujte počítač tak, aby bot nemá potíže se spuštěním a přejděte na další krok.
Krok 3: Úpravy konfiguračního souboru BOT
Už víte, že v konfiguračním souboru vytvořeného botu bude veškerý pár řádků kódu, který je zodpovědný za použitou předponu (symbol před vstupem do příkazu na serveru) a jedinečným tokenem, který definuje aplikaci v API. Pro splnění všech dalších akcí doporučujeme stáhnout program s podporou Syntaxe JS Syntaxe nebo libovolným pokročilým textovým editorem, pokud to nebylo provedeno dříve. Článek na níže uvedeném odkazu se budete moci seznámit s dostupnými vhodnými řešeními.
Přečtěte si více: výběr vývojového prostředí pro programování
Jakmile je nainstalován na počítači a připraven k práci, můžete bezpečně začít upravovat konfigurační soubor, zadání uživatelských dat.
- Spusťte soubor config.js prostřednictvím textového editoru nebo vývojového prostředí, vložte níže uvedený kód.
{
"Předpona": "!",
"Token": "your-tocke"
}
Změňte předponu ve dvojitých uvozovkách na požadovanou nebo ponechte vykřičník. Příklad příkazu pomocí tohoto znaku vypadá takto :! Hrát.
- Jděte do bota na vývojovém portálu, najděte tam jedinečný token a zkopírujte jej.
- Namísto toho vložte svou inspekci s toke bez vymazání dvojitých nabídek.
- Uložte změny a zavřete tento soubor. Mimochodem, můžete provést stejnou akci prostřednictvím standardního "notebooku".
Na těchto akcích s konfiguračním souborem již není třeba předepsat jeden řádek kódu. Zavřete ji, aniž byste zapomněli uložit úpravy, a pokračujte dalším psaní bota pro přehrávání hudby.
Krok 4: Zkušební spuštění bot
Za prvé, musíme se ujistit, že bot je obecně spuštěn na serveru a přejde do režimu online, bude nutné napsat hlavní část kódu k index.js a potom pomocí node.js spustit.
- Prostřednictvím vývojového prostředí nebo vybraného textového editoru otevřete uvedený soubor pro editaci.
- Vložte blok kódu, který je zodpovědný za instalaci závislosti a označuje použité moduly:
CONST DISCORDE = Vyžadovat ('discord.js');
CONST {
Předpona,
žeton
} = Vyžadovat ('./ config.json');
CONST YTDL = Vyžadovat ('Ytdl-Core');
- S pomocí dříve specifikovaných tokenů vytvořte klienta a přihlášení, které se provádí zadáním pouze dvou jednoduchých řádků:
CONST klient = nové discord.Client ();
Klient.login (token);
- Zůstane pouze určit poslední základní řádky pro poslechu bota.
Client.once ('Ready', () => {
Console.log ('ready!');
});
Client.once ('opětovné připojení', () => {
Console.log ('Znovu připojeno!');
});
Klient.once ('odpojení', () => {
Console.log ('odpojení!');
});
- Rozbalte nabídku "Soubor" a uložte provedené změny.
- Spusťte konzolu znovu pohodlným způsobem.
- Zadejte příkaz uzel index.js spustit skript bot.
- Pokud jeho soubory nejsou umístěny v domovském adresáři uživatele, po uzlu bude muset určit kompletní, nechat je.
- Úspěšné spuštění bota je označeno zobrazeným nápisem "Ready!".
- Otevřete nesouhlas a ujistěte se, že bot šel do stavu "online".
Krok 5: Psaní hlavního kodéru hudebního bota
Nejkomplexnější proces zůstal - psaní základního kódu hudebního botu. Existuje seznam úkolů, které musí provádět: čtení zpráv a příkazy zpracování, definice názvu písně nebo jeho adresu, připojení k hlasovému kanálu a přehrávání. Oprávnění pro všechny tento bot je, takže si prostě musíte určit akce pomocí funkce JavaScriptu, které se provádí ve stejném souboru "index.js".
Přidat jednoduchou funkci pro čtení zpráv:
Client.on ("Zpráva", Async Message => {
}
Skládá se pouze z dvou řádků, ale umožní botu přijmout vlastní dotaz a správně zpracovávat. Lze říci, že se jedná o jeden z nejdůležitějších týmů pro roboty všech typů. Ujistěte se, že přidáte ignorování zpráv z jiných botů zadáním
Pokud (Message.Author.bot) návrat;
To se vyhýbá konfliktům při současném používání více botů na serveru. Dále bude nutné zkontrolovat předponu tak, aby byl bot přijal tým nebo jej vrátil.
Pokud (!! Message.Content.Startswith (předpona)) návrat;
Kontrola spuštěných příkazů se provádí pomocí jednoduchých, pokud operátorů, a design v našem případě vypadá takto:
CONST ServerQueue = Queue.get (Message.Guild.id);
if (message.Content.startswith (`$ {prefix} play")) {
Execute (zpráva, Serverqueue);
Vrátit se;
} Jinak, pokud (Message.Content.Startswith (`$ {prefix} skip`)) {
Přeskočit (zpráva, Serverqueue);
Vrátit se;
} Jinak, pokud (Message.Content.startith (`$ {prefix} stop`)) {
STOP (zpráva, serverqueue);
Vrátit se;
} Else {
Message.Channel.Send ('Musíte použít existující příkaz!')
}
Vezměte prosím na vědomí, že funkce odesílání ('') odešle zprávu uživateli, pokud náhle vstupuje do nepracovního příkazu. Tato zpráva můžete upravovat, změnit nápis v uvozovkách.
Nyní se bot naučil vzít příkazy, ale dokud s nimi nemůže komunikovat, protože akce nejsou specifikovány. Nejprve přidejte příkaz PLAY, který je zodpovědný za přehrávání. Pro něj je potřeba pole s následující formou:
CONST QUEUE = Nová mapa ();
Posílá všechny příkazy ve frontě a zpřístupní skladby pouze tehdy, když končí předchozí. Dále bude nutné vytvořit funkci, která zkontroluje, zda uživatel připojen k hlasový kanál a zda je BOT odpovídajícími oprávněními.
Async Funkce Execute (zpráva, Serverqueue) {
CONST args = message.Content.Split ('');
CONST VOICCHANNEL = Message.member.voicechannel;
Pokud (! Voicechannel) Return Message.Channel.Send ("Chcete-li poslouchat hudbu, musíte být v hlasovém kanálu!");
Koncová oprávnění = voicechannel.permissionsfor (message.Client.user);
IF (!! Oprávnění ('Connect') ||! Oprávnění ('hovno')) {
Return Message.Channel.Send ('Potřebuji povolení se připojit a mluvit hlasovým kanálem!');
}
}
Další akce - Připojení knihovny YTDL, protože tento bot bude číst název skladby na odkaz z YouTube, po kterém se přehraje na serveru. Bude to trvat, chcete-li vložit malý kus kódové vložky.
CONST SongInfo = čeká ytdl.getInfo (args [1]);
CONST SONG = {
Název: SongInfo.title,
URL: SongInfo.video_Url,
};
Další blok kódu vám umožní pochopit, zda jsou písně ve frontě nebo se můžete okamžitě připojit k hlasovému kanálu a spusťte přehrávání.
Pokud (! ServerQueue) {
} Else {
Serverqueue.songs.Push (Song);
Console.log (serverqueuee.songs);
Return Message.Channel.Send.Send (`$ {Song.title} byl přidán do fronty!`);
}
Dále přichází trochu komplikovaná pro začínající programátoři smlouvy, který přidává píseň do pole a dělá to samé při každém zadání! Play, kontrola fronty a výběru správné akce. Věnujte pozornost komentářům, které vám umožní vypořádat se se všemi subtleties.
// vytvoření smlouvy o frontě
Const queueconstruct = {
Textchannel: Message.Channel,
VoiceChannel: Voicechannel,
Připojení: null,
Písně: [],
Objem: 5,
Hra: TRUE,
};
// Nastavte frontu s naší smlouvou
Queue.set (Message.Guild.id, QueueControl);
// vložte kompozici do naší řady písní
Queueconstruct.cz.Songs.Push (Song);
Snaž se {
// Zde se snažíme vstoupit do hlasového chatu a uložení spojení v objektu
Var Connection = Await Voicechannel.Join ();
Queueconstruct.connection = připojení;
// Volání funkce přehrávání pro spuštění skladby
Play (Message.Guild, QueueConstruction.songs [0]);
} Catch (Err) {
// zobrazí chybová zpráva, pokud se bot nemůže připojit k hlasovému chatu
Console.log (err);
Queue.delete (Message.Guild.id);
Vrátit zprávu.channel.Send (err);
}
S frontou je vše jasné, ale stále nehraje skladby, protože pro funkci přehrávání není žádná přiřazení. Chcete-li to provést v kódu, je nutné přidat strukturu
Funkce přehrávání (Guild, Song) {
CONST ServerQueue = Queue.get (Guild.ID);
Pokud (!! Píseň) {
Serverqueuee.voicechannel.leave ();
Queue.delete (guild.id);
Vrátit se;
}
}
Přehrávání spustí pomocí funkce PlayStream () a zadaného odkazu na stopu.
CONST dispečer = serverqueue.connection.playStream (ytdl (song.url))
.ON ('konec', () => {
Console.log ('Hudba je u konce!');
// odstraní hotovou píseň z fronty
serverqueuee.songs.shift ();
// opět způsobuje funkci přehrávání s následující skladbou
Hrát (Guild, ServerQueuee.songs [0]);
})
.ON ('ERROR', ERROR => {
Console.error (chyba);
});
Dispatcher.SetVolumelogaritmic (Serverqueuee.Volume / 5);
Pokud chcete přidat funkci Song Skip, například, když se rozhodnete přehrát seznam stop, nejprve se postarat o příslušný příkaz a přidejte takový fragment:
Funkce přeskočit (zpráva, serverqueue) {
Pokud (!! Message.member.voicechannel) Return Message.Channel.Send ('Měli byste být v hlasovém kanálu zastavit hudbu!');
Pokud (! ServerQueue) vrátí zprávu.channel.Send ('Neexistuje žádná píseň, kterou jsem mohl přeskočit! ");
Serverqueue.connection.dispatcher.end ();
}
Přibližně stejného schématu také funguje funkce STOP, ale blok s kódem získává mírně odlišný vzhled:
Funkce Stop (zpráva, Serverqueue) {
Pokud (!! Message.member.voicechannel) Return Message.Channel.Send ('
Musíte být v hlasovém kanálu zastavit hudbu! ');
Serverqueuee.songs = [];
Serverqueue.connection.dispatcher.end ();
}
Zvažte, že výše uvedené informace jsou vhodné výhradně pro ty uživatele, kteří jsou již obeznámeni s JavaScriptovým jazykem nebo se zabývají studiem a rozhodl se vytvořit hudební bot. Pokud nemáte vlastní dovednosti obecně a zadané bloky s kódem, kterého vůbec neříkáte, jednoduše vložte celý zdrojový kód do souboru, vyměňte zprávy z bot do rusky (jsou v citacích) a uložte Změny. Všechny zdrojové kód má tento druh:
CONST DISCORDE = Vyžadovat ('discord.js');
CONST {
Předpona,
žeton
} = Vyžadovat ('./ config.json');
CONST YTDL = Vyžadovat ('Ytdl-Core');
CONST klient = nové discord.Client ();
CONST QUEUE = Nová mapa ();
Client.once ('Ready', () => {
Console.log ('ready!');
});
Client.once ('opětovné připojení', () => {
Console.log ('Znovu připojeno!');
});
Klient.once ('odpojení', () => {
Console.log ('odpojení!');
});
Client.on ("Zpráva", Async Message => {
Pokud (Message.Author.bot) návrat;
Pokud (!! Message.Content.Startswith (předpona)) návrat;
CONST ServerQueue = Queue.get (Message.Guild.id);
if (message.Content.startswith (`$ {prefix} play")) {
Execute (zpráva, Serverqueue);
Vrátit se;
} Jinak, pokud (Message.Content.Startswith (`$ {prefix} skip`)) {
Přeskočit (zpráva, Serverqueue);
Vrátit se;
} Jinak, pokud (Message.Content.startith (`$ {prefix} stop`)) {
STOP (zpráva, serverqueue);
Vrátit se;
} Else {
Message.Channel.Send ('Musíte zadat platný příkaz!')
}
});
Async Funkce Execute (zpráva, Serverqueue) {
CONST args = message.Content.Split ('');
CONST VOICCHANNEL = Message.member.voicechannel;
Pokud (! Voicechannel) Return Message.Channel.Send ('Musíte být v hlasovém kanálu hrát hudbu!');
Koncová oprávnění = voicechannel.permissionsfor (message.Client.user);
IF (!! Oprávnění ('Connect') ||! Oprávnění ('hovno')) {
Return Message.Channel.Send ('Potřebuji oprávnění ke spojení a mluvit ve svém hlasovém kanálu!');
}
CONST SongInfo = čeká ytdl.getInfo (args [1]);
CONST SONG = {
Název: SongInfo.title,
URL: SongInfo.video_Url,
};
Pokud (! ServerQueue) {
Const queueconstruct = {
Textchannel: Message.Channel,
VoiceChannel: Voicechannel,
Připojení: null,
Písně: [],
Objem: 5,
Hra: TRUE,
};
Queue.set (Message.Guild.id, QueueControl);
Queueconstruct.cz.Songs.Push (Song);
Snaž se {
Var Connection = Await Voicechannel.Join ();
Queueconstruct.connection = připojení;
Play (Message.Guild, QueueConstruction.songs [0]);
} Catch (Err) {
Console.log (err);
Queue.delete (Message.Guild.id);
Vrátit zprávu.channel.Send (err);
}
} Else {
Serverqueue.songs.Push (Song);
Console.log (serverqueuee.songs);
Return Message.Channel.Send.Send (`$ {Song.title} byl přidán do fronty!`);
}
}
Funkce přeskočit (zpráva, serverqueue) {
Jestliže (!!
Pokud (! ServerQueue) vrátí zprávu.channel.Send ('Neexistuje žádná píseň, kterou jsem mohl přeskočit! ");
Serverqueue.connection.dispatcher.end ();
}
Funkce Stop (zpráva, Serverqueue) {
Jestliže (!!
Serverqueuee.songs = [];
Serverqueue.connection.dispatcher.end ();
}
Funkce přehrávání (Guild, Song) {
CONST ServerQueue = Queue.get (Guild.ID);
Pokud (!! Píseň) {
Serverqueuee.voicechannel.leave ();
Queue.delete (guild.id);
Vrátit se;
}
CONST dispečer = serverqueue.connection.playStream (ytdl (song.url))
.ON ('konec', () => {
Console.log ("hudba skončila!");
serverqueuee.songs.shift ();
Hrát (Guild, ServerQueuee.songs [0]);
})
.ON ('ERROR', ERROR => {
Console.error (chyba);
});
Dispatcher.SetVolumelogaritmic (Serverqueuee.Volume / 5);
}
Klient.login (token);
Po dokončení je lepší restartovat bot, po kterém můžete jít na server, připojit se k hlasový kanál a zadejte libovolný příkaz interakce, kontrola, jak reagovat na bot.
Pokud výše uvedená varianta bota není vhodná, můžete najít zdrojové kódy na stejné github a zkopírovat je do počítače. Princip registrace a spuštění zůstává stejný, takže v případě potřeby jednoduše upravte hotový kód a poté pokračujte v testování bota.
V tomto článku jsme neovlivnili vypouštění bota na hostování, distribuovat ji mimo jiné uživatele, vytváření avataru a používání otevřených stránek, odkud lze autorizovat. To vše je samostatné procesy, které by měly být zapojeny pouze tehdy, když jste získali dovednost vytvořit roboty a jsou připraveni distribuovat projekty v síti.