Në këtë artikull, ne do të flasim për krijimin manualisht një bot për të luajtur muzikë në mosmarrëveshje. Ju thjesht mund të kopjoni të gjithë kodin e dorëzuar, dhe të redaktoni për veten tuaj nëse keni aftësi JavaScript. Bot u krijua nga ne, por në disa faza përdoruesi ende mund të përballet me probleme të ndryshme, kështu që ne ju këshillojmë që të lexoni me kujdes jo vetëm udhëzimet tona, por edhe duke u shfaqur në kodet e gabimit të ekranit nëse ka të tilla.
Nëse rezulton se ky material është shumë i komplikuar për ju ose jo të përshtatshme për arsye të tjera, përdorni bots të gatshëm për të luajtur muzikë. Artikulli në lidhjen më poshtë do të gjeni informacion të detajuar për këtë dhe ju mund të zbatoni detyrën.
Lexo më shumë:
Duke shtuar një bot muzikor në serverin në mosmarrëveshje
Luaj muzikë përmes bot në mosmarrëveshje
Hapi 1: Krijimi i një aplikacioni të ri
Çdo bot për hidhërimin duhet të regjistrohet në portalin zyrtar për zhvilluesit. Pra, ju fitoni qasje në të gjitha cilësimet e nevojshme të lidhura me lejet dhe sjelljen e përgjithshme të bot, ju mund të kopjoni lidhjen me autorizimin e tij në serverin personal dhe të përdorni shenjën unike, e cila është e nevojshme për zhvillimin e mëtejshëm të komandave.
Shkoni në faqen zyrtare të Portalit të Zhvilluesit të Mosmarrëveshjeve
- Përdorni lidhjen e mësipërme për të hapur faqen kryesore të portalit për zhvilluesit, hyni në llogarinë personale të mosmarrëveshjes dhe klikoni mbi "Aplikacionin e ri" për të krijuar një aplikacion të ri.
- Shkruani emrin e tij, duke pasur parasysh unikitetin, sepse nëse ka shumë bots me të njëjtin emër, nuk do të jetë e mundur të krijoni atë - njoftohet një njoftim për riemërimin.
- Pas përfundimit, hapni menunë në vend dhe zgjidhni "Bot" kategori.
- Përballë "ndërtimit-a-bot" klikoni në "Shto bot".
- Konfirmoni shtimin e bot për aplikimin e përzgjedhur.
- Përmes një menuje të njohur, shkoni te «oauth2».
- Ky seksion është përgjegjës për parametrat e përgjithshëm të bot dhe autorizimin e tij. Në bllokun "Scopes", shënoni paragrafin "bot".
- Në listën e lejeve, sigurohuni që të aktivizoni lidhjen me kanalet zanore dhe aftësinë për të folur, pasi është e nevojshme për transmetimin e mëtejshëm të muzikës.
- Bot duhet të jetë në gjendje të lexojë dhe të dërgojë mesazhe, prandaj mos harroni të mundësoni këto opsione në seksionin me lejet e bisedave me tekst. Natyrisht, ju mund të jepni të gjitha lejet në të njëjtën kohë, por kjo qasje është e pabesueshme, veçanërisht në rastet kur bëni një bot për një përdorues masiv.
- Sapo të përfundojë vendosja e lejes, kopjoni lidhjen për autorizimin e parë të bot në server, sepse ndryshe shtoni derisa të rezultojë.
- Ndiqni këtë lidhje dhe zgjidhni serverin e testimit ku dëshironi të kontrolloni bot.
- Konfirmo kapjen dhe pritni informacione për autorizimin e suksesshëm.
Tani ju keni një bot me një shenjë unike, dhe bot tashmë është shtuar në server, por ndërsa në modalitetin offline. Për të filluar atë, ajo do të duhet të kryejë disa veprime të tjera në kompjuterin lokal, pasi ndërsa ne nuk e shkarkojmë botuesin e botuar për operacionin jashtë linje.
Hapi 2: Veprimet përgatitore
Veprimet përgatitore përfshijnë krijimin e drejtorive dhe dosjeve të kërkuara, instalimin e mjeteve dhe varësive për ta. Nuk ka asgjë të komplikuar në këtë, ju vetëm duhet të bëni çdo veprim nga ana tjetër, duke ndjekur me kujdes gabimet në çdo fazë.
- Krijo një dosje me emrin e bot. Ju mund të zgjidhni çdo vend, por dosja në shtëpi e përdoruesit është më e përshtatshme për këtë.
- Krijo dy skedarë në të: "config.json" dhe "index.js". Në të parën instalimin e konfigurimit të përgjithshëm të bot - prefiksit të saj dhe shenjën unike, dhe në të dytën - të gjithë kodin e programit me komanda dhe detyra të përbashkëta të këtij mjeti.
- Për punën e bot do të ketë nevojë për Node.js. Ky mjet është projektuar për të filluar skriptet në kompjuterin lokal. Ndiqni lidhjen më poshtë dhe shkarkoni instaluesin e tij për Windows.
Shkarko node.js nga faqja zyrtare
- Prisni të shkarkoni skedarin e ekzekutueshëm të ekzekutueshëm, ta drejtoni dhe të kaloni procedurën e thjeshtë të instalimit, duke ndjekur udhëzimet e shfaqura në ekran.
- Pas kësaj, hapni "Linjën e Komandës" të përshtatshme për ju, për shembull, duke hyrë në CMD në "Run" të shërbimeve (fillon kombinimi i Win + R Keys).
- Instaloni modulin për të punuar me API të mosmarrëveshjes, e cila quhet "mosmarrëveshje.js". Për ta bërë këtë, në dritaren e konsolës që hapet, hyni në diskun e instalimit të NPM.Js FFMPEG-Binaries Opsscript YTDL-Core - Save dhe shtypni Enter - kështu që menjëherë të shtoni të gjitha varësitë e nevojshme.
- Prisni për njoftime në ekran në një instalim të suksesshëm, pa mbyllur dritaren e tanishme të konsolës. Nëse shfaqen gabime, mësojnë kodin e tyre dhe përdorin motorin e kërkimit për të gjetur një vendim pune në forume ose në faqen zyrtare të internetit.
Si rezultat, dosja në shtëpi e përdoruesit duhet të shfaqet skedarë të lidhur me komponentin e Node.js dhe shtohet pas modulit. Rinisni kompjuterin në mënyrë që bot të mos ketë vështirësi në fillim, pastaj të shkoni në hapin tjetër.
Hapi 3: Redaktimi i skedarit të konfigurimit të bot
Ju tashmë e dini se në skedarin e konfigurimit të Krijuar Bot do të ketë të gjitha një palë rreshta të kodit që është përgjegjës për prefiksin e përdorur (simbol para se të hyni në komandën në server) dhe një shenjë unike që përcakton aplikimin në API. Për të përmbushur të gjitha veprimet e mëtejshme, ne rekomandojmë shkarkimin e një programi me mbështetjen e sintaksës JS ose ndonjë redaktues të avancuar të tekstit nëse kjo nuk është bërë më parë. Artikulli në lidhjen më poshtë do të jeni në gjendje të njiheni me zgjidhjet në dispozicion të përshtatshme.
Lexo më shumë: Përzgjedhja e mjedisit të zhvillimit për programim
Sapo të instalohet në kompjuter dhe të jetë gati për të punuar, mund të filloni me siguri të redaktoni skedarin e konfigurimit, të futni të dhënat e përdoruesit atje.
- Drejtoni skedarin CONFIG.JS nëpërmjet një redaktori të tekstit ose mjedisit të zhvillimit, futni kodin më poshtë.
{
"Prefiksi": "!",
"Token": "your-toke"
}
Ndryshoni prefiksin në kuotat e dyfishta për të dëshiruar ose lënë një shenjë thirrje. Një shembull i një komande që përdor këtë shenjë duket si kjo :! Luaj.
- Shkoni në bot tuaj në portalin e zhvillimit, gjeni një shenjë unike atje dhe kopjoni atë.
- Futni inspektimin tuaj të vegjël në vend që të fshini kuotat e dyfishta.
- Ruaj ndryshimet dhe mbyllni këtë skedar. Nga rruga, ju mund të kryeni të njëjtin veprim përmes një standardi "fletore".
Për këtë veprim me skedarin e konfigurimit janë përfunduar, nuk ka më nevojë për të përshkruar një linjë të vetme të kodit. Mbylleni atë, pa harruar të ruani redaktimet e bëra, dhe të vazhdoni të shkruani më tej botin për të luajtur muzikë.
Hapi 4: Bot
Së pari, ne duhet të sigurohemi që bot në përgjithësi po kandidon në server dhe shkon në modalitetin online, do të jetë e nevojshme të shkruani pjesën kryesore të kodit për të indeksuar.js, dhe pastaj përdorni node.js për të filluar.
- Nëpërmjet mjedisit të zhvillimit ose redaktorit të përzgjedhur të tekstit, hapni skedarin e përmendur për redaktim.
- Futni bllokun e kodit që është përgjegjës për instalimin e varësisë dhe tregon modulet e përdorura:
Const Discord = Kërkoni ('Discord.js');
const {
Prefiksi,
shenjë
} = Kërkoni ('./ config.json');
const ytdl = kërkojnë ('ytdl-core');
- Me ndihmën e argumenteve të specifikuara më parë, krijoni një klient dhe identifikohuni, i cili kryhet duke hyrë vetëm në dy linja të thjeshta:
Const client = disk i ri.Client ();
Klienti.Login (shenjë);
- Mbetet vetëm për të specifikuar linjat e fundit themelore për të dëgjuar bot.
Client.once ('gati', () => {
Console.log ('gati!');
});
Client.once ('rikyçur', () => {
Console.log ('Reconnecting!');
});
Client.once ('shkëputje', () => {
Console.log ('shkëputje!');
});
- Zgjeroni menunë "File" dhe ruani ndryshimet e bëra.
- Run tastierë përsëri në një mënyrë të përshtatshme.
- Shkruani komandën e nyjeve të nyjeve për të nisur skenarin bot.
- Nëse dosjet e saj nuk janë të vendosura në direktorinë e përdoruesit të përdoruesit, pasi nyja do të duhet të specifikojë një të plotë le të tyre.
- Lansimi i suksesshëm i bot tregohet nga mbishkrimi i shfaqur "gati!".
- Hapni mosmarrëveshjen dhe sigurohuni që bot shkoi në statusin e "online".
Hapi 5: Shkrimi i koduesit kryesor të bot muzikor
Procesi më i ndërlikuar mbeti - duke shkruar kodin bazë për bot muzikor. Ekziston një listë e detyrave që duhet të kryejnë: Leximi i mesazheve dhe komandave të përpunimit, përkufizimi i një emri të këngës ose adresa e tij, lidhja me kanalin dhe rishikimin e zërit. Lejet në të gjithë këtë bot është, kështu që ju vetëm duhet të specifikoni veprimet duke përdorur funksione JavaScript, e cila kryhet në të njëjtën skedar "index.js".
Shto një veçori të thjeshtë për të lexuar mesazhe:
Client.on ('mesazh', async mesazh => {{
}
Ai përbëhet nga vetëm dy rreshta, por do të lejojë bot të marrë një pyetje me porosi dhe të përpunohet në mënyrë korrekte. Mund të thuhet se kjo është një nga ekipet më të rëndësishme për bots e çdo lloji. Sigurohuni që të shtoni mesazhe të injoruara nga bots të tjera duke hyrë
nëse (mesazhi.author.bot);
Kjo shmang konfliktet duke përdorur bots të shumta në server njëkohësisht. Tjetra, do të jetë e nevojshme për të kontrolluar prefiksin në mënyrë që bot të pranojë ekipin ose ta kthejë atë.
Nëse (! Message.Content.Startswith (prefiks)) Kthimi;
Kontrollimi i komandave të nisur është kryer duke përdorur të thjeshtë nëse operatorët, dhe dizajni në rastin tonë duket kështu:
Const Serverqueue = Queue.Get (mesazh.guild.id);
nëse (message.content.startswith (`$ {prefix} luaj`)) {
Ekzekutoni (mesazh, serverqueue);
Kthimi;
} Tjetër nëse (message.content.startwith (`$ {prefiks} Skip`)) {
Kalo (mesazh, serverqueue);
Kthimi;
} Tjetër nëse (mesazh.content.startswith (`$ {prefiks} stop`)) {
Stop (mesazh, serverqueue);
Kthimi;
} Tjetër {
Mesazh.channel.send ('ju duhet të përdorni komandën ekzistuese!)
}
Ju lutem vini re se funksioni Dërgoni ('') e dërgon mesazhin tek përdoruesi nëse papritmas hyn në komandën jo-punuese. Ky mesazh mund të redaktoni, ndryshoni mbishkrimin në kuotat.
Tani bot mësoi të merrte komanda, por derisa të ndërveprojë me ta, pasi që veprimet nuk janë të specifikuara. Së pari shtoni komandën e lojës, e cila është përgjegjëse për rishikim. Për të, një grup është i nevojshëm me formën e mëposhtme:
Const Queue = Harta e re ();
Ai i dërgon të gjitha komandat në radhë dhe i bën këngët të luajnë vetëm kur përfundon i mëparshmi. Tjetra, do të jetë e nevojshme të krijohet një funksion që do të kontrollojë nëse përdoruesi i lidhur me kanalin zanor dhe nëse bot është lejet përkatëse.
Funksioni Async ekzekutohet (mesazh, serverqueue) {
const args = mesazh.content.spli ('');
CONST VOICECHANNEL = MESAZH.MBER.VOICECHANNEL;
Nëse (! Voicechannel) të kthimit mesazh. Channel.Send ('për të dëgjuar muzikë, ju duhet të jeni në kanalin zanor!');
Const Permissions = Voicechannel.Permissionsfor (Message.Client.User);
Nëse (! Lejet.has ('Connect') ||! Lejet.has ('flasin')) {
Kthimi i mesazhit.CHANNEL.SEND ('Unë kam nevojë për leje për t'u bashkuar dhe për të folur kanalin tuaj zanor!');
}
}
Veprimi i ardhshëm - Lidhja e bibliotekës YTDL, pasi që ky bot do të lexojë emrin e këngës në lidhjen nga YouTube, pas së cilës është luajtur në server. Do të duhet për të futur një pjesë të vogël të kodit.
Const songinfo = presin ytdl.getinfo (args [1]);
Const song = {
Titulli: SongInfo.Title,
URL: SongInfo.Video_url,
};
Blloku i ardhshëm i kodit do t'ju lejojë të kuptoni nëse ka këngë në radhë ose mund të lidheni menjëherë me kanalin zanor dhe të filloni riprodhimin.
Nëse (! Sermanqueue) {
} Tjetër {
Serverqueue.songs.push (këngë);
Console.log (serverqueue.songs);
Kthimi mesazh.channel.send (`$ {song.title} është shtuar në radhë!`);
}
Tjetra vjen pak e komplikuar për programuesit e rishtar një skemë kontrate që shton një këngë në një grup dhe bën të njëjtën gjë çdo herë që futni! Luaj, kontrolloni radhën dhe zgjedhjen e veprimit të duhur. Kushtojini vëmendje komenteve të paraqitura, të cilat ju lejojnë të merreni me të gjitha hollësitë.
// duke krijuar një kontratë për radhë
Const queuecontruc = {
TextChannel: Message.Channel,
Voicekanel: Voicekanel,
Lidhja: null,
Këngët: [],
Vëllimi: 5,
Playing: Vërtetë,
};
// Vendosni radhën me kontratën tonë
Queue.Set (mesazh.guild.id, queuecontrtuct);
// Vendos përbërjen në grupin tonë të këngëve
queuecontruc.songs.push (këngë);
provoni {
// Këtu po përpiqemi të bashkohemi me bisedën e zërit dhe të ruajmë lidhjen në objekt
VAR lidhje = presin voicekannel.Join ();
QueueContry.Connection = lidhje;
// Thirrja e funksionit të riprodhimit për të filluar këngën
Luaj (Message.Guild, QueueContry.Songs [0]);
} Kap (gabim) {
// Shfaq një mesazh gabimi nëse bot nuk mund të bashkohet me bisedën me zë
Console.log (gaboj);
Queue.delete (mesazh.guild.id);
Kthimi mesazh.channel.send (gaboj);
}
Me radhë, gjithçka është e qartë, por ende nuk luan këngë, sepse nuk ka detyrë për funksionin e lojës. Për ta bërë këtë në kodin është e nevojshme të shtoni strukturë
Funksioni Luaj (Spild, Song) {
Const serverqueue = queue.get (guild.id);
Nëse (! Këngë) {
Serverqueue.voicechannel.leave ();
Queue.delete (guild.id);
Kthimi;
}
}
Luajtja fillon duke përdorur funksionin e Playstream () dhe lidhjen e specifikuar në rrugën e duhur.
Const dispeçer = serverqueue.connection.playstream (ytdl (song.url))
.on ('fund', () => {
Console.log ('muzika ka mbaruar!');
// largon këngën e përfunduar nga radhë
serverqueue.songs.shift ();
// përsëri shkakton funksionin e riprodhimit me këngën e mëposhtme
Luaj (Spild, Serverqueue.songs [0]);
})
.on ('gabim', error => {
Console.error (gabim);
});
dispeçer.setvolumelogaritic (serverqueue.volume / 5);
Nëse dëshironi të shtoni një funksion të kalimit të këngës, për shembull, kur vendosni të luani një listë dëgjimi, së pari të kujdeseni për komandën e duhur dhe pastaj të shtoni një fragment të tillë:
Funksioni Skip (Mesazh, Serverqueue) {
Nëse (! Message.Member.VoicEchannel) Mesazhi i kthimit.Channel.Send ('Ju duhet të jeni në një kanal zanor për të ndaluar muzikën!');
Nëse (! Serverqueue) mesazhi i kthimit.Channel.send ('nuk ka këngë që unë mund të kaloj!');
Serverqueue.connection.dispatcher.end ();
}
Përafërsisht skema e njëjtë gjithashtu punon edhe funksioni i ndalimit, por blloku me kodin fiton një vështrim pak më të ndryshëm:
Funksioni Stop (mesazh, serverqueue) {
Nëse (! Message.Member.VoicEchannel) Mesazhi i kthimit.Channel.Send ('
Ju duhet të jeni në kanalin zanor për të ndaluar muzikën! ');
Serverqueue.songs = [];
Serverqueue.connection.dispatcher.end ();
}
Konsideroni se informacioni i paraqitur më sipër është i përshtatshëm ekskluzivisht për ata përdorues të cilët tashmë janë të njohur me gjuhën JavaScript ose janë të angazhuar vetëm në studimin dhe vendosin të krijojnë një bot muzikor. Nëse nuk zotëroni në përgjithësi dhe blloqet e specifikuara me kodin që nuk thoni fare fare, thjesht futni të gjithë kodin burimor në skedar, zëvendësoni mesazhet nga bot në rusisht (ata janë në kuotat) dhe ruani ndryshime. Të gjithë kodin burimor ka këtë lloj:
Const Discord = Kërkoni ('Discord.js');
const {
Prefiksi,
shenjë
} = Kërkoni ('./ config.json');
const ytdl = kërkojnë ('ytdl-core');
Const client = disk i ri.Client ();
Const Queue = Harta e re ();
Client.once ('gati', () => {
Console.log ('gati!');
});
Client.once ('rikyçur', () => {
Console.log ('Reconnecting!');
});
Client.once ('shkëputje', () => {
Console.log ('shkëputje!');
});
Client.on ('mesazh', async mesazh => {{
nëse (mesazhi.author.bot);
Nëse (! Message.Content.Startswith (prefiks)) Kthimi;
Const Serverqueue = Queue.Get (mesazh.guild.id);
nëse (message.content.startswith (`$ {prefix} luaj`)) {
Ekzekutoni (mesazh, serverqueue);
Kthimi;
} Tjetër nëse (message.content.startwith (`$ {prefiks} Skip`)) {
Kalo (mesazh, serverqueue);
Kthimi;
} Tjetër nëse (mesazh.content.startswith (`$ {prefiks} stop`)) {
Stop (mesazh, serverqueue);
Kthimi;
} Tjetër {
Mesazh.channel.send ('ju duhet të futni një komandë të vlefshme!')
}
});
Funksioni Async ekzekutohet (mesazh, serverqueue) {
const args = mesazh.content.spli ('');
CONST VOICECHANNEL = MESAZH.MBER.VOICECHANNEL;
Nëse (! Voicechannel) të kthimit mesazh. Channel.send ('ju duhet të jeni në një kanal zanor për të luajtur muzikë!');
Const Permissions = Voicechannel.Permissionsfor (Message.Client.User);
Nëse (! Lejet.has ('Connect') ||! Lejet.has ('flasin')) {
Mesazhi i kthimit.Wannel.Send ('Unë kam nevojë për lejet për t'u bashkuar dhe për të folur në kanalin tuaj zanor!');
}
Const songinfo = presin ytdl.getinfo (args [1]);
Const song = {
Titulli: SongInfo.Title,
URL: SongInfo.Video_url,
};
Nëse (! Sermanqueue) {
Const queuecontruc = {
TextChannel: Message.Channel,
Voicekanel: Voicekanel,
Lidhja: null,
Këngët: [],
Vëllimi: 5,
Playing: Vërtetë,
};
Queue.Set (mesazh.guild.id, queuecontrtuct);
queuecontruc.songs.push (këngë);
provoni {
VAR lidhje = presin voicekannel.Join ();
QueueContry.Connection = lidhje;
Luaj (Message.Guild, QueueContry.Songs [0]);
} Kap (gabim) {
Console.log (gaboj);
Queue.delete (mesazh.guild.id);
Kthimi mesazh.channel.send (gaboj);
}
} Tjetër {
Serverqueue.songs.push (këngë);
Console.log (serverqueue.songs);
Kthimi mesazh.channel.send (`$ {song.title} është shtuar në radhë!`);
}
}
Funksioni Skip (Mesazh, Serverqueue) {
Nëse (! Message.Member.voiceChannel) Mesazhi i kthimit. Channel.Send ('ju duhet të jeni në një kanal zanor për të ndaluar muzikën!');
Nëse (! Serverqueue) mesazhi i kthimit.Channel.send ('nuk ka këngë që unë mund të kaloj!');
Serverqueue.connection.dispatcher.end ();
}
Funksioni Stop (mesazh, serverqueue) {
Nëse (! Message.Member.voiceChannel) Mesazhi i kthimit. Channel.Send ('ju duhet të jeni në një kanal zanor për të ndaluar muzikën!');
Serverqueue.songs = [];
Serverqueue.connection.dispatcher.end ();
}
Funksioni Luaj (Spild, Song) {
Const serverqueue = queue.get (guild.id);
Nëse (! Këngë) {
Serverqueue.voicechannel.leave ();
Queue.delete (guild.id);
Kthimi;
}
Const dispeçer = serverqueue.connection.playstream (ytdl (song.url))
.on ('fund', () => {
Console.log ('muzikë përfundoi!');
serverqueue.songs.shift ();
Luaj (Spild, Serverqueue.songs [0]);
})
.on ('gabim', error => {
Console.error (gabim);
});
dispeçer.setvolumelogaritic (serverqueue.volume / 5);
}
Klienti.Login (shenjë);
Pas përfundimit, është më mirë të rifilloni bot, pas së cilës mund të shkoni në serverin tuaj, të lidheni me kanalin e zërit dhe të futni ndonjë komandë të ndërveprimit, duke kontrolluar se si të reagoni ndaj bot.
Nëse varianti i mësipërm i bot nuk është i përshtatshëm për ju, ju mund të gjeni kodet burimore në të njëjtën github dhe t'i kopjoni ato në kompjuterin tuaj. Parimi i regjistrimit dhe nisjes mbetet i njëjtë, kështu që nëse është e nevojshme, thjesht modifikoni kodin e përfunduar, dhe pastaj të vazhdoni te testimi i bot.
Në këtë artikull, ne nuk kemi ndikuar në shkarkimin e një bot në hosting, shpërndajmë atë në mesin e përdoruesve të tjerë, duke krijuar një avatar dhe përdorimin e vendeve të hapura, nga ku mund të jetë i autorizuar. E gjithë kjo është procese të ndara që duhet të angazhohen vetëm kur ju keni honed aftësinë tuaj për të krijuar bots dhe janë të gatshëm për të shpërndarë projekte në rrjet.