Dina tulisan ieu, urang bakal ngabahas ku cara nyiptakeun bot pikeun maén musik anu disusakeun. Anjeun ngan ukur tiasa nyalin kode sadayana dikaluarkeun, sareng édit ka diri pikeun diri upami anjeun gaduh kaahlian JavaScript. Bot anu diciptakeun ku urang, tapi dina sababaraha énggal pangguna anu masih tiasa muka masalah anu béda, sahingga ogé muncul, sapertos kitu.
Upami tétéla yén bahan ieu rumit pikeun anjeun atanapi henteu cocog pikeun alesan sanésna, pake bot gratis siap-siap maén musik. Artikel dina tautan ieu di handap anjeun bakal mendakan inpormasi anu lengkep ngeunaan ieu sareng anjeun tiasa ngalaksanakeun tugasna.
Maca deui:
Nambahkeun bot musik ka server di Diskon
Maén musik ngalangkungan bot di discord
Léngkah 1: Nyiptakeun aplikasi énggal
Unggal bot pikeun Piceun kedah didaptarkeun dina portal resmi pikeun pamekar. Janten anjeun nampi aksés ka sadaya setelan anu diperyogikeun anu aya hubungan sareng ijin sareng kalakuan umum tina bot, anjeun tiasa nyalin ti pengenal sareng otoritas anu unik sareng diperyogikeun pikeun pangembangan pribadi.
Pindah ka situs wéb resmi
- Anggo tautan di luhur pikeun muka halaman utama portal pikeun pamekar, log ka akun pribadi anu unsur sareng klik aplikasi anyar "pikeun nyiptakeun aplikasi énggal.
- Lebetkeun nami, dipasihan keunikan, sabab upami aya seueur boteng sareng nami anu sami, éta moal tiasa nyiptakeun - perdara éta dibéjaan.
- Nalika parantos teraskeun, muka ménu dina situs sareng pilih "Bot".
- Sabalikna anu "ngawangun-A-A-Bot" Klik dina "Tambihkeun Bot".
- Konpirmasi tambahan dina ur aplikasi anu dipilih.
- Ngaliwatan menu anu akrab, angkat ka «OAut2».
- Bagian ieu tanggel waler pikeun parameter umum tina bot sareng otorisasi na. Dina "scopes" blok, nyirian paragraf "bot".
- Dina daptar idin, pastikeun pikeun ngaktipkeun sambungan kana saluran sora jeung kamampuhan pikeun nyarita, sakumaha anu kasebut dipikabutuh pikeun musik siaran salajengna.
- bot kudu bisa maca jeung ngirim talatah, jadi ulah poho pikeun ngaktipkeun pilihan ieu dina bagian kalayan téks obrolan idin. Tangtu, anjeun tiasa nyadiakeun sagala idin sakaligus, tapi pendekatan ieu luar biasa, utamana dina kasus dimana anjeun nyieun bot pikeun hiji pamaké massa.
- Pas setelan idin geus réngsé, nyalin link kanggo otorisasina mimitina tina bot on server, sabab lamun heunteu nambahkeun eta dugi tétéla.
- Tuturkeun tumbu ieu sareng pilih server test mana nu Anjeun hoyong pariksa bot nu.
- Pastikeun newak na nungguan pikeun émbaran ngeunaan otorisasina suksés.
Ayeuna anjeun gaduh bot ku token unik, sarta bot nu geus kungsi ditambahkeun kana server, tapi bari dina modeu offline. Ngamimitian deui, éta kudu nedunan sababaraha lampah deui dina komputer lokal, saprak bari urang teu ngabongkar momotanana nu boting boting pikeun operasi offline.
Hambalan 2: lampah Preparatory
lampah Preparatory kaasup kreasi directories jeung payel nu diperlukeun, pamasangan parabot na kabebasan maranehna. Aya nanaon nyusahkeun di ieu, anjeun ngan butuh sangkan tiap Peta kahareupna taliti handap kasalahan dina tahap nanaon.
- Jieun folder kalayan nami bot nu. Anjeun tiasa milih tempat mana wae, tapi dina folder ngarep pamaké téh pangalusna cocog pikeun ieu.
- Jieun dua file di eta: "Config.json" jeung "index.js". Dina kahiji install konfigurasi sakabéh bot nu - awalan sarta token unik, sarta dina kadua - sakabéh kode program kalayan paréntah tur tugas umum tina alat ieu.
- Pikeun karya bot bakal butuh Node.js. alat ieu dirancang pikeun ngamimitian Aksara dina komputer lokal. Tuturkeun tumbu di handap tur ngundeur installer na keur Windows.
Download node.js ti situs resmi
- Nyangka pikeun ngundeur file laksana laksana, ngajalankeun eta na lulus prosedur instalasi basajan, di handap paréntah ditampilkeun dina layar.
- Sanggeus éta, buka "Line Komando" merenah pikeun anjeun, contona, ngasupkeun CMD dina "Run" utiliti (dimimitian kenop Win + Sunda kombinasi).
- Install modul ka tempat gawe jeung API Discord, nu disebut "discord.js". Jang ngalampahkeun ieu, dina konsol jandela nu muka, asupkeun NPM nu install discord.js ffmpeg-binaries opsscript YTDL-Core --Save terus pencét asupkeun - sahingga geuwat nambahkeun sagala kabebasan perlu.
- Ngadagoan beja dina layar dina instalasi sukses, tanpa nutup konsol jandela ayeuna. Lamun kasalahan némbongan, diajar kode maranéhanana sarta nganggo search engine pikeun manggihan kaputusan gawé dina panglawungan atawa ramatloka resmi.
Hasilna, folder imah pamaké urang kedah némbongan file pakait jeung komponén Node.js sarta ditambahkeun sanggeus modul nu. Pareuman terus hurungkeun deui komputer supados bot nu teu boga kasusah ngamimitian, teras buka lengkah salajengna.
Hambalan 3: File Edit Bot Konfigurasi
Anjeun geus nyaho yén di file konfigurasi bot nu dijieun bakal aya sakabeh pasangan jajar kode anu tanggung jawab awalan dipaké (simbol tadi ngetik Bandung paréntah dina server) sarta token unik nu ngahartikeun aplikasi dina API teh. Pikeun minuhan sagala lampah salajengna, urang nyarankeun ngundeur program jeung JS rojongan sintaksis atawa pangropéa téksu canggih lamun kieu teu acan rengse saméméhna. Artikel dina link di handap ieu anjeun bakal bisa familiarize diri jeung solusi nu cocog aya.
Baca leuwih: Milih lingkungan ngembangkeun pikeun program
Pas eta dipasang dina komputer tur siap gawe, maneh aman tiasa ngawitan édit file konfigurasi, ngasupkeun data pamaké dinya.
- Ngajalankeun file config.js ngaliwatan pangropéa téksu atanapi ngembangkeun lingkungan, nyelapkeun kode handap.
{
"Rarangkén Hareup": "!"
"Token": "anjeun-toke"
}
Ngarobah awalan dina tanda petik ganda ka dipikahoyong atawa ninggalkeun hiji tanda exclamation. Conto paréntah ngagunakeun tanda ieu Sigana mah ieu :! Play.
- Buka bot anjeun dina portal ngembangkeun, manggihan hiji token unik aya na nyalin eta.
- Selapkeun-toke Anjeun inspeksi gantina henteu sareng mupus tanda petik ganda.
- Ngahémat parobihan sareng tutup file ieu. Ku jalan kitu, anjeun tiasa ngalaksanakeun tindakan anu sami liwat notebook standar ".
Dina tindakan ieu nganggo file konfigurasi réngsé, teu aya deui anjeun kedah resep kana garis kode tunggal. Tutup, tanpa hilap nyimpen EDITS dilakukeun, teras teraskeun dugi ka nyerat BOT anu maén.
Léngkah 4: sidang dimimitian bot
Mimiti, urang kedah mastikeun yén botina umumna ngajalankeun dina standar sareng angkat ka modeu online, kedah kedah nyerat bagian utami tina Cord UPOR.JS, teras nganggo Node.js ngamimitian.
- Ngalangkungan lingkungan pangembangan atanapi pangropéa téks anu dipilih, muka file anu disebut pikeun ngedit.
- Selapkeun blok kode anu tanggung jawab pikeun pamasangan musabab sareng nunjukkeun modul anu dianggo:
Rélasi = ngabutuhkeun ('diskring.js');
const {
Fungsi,
taria
} = Ngabutuhkeun ('./ config.Json');
mangrupikeun ytdl = meryogikeun ('ytdl-inti');
- Kalayan bantosan token anu sateuacana didieu, nyiptakeun klien sareng login, anu dilaksanakeun ku ngan ukur dua garis anu saderhana:
Klién = Pelanggan Anyar.llient ();
Klien.Login (token);
- Tetep ngan ukur pikeun netepkeun garis dasar anu terakhir pikeun ngadangukeun bot.
Klien.once ('siap', () => {
Konsol.log ('siap!');
});
Klien.once ('sambungkeun', () => {
Konsol.log ('sambungkeun!');
});
Klién.once ('Pegatkeun', () => {
Konsol.log ('Pegatkeun!');
});
- Ngembangkeun "File" sareng nyimpen parobihan anu dilakukeun.
- Ngajalankeun konsol deui dina cara anu gampang.
- Lebetkeun paréntah Edit.js pikeun ngamimitian skrip Bot.
- Upami file na henteu aya di diréktori bumi pangguna, saatos titik bakal kedah nunjukkeun lengkep.
- Peluncuran anu suksés dina bot dituduhkeun ku prasasti anu katémbong "siap!".
- Buka diskrang sareng pastikeun yén bot angkat ka status "Online".
Léngkah 5: Nulis coder utama bot musik
Prosés paling pajeulit tetep - nulis kodeu dasar pikeun bot musik. Aya daptar tugas nu kudu nedunan: pesen maca na Paréntah ngolah, harti ngaran lagu atanapi alamat na, kumaha nyambungkeun kana channel sora na playback. Idin kana sagala bot ieu, jadi Anjeun ngan perlu nangtukeun lampah maké fungsi JavaScript, nu lumangsung dina "index.js" sarua file.
Tambahkeun ciri basajan maca seratan:
Client.on ( 'Pesen', Async Pesen => {
}
Ieu ngawengku ukur dua garis, tapi bakal ngidinan bot nu nyandak pamundut custom sarta diprosés neuleu. Ieu bisa ngomong yén ieu téh salah sahiji tim pangpentingna pikeun bot sahiji jenis nanaon. Jadi pasti pikeun nambahkeun seratan ignoring tina bot séjén ku cara nuliskeun
lamun (message.author.bot) balik deui;
Ieu avoids bentrok bari maké sababaraha bot on server sakaligus. Hareup, éta bakal perlu pariksa awalan supados bot nu katampa tim atawa balik deui.
lamun (Message.content.startSwith (Rarangkén Hareup)!) Balik deui;
Mariksa Paréntah dibuka dilumangsungkeun maké basajan IF operator, sarta rarancang dina nuhun hal kami kawas ieu:
Const ServerQueue = Queue.Get (Message.Guild.ID);
lamun (Message.Content.startSwith ( `$ {awalan} play`)) {
Hajar (Pesen, ServerQueue);
balik;
} Sejenna lamun (message.content.startswith ( `$ {awalan} Skip`)) {
Skip (Pesen, ServerQueue);
balik;
} Sejenna Mun (message.content.startSwith ( `$ {awalan} stop`)) {
Eureun (Pesen, Serverqueue);
balik;
} Sejenna {
Message.Channel.send ( 'Anjeun kudu make paréntah aya!')
}
Perhatikeun yén ngirim ( '') fungsi ngirimkeun pesen ka pamaké upami dumadakan asup kana paréntah non-berpungsi. pesen kieu anjeun bisa ngedit, ngarobah prasasti di tanda petik.
Ayeuna bot nu diajar nyandak Paréntah, tapi nepika bisa interaksi jeung aranjeunna, saprak tindakan teu dieusian. Mimiti nambahkeun paréntah Play, anu tanggung jawab playback. Pikeun éta, hiji Asép Sunandar Sunarya geus diperlukeun jeung formulir di handap:
Const ngantri = Anyar Peta ();
Anjeunna ngirimkeun sagala paréntah dina antrian sarta ngajadikeun lagu pikeun muterkeunana ukur nalika saméméhna hiji tungtung. Hareup, éta bakal perlu nyieun hiji fungsi anu bakal mariksa lamun pamaké disambungkeun ka saluran sora na naha bot mangrupa idin pakait.
ASYNC fungsi ngaéksekusi (pesen, SERVERQUEUE) {
const args = message.content.split ( '');
Const VoiceChannel = Message.Member.VoiceChannel;
lamun (! VoiceChannel) Balik deui Message.Channel.send ( 'Pikeun ngadengekeun musik, Anjeun kudu jadi di channel sora!');
const Pangidinan = VoiceChannel.permissionSFOR (Message.Client.user);
Mun (! Permissions.has ( 'Connect') ||! Permissions.has ( 'nyarita')) {
Balik deui Message.channel.send ( 'Abdi peryogi idin pikeun gabung jeung nyarita channel sora anjeun!');
}
}
Salajengna action - Nyambungkeun perpustakaan YTDL, saprak bot ieu bakal baca nami lagu dina link ti YouTube, nu satutasna mah dimaénkeun dina server. Bakal butuh nyelapkeun sapotong leutik kode sisipan.
Const Songinfo = await ytdl.getinfo (args [1]);
Const Song = {
Judul: Songinfo.title,
URL: Songinfo.Video_URL,
};
Blok hareup kode bakal ngidinan Anjeun pikeun ngarti lamun aya lagu dina antrian atawa anjeun bisa langsung nyambung ka kanal sora tur mimitian playback.
Mun (! Serverqueue) {
} Sejenna {
ServerQueue.Songs.push (Song);
Console.log (Serverqueue.songs);
Balik deui Message.Channel.send ( `$ {Song.title} geus ditambahkeun ka antrian`!);
}
Salajengna asalna saeutik nyusahkeun pikeun programer novice hiji skéma kontrak nu nambihan lagu a kana hiji Asép Sunandar Sunarya sarta ngajadikeun sarua unggal waktu anjeun asupkeun! Play, mariksa antrian sarta milih peta katuhu. Bayar perhatian ka komentar dibere, nu ngidinan Anjeun pikeun nungkulan sagala subtleties.
// Nyieun kontrak bagi antrian
Const QueueContruct = {
TextChannel: Message.Channel,
VoiceChannel: VoiceChannel,
Sambungan: hypothesis,
Lagu: [],
Volume: 5,
Maén: Bener,
};
// Siapkeun antrian jeung kontrak urang
queue.set (Message.Guild.ID, QueueContruct);
// Selapkeun komposisi kana Asép Sunandar Sunarya kami lagu
queuecontruct.songs.push (lagu);
coba {
// Di dieu urang nyoba gabung dina sora obrolan jeung simpen dina sambungan di objék
sambungan var = voicechannel.join await ();
queuecontruct.connection = Connection;
// Nyauran fungsi playback ngamimitian lagu
Play (Message.Guild, Queuecontruct.songs [0]);
} Nyekel (ERR) {
// Pintonan hiji pesen kasalahan lamun bot nu teu tiasa gabung sora obrolan
Console.log (ERR);
queue.delete (Message.Guild.ID);
Balik deui Message.Channel.send (ERR);
}
Kalawan antrian, sagalana jelas, tapi masih teu maénkeun lagu, sabab euweuh ngerjakeun keur fungsi Play. Jang ngalampahkeun ieu kode nu perlu ditambahkeun struktur
Fungsi Play (kanu, lagu) {
Const ServerQueue = queue.get (guild.id);
Mun (! Song) {
ServerQueue.VoiceChannel.Leave ();
queue.delete (guild.id);
balik;
}
}
Maén dimimitian ngagunakeun PlayStream () fungsi jeung link dieusian pikeun lagu eta.
Const Dispatcher = ServerQueue.Connection.PlayStream (YTDL (Song.url))
.on ( 'Ahir', () => {
Console.log ( 'Musik téh leuwih!');
// ngaluarkeun lagu rengse tina antrian
serverqueue.songs.shift ();
// deui ngabalukarkeun fungsi playback jeung lagu handap
Maén (kanu, Serverqueue.songs [0]);
})
.on ( 'kasalahan', kasalahan => {
Console.error (Kasalahan);
});
dispatcher.setvolumelogarithmic (serverqueue.volume / 5);
Upami anjeun hoyong pikeun nambahkeun fungsi lagu skip, contona, mun anjeun mutuskeun maénkeun hiji playlist, miara nyokot mimiti paréntah luyu, lajeng nambahkeun sempalan saperti:
Fungsi skip (Pesen, Serverqueue) {
(! Message.member.voiceChannel) lamun Balik deui Message.Channel.send ( 'Anjeun kudu dina channel sora mun eureun musik!');
Mun (Serverqueue!) Balik deui Message.Channel.send ( 'aya lagu nu kuring bisa skip!');
ServerQueue.connection.dispatcher.end ();
}
Ngadeukeutan skéma sarua ogé jalan fungsi eureun, tapi blok kalawan kode nu acquires katingal rada beda:
Fungsi STOP (Pesen, Serverqueue) {
lamun (! Message.member.VoiceChannel) Balik deui Message.Channel.send ( '
Anjeun kudu jadi dina channel sora ngeureunkeun musik ')!;
ServerQueue.Songs = [];
ServerQueue.connection.dispatcher.end ();
}
Mertimbangkeun yén informasi dibere luhur anu merenah éksklusif pikeun maranéhanana pamaké anu geus akrab jeung bahasa JavaScript atawa anu ukur dina aktipitas diajar sarta mutuskeun pikeun nyieun bot musik. Upami Sadérék teu kaahlian sorangan sacara umum sarta blok dieusian ku kode nu anjeun teu ngomong nanaon pisan, kantun ngalebetkeun sakabéh kode sumber kana file, ngaganti pesen ti bot kana Rusia (aranjeunna dina tanda petik) jeung ngahemat teh robah. Kabéh kode sumber boga nanaon ieu:
Const Discord = merlukeun ( 'discord.js');
const {
awalan,
token
} = Merlukeun ( './ config.json');
const YTDL = merlukeun ( 'YTDL-core');
Const klien = discord.client Anyar ();
Const ngantri = Anyar Peta ();
Client.ONCE ( 'Siap', () => {
Console.log ( 'Siap!');
});
Client.Once ( 'ReconNecting', () => {
Console.log ( 'ReconNecting!');
});
Client.ONCE ( 'megatkeun', () => {
Console.log ( 'Pegatkeun!');
});
Client.on ( 'Pesen', Async Pesen => {
lamun (message.author.bot) balik deui;
lamun (Message.content.startSwith (Rarangkén Hareup)!) Balik deui;
Const ServerQueue = Queue.Get (Message.Guild.ID);
lamun (Message.Content.startSwith ( `$ {awalan} play`)) {
Hajar (Pesen, ServerQueue);
balik;
} Sejenna lamun (message.content.startswith ( `$ {awalan} Skip`)) {
Skip (Pesen, ServerQueue);
balik;
} Sejenna Mun (message.content.startSwith ( `$ {awalan} stop`)) {
Eureun (Pesen, Serverqueue);
balik;
} Sejenna {
Message.Channel.send ( 'Anjeun kudu Asupkeun Komando Sah!')
}
});
ASYNC fungsi ngaéksekusi (pesen, SERVERQUEUE) {
const args = message.content.split ( '');
Const VoiceChannel = Message.Member.VoiceChannel;
lamun Balik deui Message.Channel.send ( 'Anjeun perlu di Hiji sora Channel ka Play Music!') (VoiceChannel!);
const Pangidinan = VoiceChannel.permissionSFOR (Message.Client.user);
Mun (! Permissions.has ( 'Connect') ||! Permissions.has ( 'nyarita')) {
Balik deui Message.Channel.send ( 'I ngabutuhkeun nu Pangidinan mun Gabung jeung degung di Channel Sora anjeun!');
}
Const Songinfo = await ytdl.getinfo (args [1]);
Const Song = {
Judul: Songinfo.title,
URL: Songinfo.Video_URL,
};
Mun (! Serverqueue) {
Const QueueContruct = {
TextChannel: Message.Channel,
VoiceChannel: VoiceChannel,
Sambungan: hypothesis,
Lagu: [],
Volume: 5,
Maén: Bener,
};
queue.set (Message.Guild.ID, QueueContruct);
queuecontruct.songs.push (lagu);
coba {
sambungan var = voicechannel.join await ();
queuecontruct.connection = Connection;
Play (Message.Guild, Queuecontruct.songs [0]);
} Nyekel (ERR) {
Console.log (ERR);
queue.delete (Message.Guild.ID);
Balik deui Message.Channel.send (ERR);
}
} Sejenna {
ServerQueue.Songs.push (Song);
Console.log (Serverqueue.songs);
Balik deui Message.Channel.send ( `$ {Song.title} geus ditambahkeun ka antrian`!);
}
}
Fungsi skip (Pesen, Serverqueue) {
lamun (message.member.voiceChannel!) Balik deui Message.Channel.send ( 'Anjeun kudu jadi dina Channel Sora mun gaul The Music!');
lamun (ServerQueue!) Balik deui Message.Channel.send ( 'aya Song Éta I bisa Skip!');
ServerQueue.connection.dispatcher.end ();
}
Fungsi STOP (Pesen, Serverqueue) {
lamun (message.member.voiceChannel!) Balik deui Message.Channel.send ( 'Anjeun kudu jadi dina Channel Sora mun gaul The Music!');
ServerQueue.Songs = [];
ServerQueue.connection.dispatcher.end ();
}
Fungsi Play (kanu, lagu) {
Const ServerQueue = queue.get (guild.id);
Mun (! Song) {
ServerQueue.VoiceChannel.Leave ();
queue.delete (guild.id);
balik;
}
Const Dispatcher = ServerQueue.Connection.PlayStream (YTDL (Song.url))
.on ( 'Ahir', () => {
Console.log ( 'Musik réngsé!');
serverqueue.songs.shift ();
Maén (kanu, Serverqueue.songs [0]);
})
.on ( 'kasalahan', kasalahan => {
Console.error (Kasalahan);
});
dispatcher.setvolumelogarithmic (serverqueue.volume / 5);
}
Client.login (token);
Kana parantosan, eta leuwih hade mun balikan deui kana bot, nu satutasna anjeun tiasa buka server Anjeun, sambungkeun ka saluran sora na asupkeun paréntah salah sahiji interaksi, mariksa cara diréaksikeun jeung bot nu.
Lamun varian luhur tina bot nu teu cocog keur anjeun, anjeun tiasa manggihan Konci sumber dina GitHub sarua jeung nyalin éta ka komputer. Prinsip pendaptaran jeung peluncuran tetep sarua, jadi lamun perlu, kantun ngedit kode réngsé, lajeng lumangsungna nguji bot nu.
Dina artikel ieu, urang teu mangaruhan dina ngurangan tina bot dina hosting, ngadistribusikaeun dinya diantara pamaké séjén, nyieun hiji avatar na pamakéan situs buka, ti mana eta bisa otorisasi. Kabéh ieu prosés misah nu kudu aktipitas ngan lamun geus diasah skill anjeun pikeun nyieun bot na anu siap ngadistribusikaeun proyék dina jaringan.