Katika makala hii, tutazungumzia juu ya kuunda boti kwa kucheza muziki katika ugomvi. Unaweza tu nakala ya msimbo mzima uliowasilishwa, na uhariri mwenyewe ikiwa una ujuzi wa JavaScript. Boti iliundwa na sisi, lakini katika hatua fulani ambazo mtumiaji anaweza kukabiliana na matatizo tofauti, kwa hiyo tunakushauri kusoma kwa makini tu maelekezo yetu, lakini pia inaonekana kwenye nambari za hitilafu za skrini ikiwa kuna hivyo.
Ikiwa inageuka kuwa nyenzo hii ni ngumu sana kwako au siofaa kwa sababu nyingine, tumia bots za bure zilizopangwa tayari kucheza muziki. Makala juu ya kiungo chini utapata maelezo ya kina kuhusu hili na unaweza kutekeleza kazi.
Soma zaidi:
Kuongeza bot ya muziki kwenye seva katika ugomvi
Jaribu muziki kupitia bot katika ugomvi
Hatua ya 1: Kujenga programu mpya
Kila bot kwa ajili ya kuacha lazima kusajiliwa kwenye bandari rasmi kwa watengenezaji. Kwa hiyo unapata upatikanaji wa mipangilio yote muhimu inayohusishwa na ruhusa na tabia ya jumla ya bot, unaweza kuiga kiungo kwa idhini yake katika seva ya kibinafsi na kutumia ishara ya kipekee, ambayo inahitajika kwa ajili ya maendeleo zaidi ya amri.
Nenda kwenye tovuti rasmi ya Portal ya Msanidi wa Discord.
- Tumia kiungo hapo juu ili kufungua ukurasa kuu wa bandari kwa watengenezaji, ingia kwenye akaunti ya kibinafsi ya kibinafsi na bofya kwenye "programu mpya" ili kuunda programu mpya.
- Ingiza jina lake, kutokana na pekee, kwa sababu ikiwa kuna bots nyingi na jina moja, haitawezekana kuunda - taarifa ya renaming inafahamishwa.
- Baada ya kukamilika, fungua orodha kwenye tovuti na chagua kikundi cha "Bot".
- Kinyume na kamba ya "kujenga-bot" bonyeza kwenye "Ongeza Bot".
- Thibitisha kuongeza ya bot kwa programu iliyochaguliwa.
- Kupitia orodha ya kawaida, nenda kwa «OAuth2».
- Sehemu hii inawajibika kwa vigezo vya jumla vya bot na idhini yake. Katika kuzuia "scopes", alama ya "bot" aya.
- Katika orodha ya ruhusa, hakikisha umeiwezesha uhusiano wa vituo sauti na uwezo wa kusema, kama ni muhimu kwa ajili zaidi utangazaji music.
- bot wataweza kusoma na kutuma ujumbe, hivyo usisahau ili kuwawezesha chaguzi hizi katika sehemu ambazo zina ruhusa ya maandishi ya soga. Bila shaka, unaweza kutoa ruhusa kwa wakati mmoja, lakini mbinu hii ni ajabu, hasa katika hali ambapo wewe kufanya bot kwa wingi user.
- Mara baada ya kuweka ruhusa kukamilika, nakili kiungo idhini ya kwanza ya bot kwenye kompyuta, kwa sababu vinginevyo kuongeza kuwa mpaka ni zamu nje.
- Fuata kiungo huu na kuchagua mtihani server ambapo unataka kuangalia bot.
- Thibitisha vya kupiga picha na kusubiri kwa habari kuhusu idhini ya mafanikio.
Sasa una bot kwa ishara ya kipekee, na bot tayari aliongeza kwa server, lakini ikiwa katika Simu ya nje ya mkondo. Kuanza yake, itakuwa na kufanya zaidi matendo chache kwenye kompyuta ya karibu, kwa kuwa wakati hatuna kupakua boting boting kwa ajili ya operesheni nje ya mtandao.
Hatua ya 2: Vitendo Matayarisho
Vitendo Matayarisho pamoja na kuundwa kwa saraka required na mafaili, ufungaji wa zana na maelewano kwa ajili yao. Hakuna kitu ngumu katika hili, unahitaji tu kufanya kila hatua kwa upande wake, kwa makini kufuata makosa katika hatua yoyote.
- Kujenga folder kwa jina la bot. Unaweza kuchagua sehemu yoyote, lakini nyumbani folder ya mtumiaji ni bora inafaa kwa hili.
- Unda faili mbili ndani yake: "Config.json" na "index.js". Katika kwanza kufunga Configuration jumla wa bot - Kiambishi awali wake na ishara ya kipekee, na katika pili - nzima mpango code kwa amri na kazi ya kawaida ya chombo hiki.
- Kazi ya bot unahitaji Node.js. Zana hii imeundwa kwa kuanza maandiko kwenye kompyuta za mitaa. Fuata kiungo hapa chini na kushusha Kisakinishi wake kwa ajili ya Windows.
Download node.js kutoka tovuti rasmi
- Anatarajia kupakua faili inayoweza kutekelezwa, kukimbia na kupitisha utaratibu rahisi wa ufungaji, kufuatia maelekezo yaliyoonyeshwa kwenye skrini.
- Baada ya hapo, fungua "mstari wa amri" kwa urahisi kwako, kwa mfano, kuingia CMD katika "kukimbia" shirika (inaanza mchanganyiko wa funguo za Win + R).
- Sakinisha moduli ya kufanya kazi na API ya Discord, ambayo inaitwa "Discord.js". Ili kufanya hivyo, katika dirisha la console ambalo linafungua, ingiza NPM imefunga Discord.js FFMPEG-Binaries OPSScript YTDL-Core --Save na waandishi wa kuingia - hivyo kuongeza mara moja tegemezi zote muhimu.
- Kusubiri arifa kwenye skrini kwenye ufungaji wa mafanikio, bila kufunga dirisha la sasa la console. Ikiwa makosa yanaonekana, kujifunza kanuni zao na kutumia injini ya utafutaji ili kupata uamuzi wa kazi kwenye vikao au tovuti rasmi.
Matokeo yake, folda ya nyumbani ya mtumiaji inapaswa kuonekana faili zinazohusishwa na sehemu ya node.js na kuongezwa baada ya moduli. Anza upya kompyuta ili bot haina shida kuanza, kisha nenda kwenye hatua inayofuata.
Hatua ya 3: Kuhariri faili ya usanidi wa bot.
Tayari unajua kwamba katika faili ya usanidi wa bot iliyoundwa kutakuwa na safu zote za safu ya msimbo unaohusika na kiambishi awali (ishara kabla ya kuingia amri kwenye seva) na ishara ya pekee inayofafanua maombi katika API. Ili kutimiza vitendo vyote zaidi, tunapendekeza kupakua programu na msaada wa JS Syntax au mhariri wowote wa maandishi kama hii haijafanyika hapo awali. Kifungu cha kiungo hapa chini utaweza kujitambulisha na ufumbuzi unaofaa.
Soma zaidi: Kuchagua mazingira ya maendeleo ya programu
Mara tu imewekwa kwenye kompyuta na tayari kufanya kazi, unaweza kuanza kwa salama kuhariri faili ya usanidi, kuingia data ya mtumiaji huko.
- Tumia faili ya config.js kupitia mhariri wa maandishi au mazingira ya maendeleo, ingiza msimbo hapa chini.
{
"Kiambishi": "!",
"Ishara": "yako-toke"
}
Badilisha kiambishi awali katika quotes mbili kwa taka au kuondoka alama ya kufurahisha. Mfano wa amri kwa kutumia ishara hii inaonekana kama hii:! Kucheza.
- Nenda kwenye boti yako kwenye bandari ya maendeleo, pata ishara ya pekee huko na kuipiga.
- Ingiza ukaguzi wako wa toke badala bila kufuta quotes mbili.
- Hifadhi mabadiliko na uifunge faili hii. Kwa njia, unaweza kufanya hatua sawa kwa njia ya "daftari" ya kawaida.
Katika vitendo hivi na faili ya usanidi imekamilika, hakuna tena unahitaji kuagiza mstari mmoja wa msimbo. Funga, bila kusahau kuokoa mipangilio iliyofanywa, na kuendelea kuendelea kuandika boti kwa kucheza muziki.
Hatua ya 4: Jaribio Kuanza Bot
Kwanza, tunahitaji kuhakikisha kwamba bot kwa ujumla inaendesha kwenye seva na huenda kwenye hali ya mtandaoni, itakuwa muhimu kuandika sehemu yake kuu ya msimbo wa index.js, na kisha kutumia node.js kuanza.
- Kupitia mazingira ya maendeleo au mhariri wa maandishi iliyochaguliwa, kufungua faili iliyotajwa kwa ajili ya kuhariri.
- Ingiza kizuizi cha msimbo ambao ni wajibu wa ufungaji wa utegemezi na unaonyesha modules kutumika:
Const Discord = Inahitaji ('Discord.js');
fanya {
Kiambishi,
token.
} = Inahitaji ('./ config.json');
Const YTDL = Inahitaji ('YTDL-Core');
- Kwa msaada wa ishara zilizoelezwa hapo awali, kuunda mteja na kuingia, ambayo hufanyika kwa kuingia mistari miwili tu rahisi:
Const Client = New Conford.Client ();
Mteja.login (ishara);
- Inabakia tu kutaja mistari ya msingi ya kusikiliza bot.
Mteja.once ('tayari', () => {
Console.log ('Tayari!');
});
Mteja.Once ('kuunganisha', () => {
Console.log ('Kuunganisha!');
});
Mteja.Once ('kukataza', () => {
Console.log ('kukata!');
});
- Panua orodha ya "Faili" na uhifadhi mabadiliko yaliyofanywa.
- Tumia tena console kwa njia rahisi.
- Ingiza amri ya node.js amri ya kuanza script ya bot.
- Ikiwa faili zake hazipo katika saraka ya nyumbani ya mtumiaji, baada ya node itabidi kutaja kamili kuwaacha.
- Uzinduzi wa mafanikio ya bot unaonyeshwa na usajili ulioonekana "Tayari!".
- Fungua na uhakikishe kwamba bot ilienda kwenye hali ya "Online".
Hatua ya 5: Kuandika coder kuu ya bot ya muziki
Mchakato mgumu zaidi ulibakia - kuandika msimbo wa msingi kwa bot ya muziki. Kuna orodha ya kazi ambazo zinapaswa kufanya: Kusoma ujumbe na amri za usindikaji, ufafanuzi wa jina la wimbo au anwani yake, kuunganisha kwenye kituo cha sauti na kucheza. Ruhusa kwenye bot hii yote ni, hivyo unahitaji tu kutaja vitendo kwa kutumia kazi za JavaScript, ambazo hufanyika katika faili sawa ya "index.js".
Ongeza kipengele rahisi kusoma ujumbe:
Mteja.on ('ujumbe', ujumbe wa async => {
}
Inajumuisha mistari miwili tu, lakini itawawezesha bot kuchukua swala la desturi na kusindika kwa usahihi. Inaweza kusema kuwa hii ni moja ya timu muhimu zaidi kwa bots ya aina yoyote. Hakikisha kuongeza kupuuza ujumbe kutoka kwa bots nyingine kwa kuingia
ikiwa (ujumbe.author.bot) kurudi;
Hii inaepuka migogoro wakati wa kutumia bots nyingi kwenye seva wakati huo huo. Kisha, itakuwa muhimu kuangalia kiambishi awali ili bot kukubali timu au kurudi.
Ikiwa (ujumbe.content.startswith (kiambishi)) kurudi;
Kuangalia amri zilizozinduliwa zinafanywa kwa kutumia rahisi kama waendeshaji, na kubuni katika kesi yetu inaonekana kama hii:
Const serverqueue = foleni.Get (ujumbe.Guild.id);
ikiwa (ujumbe.content.startwith (`$ {prefix} kucheza`)) {
Kutekeleza (ujumbe, serverqueue);
Kurudi;
} Mwingine kama (ujumbe.content.startwith (`$ {prefix} skip`)) {
Ruka (ujumbe, serverqueue);
Kurudi;
} Mwingine kama (ujumbe.content.startwith (`$ {prefix} stop`)) {
Kuacha (ujumbe, serverqueue);
Kurudi;
} Mwingine {
Ujumbe.channel.send ('lazima utumie amri iliyopo!')
}
Tafadhali kumbuka kuwa kazi ya kutuma ('') inatuma ujumbe kwa mtumiaji ikiwa inapoingia kwa ghafla amri isiyo ya kazi. Ujumbe huu unaweza kuhariri, kubadilisha usajili katika quotes.
Sasa bot alijifunza kuchukua amri, lakini mpaka inaweza kuingiliana nao, kwa kuwa vitendo si maalum. Kwanza kuongeza amri ya kucheza, ambayo ni wajibu wa kucheza. Kwa hiyo, safu inahitajika kwa fomu ifuatayo:
Const foleni = ramani mpya ();
Anatuma amri zote katika foleni na hufanya nyimbo za kucheza tu wakati uliopita uliopita. Kisha, itakuwa muhimu kuunda kazi ambayo itaangalia ikiwa mtumiaji ameunganishwa na kituo cha sauti na kama bot ni idhini inayofanana.
Kazi ya async kutekeleza (ujumbe, serverqueue) {
Const args = ujumbe.content.split ('');
Const voicechannel = ujumbe.member.voicechannel;
Ikiwa (! Voicechannel) kurudi ujumbe.Channel.Send ('kusikiliza muziki, unahitaji kuwa katika kituo cha sauti!');
Vidokezo vya Const = Voicechannel.Permissionsfor (ujumbe.client.user);
Ikiwa (ruhusa.has ('kuunganisha') ||! Ruhusa.has ('sema')) {
Kurudi ujumbe.channel.send ('Ninahitaji vibali kujiunga na kuzungumza sauti yako ya sauti!');
}
}
Hatua inayofuata - Kuunganisha maktaba ya YTDL, kwa kuwa bot hii itasoma jina la wimbo kwenye kiungo kutoka kwa YouTube, baada ya hapo inachezwa kwenye seva. Itachukua kuingiza kipande kidogo cha kuingiza msimbo.
Const sondinfo = wanasubiri YTDL.GeTinfo (Args [1]);
Maneno ya Const = {
Kichwa: songinfo.title,
URL: songinfo.video_url,
};
Blogu ya pili ya kificho itawawezesha kuelewa ikiwa kuna nyimbo kwenye foleni au unaweza kuunganisha mara moja kwenye kituo cha sauti na kuanza kucheza.
Ikiwa (! SERVERQUEUE) {
} Mwingine {
Serverqueue.songs.push (wimbo);
Console.log (serverqueue.songs);
Kurudi ujumbe.channel.send (`$ {song.title} imeongezwa kwenye foleni!`);
}
Kisha inakuja ngumu kwa programu ya novice mpango wa mkataba ambao huongeza wimbo ndani ya safu na hufanya sawa kila wakati unapoingia! Jaribu, ukichunguza foleni na kuchagua hatua sahihi. Jihadharini na maoni yaliyotolewa, ambayo inakuwezesha kukabiliana na hila zote.
// Kujenga mkataba wa foleni.
Const QueuConst = {
Textchannel: ujumbe.channel,
VoiceChannel: VoiceChannel,
Uhusiano: null,
Nyimbo: [],
Volume: 5,
Kucheza: Kweli,
};
// Weka foleni na mkataba wetu.
foleni.Set (ujumbe.Guild.id, foleuconst);
// Weka muundo katika nyimbo zetu
QueuCont.songs.push (wimbo);
jaribu {
// Hapa tunajaribu kujiunga na mazungumzo ya sauti na kuokoa uhusiano katika kitu
Var uhusiano = wanasubiri voicechannel.join ();
QueuCont.Connection = uhusiano;
// Kuita kazi ya kucheza ili kuanza wimbo
Kucheza (Message.Guild, QueuConst.songs [0]);
} Catch (err) {
// Onyesha ujumbe wa kosa ikiwa bot haiwezi kujiunga na mazungumzo ya sauti
Console.log (kosa);
foleni.detete (ujumbe.Guild.id);
Kurudi ujumbe.channel.send (kosa);
}
Kwa foleni, kila kitu ni wazi, lakini bado si kucheza nyimbo, kwa sababu hakuna kazi ya kazi ya kucheza. Ili kufanya hivyo katika msimbo ni muhimu kuongeza muundo
Kazi ya kucheza (Chama, Maneno) {
Const Serverqueue = foleni.Pet (Guild.id);
Ikiwa (wimbo) {
Serverqueue.voicechannel.leave ();
foleni.delete (guild.id);
Kurudi;
}
}
Kucheza huanza kutumia kazi ya playstream () na kiungo maalum kwenye wimbo.
Const dispatcher = serverqueue.connection.playstream (YTDL (song.url))
.n ('mwisho', () => {
Console.log ('Muziki umeisha!');
// kuondosha wimbo wa kumaliza kutoka foleni.
serverqueue.songs.shift ();
// Tena husababisha kazi ya kucheza na wimbo wafuatayo
Kucheza (Chama, Serverqueue.Songs [0]);
})
.n ('kosa', kosa => {
Console.error (kosa);
});
dispatcher.setvolumelogarithmic (serverqueue.volume / 5);
Ikiwa unataka kuongeza kazi ya skip ya wimbo, kwa mfano, unapoamua kucheza orodha ya kucheza, kwanza utunzaji wa amri inayofaa, na kisha uongeze kipande hicho:
Kazi skip (ujumbe, serverqueue) {
ikiwa (ujumbe wa ujumbe.member.voicechannel) kurudi ujumbe.Channel.Send ('unapaswa kuwa katika kituo cha sauti kuacha muziki!');
Ikiwa (! Serverqueue) kurudi ujumbe.Channel.Send ('Hakuna wimbo ambao ningeweza kuruka!');
Serverqueue.connection.dispatcher.end ();
}
Takriban mpango huo pia hufanya kazi ya kuacha, lakini kizuizi na msimbo hupata kuangalia tofauti:
Kazi kuacha (ujumbe, serverqueue) {
Ikiwa (! ujumbe.member.voicechannel) kurudi ujumbe.channel.send ('
Lazima uwe kwenye kituo cha sauti ili kuacha muziki! ');
Serverqueue.songs = [];
Serverqueue.connection.dispatcher.end ();
}
Fikiria kwamba taarifa iliyotolewa hapo juu inafaa kwa watumiaji hao ambao tayari wamejifunza lugha ya JavaScript au wanahusika tu katika kusoma na kuamua kuunda bot ya muziki. Ikiwa huna ujuzi kwa ujumla na vitalu maalum na msimbo usiosema chochote, tu ingiza msimbo mzima wa chanzo kwenye faili, uweke nafasi ya ujumbe kutoka kwenye bot katika Kirusi (wao ni katika quotes) na uhifadhi mabadiliko. Msimbo wote wa chanzo una aina hii:
Const Discord = Inahitaji ('Discord.js');
fanya {
Kiambishi,
token.
} = Inahitaji ('./ config.json');
Const YTDL = Inahitaji ('YTDL-Core');
Const Client = New Conford.Client ();
Const foleni = ramani mpya ();
Mteja.once ('tayari', () => {
Console.log ('Tayari!');
});
Mteja.Once ('kuunganisha', () => {
Console.log ('Kuunganisha!');
});
Mteja.Once ('kukataza', () => {
Console.log ('kukata!');
});
Mteja.on ('ujumbe', ujumbe wa async => {
ikiwa (ujumbe.author.bot) kurudi;
Ikiwa (ujumbe.content.startswith (kiambishi)) kurudi;
Const serverqueue = foleni.Get (ujumbe.Guild.id);
ikiwa (ujumbe.content.startwith (`$ {prefix} kucheza`)) {
Kutekeleza (ujumbe, serverqueue);
Kurudi;
} Mwingine kama (ujumbe.content.startwith (`$ {prefix} skip`)) {
Ruka (ujumbe, serverqueue);
Kurudi;
} Mwingine kama (ujumbe.content.startwith (`$ {prefix} stop`)) {
Kuacha (ujumbe, serverqueue);
Kurudi;
} Mwingine {
Ujumbe.channel.send ('unahitaji kuingia amri halali!')
}
});
Kazi ya async kutekeleza (ujumbe, serverqueue) {
Const args = ujumbe.content.split ('');
Const voicechannel = ujumbe.member.voicechannel;
Ikiwa (! VoiceChannel) kurudi ujumbe.Channel.Send ('unahitaji kuwa kwenye kituo cha sauti ili kucheza muziki!');
Vidokezo vya Const = Voicechannel.Permissionsfor (ujumbe.client.user);
Ikiwa (ruhusa.has ('kuunganisha') ||! Ruhusa.has ('sema')) {
Kurudi ujumbe.channel.send ('Ninahitaji ruhusa ya kujiunga na kuzungumza kwenye kituo chako cha sauti!');
}
Const sondinfo = wanasubiri YTDL.GeTinfo (Args [1]);
Maneno ya Const = {
Kichwa: songinfo.title,
URL: songinfo.video_url,
};
Ikiwa (! SERVERQUEUE) {
Const QueuConst = {
Textchannel: ujumbe.channel,
VoiceChannel: VoiceChannel,
Uhusiano: null,
Nyimbo: [],
Volume: 5,
Kucheza: Kweli,
};
foleni.Set (ujumbe.Guild.id, foleuconst);
QueuCont.songs.push (wimbo);
jaribu {
Var uhusiano = wanasubiri voicechannel.join ();
QueuCont.Connection = uhusiano;
Kucheza (Message.Guild, QueuConst.songs [0]);
} Catch (err) {
Console.log (kosa);
foleni.detete (ujumbe.Guild.id);
Kurudi ujumbe.channel.send (kosa);
}
} Mwingine {
Serverqueue.songs.push (wimbo);
Console.log (serverqueue.songs);
Kurudi ujumbe.channel.send (`$ {song.title} imeongezwa kwenye foleni!`);
}
}
Kazi skip (ujumbe, serverqueue) {
Ikiwa (! ujumbe.member.voicechannel) kurudi ujumbe.Channel.Send ('unapaswa kuwa kwenye kituo cha sauti ili kuacha muziki!');
Ikiwa (! Serverqueue) kurudi ujumbe.Channel.Send ('Hakuna wimbo ambao ningeweza kuruka!');
Serverqueue.connection.dispatcher.end ();
}
Kazi kuacha (ujumbe, serverqueue) {
Ikiwa (! ujumbe.member.voicechannel) kurudi ujumbe.Channel.Send ('unapaswa kuwa kwenye kituo cha sauti ili kuacha muziki!');
Serverqueue.songs = [];
Serverqueue.connection.dispatcher.end ();
}
Kazi ya kucheza (Chama, Maneno) {
Const Serverqueue = foleni.Pet (Guild.id);
Ikiwa (wimbo) {
Serverqueue.voicechannel.leave ();
foleni.delete (guild.id);
Kurudi;
}
Const dispatcher = serverqueue.connection.playstream (YTDL (song.url))
.n ('mwisho', () => {
Console.log ('Muziki umekamilika!');
serverqueue.songs.shift ();
Kucheza (Chama, Serverqueue.Songs [0]);
})
.n ('kosa', kosa => {
Console.error (kosa);
});
dispatcher.setvolumelogarithmic (serverqueue.volume / 5);
}
Mteja.login (ishara);
Baada ya kukamilika, ni bora kuanzisha upya bot, baada ya hapo unaweza kwenda kwenye seva yako, kuunganisha kwenye kituo cha sauti na kuingia amri yoyote ya mwingiliano, ukiangalia jinsi ya kuitikia kwenye bot.
Ikiwa tofauti ya juu ya bot haifai kwako, unaweza kupata codes za chanzo kwenye github sawa na kuzipiga kwenye kompyuta yako. Kanuni ya usajili na uzinduzi bado ni sawa, hivyo kama ni lazima, tu hariri code kumaliza, na kisha kuendelea kupima bot.
Katika makala hii, hatukuathiri utekelezaji wa boti kwenye mwenyeji, usambaze kati ya watumiaji wengine, kuunda avatar na matumizi ya maeneo ya wazi, kutoka ambapo inaweza kuidhinishwa. Yote hii ni michakato tofauti ambayo inapaswa kuhusishwa tu wakati umefanya ujuzi wako kuunda bots na uko tayari kusambaza miradi kwenye mtandao.