U ovom članku razgovarat ćemo o ručno stvaranju bot za reprodukciju glazbe u neskladu. Možete jednostavno kopirati cijeli podneseni kod i urediti ga ako posjedujete JavaScript vještine. Bot je stvorio nas, ali u nekim fazama korisnik se još uvijek može suočiti s različitim problemima, tako da vam savjetujemo da pažljivo pročitate ne samo naše upute, već se i pojavljuju na kodovima pogrešaka zaslona ako postoje takve.
Ako se ispostavi da je ovaj materijal previše kompliciran za vas ili ne prikladan iz drugih razloga, koristite gotove robote za reprodukciju glazbe. Članak na link ispod naći ćete detaljne informacije o tome i možete implementirati zadatak.
Čitaj više:
Dodavanje glazbenog bota na poslužitelj u neslogu
Igrajte glazbu kroz bot u neslodu
Korak 1: Stvaranje nove aplikacije
Svaki bot za odbacivanje mora biti registriran na službenom portalu za programere. Dakle, dobivate pristup svim potrebnim postavkama povezanim s dozvolama i opće ponašanje bota, možete kopirati vezu na njegovo ovlaštenje na osobni poslužitelj i koristiti jedinstveni token, koji je potreban za daljnji razvoj naredbi.
Idite na službenu web stranicu portala za razgovor develoda
- Koristite gornju vezu da biste otvorili glavnu stranicu portala za razvojne programere, prijavite se na discord osobni račun i kliknite na "novu aplikaciju" za stvaranje nove aplikacije.
- Unesite njegovo ime, s obzirom na jedinstvenost, jer ako postoji mnogo robota s istim imenom, to neće biti moguće stvoriti - obavijest o preimenovanju je obavijest.
- Po završetku otvorite izbornik na web-lokaciji i odaberite "Bot" kategoriju.
- Nasuprot nizu "Build-a-Bot" kliknite na "Dodaj bot".
- Potvrdite dodavanje bota za odabranu aplikaciju.
- Kroz poznati jelovnik, idite na «oauth2».
- Ovaj odjeljak je odgovoran za opće parametre Bot-a i njegovo odobrenje. U bloku "Scopes" označite stavku "Bot".
- Na popisu dozvola, svakako aktivirajte vezu s glasovnim kanalima i sposobnost da govorite, jer je potrebno za daljnje emitiranje glazbe.
- Bot bi trebao biti u mogućnosti čitati i slati poruke, tako da ne zaboravite omogućiti ove opcije u odjeljku s dozvolama za chat teksta. Naravno, možete osigurati sve dozvole odjednom, ali ovaj pristup je nevjerojatan, osobito u slučajevima kada napravite bot za masovni korisnik.
- Čim je postavka dopuštenja završena, kopirajte vezu za prvo ovlaštenje bot na poslužitelju, jer ga inače dodati dok se ne ispostavi.
- Slijedite ovaj link i odaberite testni poslužitelj na kojem želite provjeriti bot.
- Potvrdite snimanje i pričekajte informacije o uspješnom autorizaciji.
Sada imate bot s jedinstvenim token, a bot je već dodan poslužitelju, ali dok je u izvanmrežnom načinu rada. Da biste to pokrenuli, morat će obaviti još nekoliko radnji na lokalnom računalu, jer dok ne iskrcavamo botalište za izvanmrežno rukovanje.
Korak 2: Pripremne radnje
Pripremne akcije uključuju stvaranje potrebnih imenika i datoteka, instalaciju alata i ovisnosti za njih. U tome nema ništa komplicirano, samo trebate učiniti svaku akciju zauzvrat, pažljivo prateći pogreške u bilo kojoj fazi.
- Stvorite mapu s imenom bota. Možete odabrati bilo koje mjesto, ali kućna mapa korisnika najbolje odgovara za to.
- Stvorite dvije datoteke u njemu: "Config.json" i "Index.js". U prvom instaliranju cjelokupne konfiguracije bota - njegovog prefiksa i jedinstvenog tokena, au drugom - cijeli programski kod s naredbi i zajedničkim zadacima ovog alata.
- Za rad bota trebat će node.js. Ovaj je alat dizajniran za početak skripti na lokalnom računalu. Slijedite donju vezu i preuzmite njegov instalacijski program za Windows.
Preuzmite Node.js s službene stranice
- Očekujte da ćete preuzeti izvršnu datoteku izvršnu datoteku, pokrenuti i proći jednostavan postupak instalacije, slijedeći upute prikazane na zaslonu.
- Nakon toga, otvorite "naredbeni redak" prikladan za vas, na primjer, unos cmd u uslužni program "Run" (počinje kombinacija Win + R tipke).
- Ugradite modul za rad s apijo, koji se zove "discord.js". Da biste to učinili, u prozoru konzole koji se otvara, unesite NPM Install Discord.js FFMPEG-binaries OpsSScript YTDL-jezgri --save i pritisnite Enter - tako da odmah dodati sve potrebne ovisnosti.
- Pričekajte obavijesti na zaslonu na uspješnoj instalaciji, bez zatvaranja trenutnog prozora konzole. Ako se pojave pogreške, naučite njihov kod i koristite tražilicu kako biste pronašli donošenje posla na forumima ili službenoj web-lokaciji.
Kao rezultat toga, kućna mapa korisnika trebala bi se pojaviti datoteke povezane s komponentom node.js i dodane nakon modula. Ponovo pokrenite računalo tako da bot nema poteškoća u pokretanju, a zatim idite na sljedeći korak.
Korak 3: Uređivanje bot konfiguracijske datoteke
Već znate da će u stvorenoj bot konfiguracijskoj datoteci biti sve par redaka koda koji je odgovoran za korišteni prefiks (simbol prije ulaska na naredbu na poslužitelju) i jedinstveni znak koji definira aplikaciju u API-u. Da bismo ispunili sve daljnje radnje, preporučujemo da preuzmete program s JS sintaks podrškom ili bilo kojim naprednim uređivačem teksta ako to ranije nije učinjeno. Članak na link ispod vas će se moći upoznati s dostupnim odgovarajućim rješenjima.
Opširnije: Odabir razvojnog okruženja za programiranje
Čim je instaliran na računalo i spremno za rad, možete sigurno početi uređivati konfiguracijsku datoteku, unositi korisničke podatke tamo.
- Pokrenite datoteku Config.js putem uređivača teksta ili razvojnog okruženja, umetnite kôd u nastavku.
{
"Prefiks": "!",
"Token": "Tvoja-toke"
}
Promijenite prefiks u dvostrukim navodnicima do željenog ili ostavite usklični znak. Primjer naredbe pomoću ovog znaka izgleda ovako :! Igraj.
- Idite na svoj bot na razvojni portal, pronađite jedinstveni token i kopirajte ga.
- Umjesto toga umetnite inspekciju vašeg toke bez brisanja dvostrukih navodnika.
- Spremite promjene i zatvorite ovu datoteku. Usput, možete izvršiti istu radnju kroz standard "prijenosno računalo".
Na ovim aktivnostima s konfiguracijskom datotekom se dovrše, više ne morate propisati jednu liniju koda. Zatvorite ga, bez zaborava da biste spremili uređivanja i nastavite s daljnjim pisanjem bot za reprodukciju glazbe.
Korak 4: Suđenje Početak bota
Prvo, moramo se pobrinuti da se bot općenito radi na poslužitelju i ide u online način rada, bit će potrebno napisati svoj glavni dio koda na index.js, a zatim koristiti node.js za početak.
- Kroz razvojno okruženje ili odabrani uređivač teksta otvorite spomenutu datoteku za uređivanje.
- Umetnite blok koda koji je odgovoran za instalaciju ovisnosti i označava korištene module:
Const nesloj = zahtijevaju ('discord.js');
const {
Prefiks,
znak
} = Zahtijevaju ('./ config.json');
const ytdl = zahtijevaju ('YTDL-core');
- Uz pomoć prethodno navedenih tokena, stvorite klijenta i prijavu, koja se provodi unosom samo dvije jednostavne linije:
Const klijent = novi discord.client ();
Klijent.login (token);
- Ostaje samo odrediti posljednje osnovne linije za slušanje bota.
Klijent.Once ('Ready', () => {
Console.log ('spreman!');
});
Klijent.once ('ponovno povezivanje', () => {
Console.log ('ponovno povezivanje!');
});
Client.once ('isključite', () => {
Console.log ('prekinite!');
});
- Proširite izbornik "File" i spremite izvršene promjene.
- Ponovno pokrenite konzolu na prikladan način.
- Unesite naredbu Index.js da biste pokrenuli bot skriptu.
- Ako se njezine datoteke ne nalaze u kućnom imeniku korisnika, nakon što je čvor morat će odrediti potpuni pustiti ih.
- Uspješno lansiranje bota označeno je naizgled natpis "spreman!".
- Otvorite nesklad i pobrinite se da je bot otišao na status "online".
Korak 5: Pisanje glavnog kodera glazbenog bota
Najsloženiji proces je ostao - pisanje osnovnog koda za glazbeni bot. Postoji popis zadataka koje mora obavljati: čitanje poruka i naredbe za obradu, definiranje naziva pjesme ili njegove adrese, povezivanje s glasovnim kanalom i reprodukcijom. Dozvole na sve to bot je, tako da samo trebate odrediti radnje pomoću JavaScript funkcija, koje se izvode u istom "index.js" datoteci.
Dodajte jednostavnu značajku za čitanje poruka:
Klijent.On ('poruka', ASYNC poruka => {
}
Sastoji se od samo dvije linije, ali će omogućiti bot da uzme prilagođeni upit i ispravno obrađuje. Može se reći da je to jedan od najvažnijih timova za robote bilo koje vrste. Budite sigurni da dodate ignoriranje poruka s drugih robota unosom
ako (poruka.author.bot) povratak;
Time se izbjegavaju sukobe tijekom korištenja više botova na poslužitelju istovremeno. Zatim će biti potrebno provjeriti prefiks tako da je bot prihvatio tim ili ga vratio.
ako (! poruka.Content.startswith (prefiks)) povratak;
Provjera pokrenutih naredbi provodi se jednostavnim ako su operateri, a dizajn u našem slučaju izgleda ovako:
Const Serverqueue = Queue.get (Poruka.Guild.id);
ako (message.content.startswith (`$ {prefiks} igra ')) {
Izvršiti (poruka, serverqueue);
Povratak;
} Else ako (poruka.content.startswith (`$ {prefiks} Skip`)
Preskoči (Poruka, Serverqueue);
Povratak;
} Else ako (message.content.startswith (`$ {prefiks} stop`))
Zaustavljanje (poruka, serverqueue);
Povratak;
} Else {
Poruka.Channel.Send ("Morate koristiti postojeću naredbu!")
}
Imajte na umu da Funkcija slanja ('') šalje poruku korisniku ako odjednom uđe na neradničku naredbu. Ova poruka koju možete urediti, mijenja natpis u navodnicima.
Sada je Bot naučio preuzeti naredbe, ali dok ne može u interakciji s njima, budući da akcije nisu navedene. Prvo dodajte naredbu za igru, koja je odgovorna za reprodukciju. Za to je potreban niz s sljedećim oblikom:
COST Queue = nova karta ();
On šalje sve naredbe u red i čini pjesme da igraju samo kada prethodni završe. Dalje, bit će potrebno stvoriti funkciju koja će provjeriti je li korisnik spojen na glasovni kanal i je li bot odgovarajuće dozvole.
Async funkcija izvršiti (poruka, serverqueue) {
const args = message.Content.split ('');
Const Voicechannel = Message.Member.voiceChannel;
Ako (! Voicechannel) vraća poruku.
zatvor dozvole = vocechnanel.permissionsfor (mirus.client.user);
Ako (! Dopuštenja.has ('Connect') ||! Dopuštenja.has ('govoriti')) {
Povratak poruku.Channel.Send ('Trebam dozvole da se pridružite i govorite svoj glas kanal!');
}
}
Sljedeća radnja - Povezivanje YTDL knjižnice, budući da će ovaj bot pročitati ime pjesme na linku s YouTubea, nakon čega se reproducira na poslužitelju. Trebat će se za umetanje malog dijela koda.
Const SongInfo = čeka ytdl.getinfo (args [1]);
Const pjesma = {
Naslov: SongINfo.Title,
URL: SongINfo.Video_url,
};
Sljedeći blok koda omogućit će vam da shvatite da postoje pjesme u redu ili se možete odmah spojiti na glasovni kanal i početi reprodukciju.
Ako (! Serverqueue) {
} Else {
Serverqueue.Songs.Push (pjesma);
Console.log (Serverqueue.Songs);
Povratak Message.Channel.Send (`$ {Song.Title} je dodan u red!`);
}
Zatim dolazi malo komplicirano za početnike programere ugovorne sheme koji dodaje pjesmu u niz i čini isto svaki put kada uđete! Igrajte, provjeravanje reda i odabirom prave akcije. Obratite pozornost na prikazane komentare, koji vam omogućuju da se nosite sa svim suptilnostima.
// Stvaranje ugovora za red čekanja
Const queuecontrut = {
Textchannel: Poruka.Channel,
VoiceChannel: VoiceChannel,
Veza: Null,
Pjesme: [],
Volumen: 5,
Igranje: Istina,
};
// postavite red s našim ugovorom
queue.set (poruka.Guild.id, Queuecontrut);
// umetnite sastav u naš niz pjesama
queuecontruct.Songs.Push (pjesma);
pokušajte {
// ovdje se pokušavamo pridružiti glasovnom chatu i spremiti vezu u objektu
VAR Connection = čeka Voicechnanel.Jiin ();
queuecontruct.connekcija = veza;
// pozivanje funkcije reprodukcije za početak pjesme
Igra (poruku.Gonguild, queuecontruct.Songs [0]);
} Catch (err) {
// Prikaz poruke o pogrešci ako se bot ne može pridružiti glasovnom chatu
Console.log (err);
queue.delete (poruka.Guild.id);
Povratak poruku.Channel.Send (Err);
}
Uz red, sve je jasno, ali još uvijek ne igra pjesme, jer ne postoji zadatak za funkciju igre. Da biste to učinili u kodu, potrebno je dodati strukturu
Funkcija igra (ceh, pjesma) {
Const Serverqueue = Queue.get (Guild.id);
Ako (! Pjesma) {
Serverqueue.voicechannel.Lave ();
Queue.delete (Guild.id);
Povratak;
}
}
Igranje počinje pomoću funkcije Playstream () i određenu vezu na stazu.
Const dispečer = serverque.connection.playstream (YTDL (Song.url))
('kraj', () => {
Console.log ('glazba je gotova!');
// uklanja gotovu pjesmu iz reda čekanja
Serverqueue.Songs.shift ();
// opet uzrokuje funkciju reprodukcije sa sljedećom pjesmom
Igrati (ceh, poslužiteljska pje.Songs [0]);
})
('Pogreška', Error => {
Console.error (pogreška);
});
dispečer.setvolumelogaritam (Serverqueue.volume / 5);
Ako želite dodati funkciju Skip Skip, na primjer, kada se odlučite za reprodukciju popisa pjesama, prvo se pobrinite za odgovarajuću naredbu, a zatim dodajte takav fragment:
Funkcija Skip (Poruka, Serverqueue) {
ako (! message.member.voicechannel) Povratak poruku.Channel.Send ("Trebao bi biti u glasovnom kanalu da zaustavi glazbu!");
Ako (! Serverqueue) povratak poruku.Channel.Send ('Nema pjesme koju sam mogao preskočiti!');
Serverqueue.connection.dispatcher.end ();
}
Približno istu shemu također radi i zaustavnu funkciju, ali blok s kodom dobiva nešto drugačiji izgled:
Funkcija zaustavljanja (poruka, serverqueue) {
ako (! poruka.Member.voiceChannel) Povratak poruku.Channel.Send ('
Morate biti u glasovnom kanalu da biste zaustavili glazbu! ");
Serverqueue.Songs = [];
Serverqueue.connection.dispatcher.end ();
}
Razmotrite da su gore prikazani podaci prikladni isključivo za one korisnike koji su već upoznati s JavaScript jezikom ili se bavi studiranjem i odlučio stvoriti glazbeni bot. Ako ne posjedujete vještine općenito i navedene blokove s kodom ne govorite ništa uopće, jednostavno umetnite cijeli izvorni kod u datoteku, zamijenite poruke od bota na ruski (oni su u navodnicima) i spremite promjene. Svi izvorni kod ima ovu vrstu:
Const nesloj = zahtijevaju ('discord.js');
const {
Prefiks,
znak
} = Zahtijevaju ('./ config.json');
const ytdl = zahtijevaju ('YTDL-core');
Const klijent = novi discord.client ();
COST Queue = nova karta ();
Klijent.Once ('Ready', () => {
Console.log ('spreman!');
});
Klijent.once ('ponovno povezivanje', () => {
Console.log ('ponovno povezivanje!');
});
Client.once ('isključite', () => {
Console.log ('prekinite!');
});
Klijent.On ('poruka', ASYNC poruka => {
ako (poruka.author.bot) povratak;
ako (! poruka.Content.startswith (prefiks)) povratak;
Const Serverqueue = Queue.get (Poruka.Guild.id);
ako (message.content.startswith (`$ {prefiks} igra ')) {
Izvršiti (poruka, serverqueue);
Povratak;
} Else ako (poruka.content.startswith (`$ {prefiks} Skip`)
Preskoči (Poruka, Serverqueue);
Povratak;
} Else ako (message.content.startswith (`$ {prefiks} stop`))
Zaustavljanje (poruka, serverqueue);
Povratak;
} Else {
Poruka.Channel.Send ('Morate unijeti valjanu naredbu!')
}
});
Async funkcija izvršiti (poruka, serverqueue) {
const args = message.Content.split ('');
Const Voicechannel = Message.Member.voiceChannel;
Ako (! Voicechnanel) Povratak poruku.Channel.Send ("Morate biti u glasovnom kanalu za reprodukciju glazbe!");
zatvor dozvole = vocechnanel.permissionsfor (mirus.client.user);
Ako (! Dopuštenja.has ('Connect') ||! Dopuštenja.has ('govoriti')) {
Povratak poruku.Channel.Send ('Trebam dozvole da se pridružuju i govorim u glasovnom kanalu!');
}
Const SongInfo = čeka ytdl.getinfo (args [1]);
Const pjesma = {
Naslov: SongINfo.Title,
URL: SongINfo.Video_url,
};
Ako (! Serverqueue) {
Const queuecontrut = {
Textchannel: Poruka.Channel,
VoiceChannel: VoiceChannel,
Veza: Null,
Pjesme: [],
Volumen: 5,
Igranje: Istina,
};
queue.set (poruka.Guild.id, Queuecontrut);
queuecontruct.Songs.Push (pjesma);
pokušajte {
VAR Connection = čeka Voicechnanel.Jiin ();
queuecontruct.connekcija = veza;
Igra (poruku.Gonguild, queuecontruct.Songs [0]);
} Catch (err) {
Console.log (err);
queue.delete (poruka.Guild.id);
Povratak poruku.Channel.Send (Err);
}
} Else {
Serverqueue.Songs.Push (pjesma);
Console.log (Serverqueue.Songs);
Povratak Message.Channel.Send (`$ {Song.Title} je dodan u red!`);
}
}
Funkcija Skip (Poruka, Serverqueue) {
ako (! message.member.voicechannel) Povratak poruku.Channel.Send ("Morate biti u glasovnom kanalu da biste zaustavili glazbu!");
ako (! Serverqueue) povratak poruku.Channel.Send ('Nema pjesme koju sam mogao preskočiti!');
Serverqueue.connection.dispatcher.end ();
}
Funkcija zaustavljanja (poruka, serverqueue) {
ako (! message.member.voicechannel) Povratak poruku.Channel.Send ("Morate biti u glasovnom kanalu da biste zaustavili glazbu!");
Serverqueue.Songs = [];
Serverqueue.connection.dispatcher.end ();
}
Funkcija igra (ceh, pjesma) {
Const Serverqueue = Queue.get (Guild.id);
Ako (! Pjesma) {
Serverqueue.voicechannel.Lave ();
Queue.delete (Guild.id);
Povratak;
}
Const dispečer = serverque.connection.playstream (YTDL (Song.url))
('kraj', () => {
Console.log ('Glazba je završila!');
Serverqueue.Songs.shift ();
Igrati (ceh, poslužiteljska pje.Songs [0]);
})
('Pogreška', Error => {
Console.error (pogreška);
});
dispečer.setvolumelogaritam (Serverqueue.volume / 5);
}
Klijent.login (token);
Po završetku, bolje je ponovno pokrenuti bot, nakon čega možete otići na svoj poslužitelj, spojiti se na glasovni kanal i unijeti bilo koju naredbu interakcije, provjeravanje kako reagirati na bot.
Ako je gore navedena varijanta bota nije prikladna za vas, izvorne kodove možete pronaći na istoj gitring i kopirati ih na računalo. Načelo registracije i lansiranja ostaje isti, pa ako je potrebno, jednostavno uredite gotov kod, a zatim nastavite na testiranje bota.
U ovom članku, nismo utjecali na ispuštanje bota na hosting, distribuirajte ga među ostalim korisnicima, stvarajući avatar i korištenje otvorenih mjesta, odakle se može odobriti. Sve to je zasebne procese koji bi trebali biti angažirani samo kada ste ušuljali svoju vještinu stvaranje robota i spremni su distribuirati projekte na mreži.