Discord Player adalah kerangka kerja yang kuat untuk mengembangkan bot Discord Music menggunakan JavaScript dan TypeScript. Itu dibangun di atas perpustakaan discord-voip dan menawarkan seperangkat alat lengkap yang dapat disesuaikan, menjadikannya salah satu kerangka kerja yang paling memperkaya fitur di kota.
Mode kompatibilitas Eris tidak mendukung pengendali
VoiceStateUpdate
. Anda perlu menanganinya secara manual.
Discord Player memerlukan Discord.js 14.0 atau lebih tinggi. Harap pastikan bahwa Anda memiliki versi yang kompatibel dengan menjalankan npm list discord.js
di terminal Anda. Jika Anda menggunakan versi sebelumnya, harap perbarui. Panduan discord.js menyediakan sumber daya untuk membantu Anda dalam proses pembaruan.
$ npm install --save discord-player # main library
$ npm install --save @discord-player/extractor # extractors provider
Discord Player mengenali
@discord-player/extractor
dan memuatnya secara otomatis secara default. Cukup aktifkanawait player.extractors.loadDefault()
.
Karena Discord hanya menerima paket opus, Anda perlu menginstal perpustakaan opus. Discord Player mendukung beberapa perpustakaan karya, seperti:
Di antaranya, mediaplex adalah perpustakaan yang direkomendasikan karena menambahkan lebih banyak fungsi ke pemutar perselisihan daripada sekadar antarmuka libopus. Anda dapat menginstal perpustakaan opus dengan menjalankan:
$ npm install --save mediaplex
# or
$ npm install --save @discordjs/opus
# or
$ npm install --save opusscript
# or
$ npm install --save @evan/opus
# or
$ npm install --save node-opus
FFmpeg atau Avconv diperlukan untuk transcoding media. Anda dapat memperolehnya dari https://ffmpeg.org atau melalui npm.
Kami tidak menyarankan menginstal ffmpeg melalui npm karena biner yang diambil dari npm diketahui tidak stabil. Disarankan untuk menginstalnya dari sumber resmi.
$ npm install --save ffmpeg-static
# or
$ npm install --save @ffmpeg-installer/ffmpeg
# or
$ npm install --save @node-ffmpeg/node-ffmpeg-installer
# or
$ npm install --save ffmpeg-binaries
Gunakan variabel lingkungan
FFMPEG_PATH
untuk memuat ffmpeg dari jalur khusus.
Mari buat instance pemain utama. Mesin virtual ini menangani dan melacak semua antrian dan komponennya.
const { Player } = require ( 'discord-player' ) ;
const client = new Discord . Client ( {
// Make sure you have 'GuildVoiceStates' intent enabled
intents : [ 'GuildVoiceStates' /* Other intents */ ]
} ) ;
// this is the entrypoint for discord-player based application
const player = new Player ( client ) ;
// Now, lets load all the default extractors, except 'YouTubeExtractor'. You can remove the filter if you want to include youtube.
await player . extractors . loadDefault ( ( ext ) => ext !== 'YouTubeExtractor' ) ;
Discord Player sebagian besar berbasis peristiwa. Ini memancarkan peristiwa yang berbeda berdasarkan konteks dan tindakan. Mari tambahkan event pendengar dasar untuk memberi tahu pengguna saat trek mulai diputar:
// this event is emitted whenever discord-player starts to play a track
player . events . on ( 'playerStart' , ( queue , track ) => {
// we will later define queue.metadata object while creating the queue
queue . metadata . channel . send ( `Started playing ** ${ track . cleanTitle } **!` ) ;
} ) ;
Discord Player memiliki dukungan terbatas untuk Eris. Anda dapat menggunakan kode berikut untuk mengatur Discord Player dengan Eris:
const { Player , createErisCompat } = require ( 'discord-player' ) ;
const player = new Player ( createErisCompat ( client ) ) ;
Sebelum Anda menambahkan perintah, pastikan untuk memberikan konteks pada perintah jika Anda ingin menggunakan kait pemutar perselisihan (seperti useMainPlayer
).
// execute the command
await command . execute ( interaction ) ;
// execute the command
await player . context . provide ( { guild : interaction . guild } , ( ) => command . execute ( interaction ) ) ;
Hal ini memungkinkan pemain discord untuk secara otomatis mengetahui guild dan antreannya saat ini, menghasilkan kode yang lebih bersih dan integrasi yang lancar. Ini menghilangkan kebutuhan untuk meneruskan instance player ke perintah atau menggunakan peretasan seperti client.player = player
.
Mari beralih ke bagian perintah. Anda dapat menentukan perintah sesuai kebutuhan Anda. Kami hanya akan fokus pada bagian perintah:
const { useMainPlayer } = require ( 'discord-player' ) ;
export async function execute ( interaction ) {
const player = useMainPlayer ( ) ; // get player instance
const channel = interaction . member . voice . channel ;
if ( ! channel ) return interaction . reply ( 'You are not connected to a voice channel!' ) ; // make sure we have a voice channel
const query = interaction . options . getString ( 'query' , true ) ; // we need input/query to play
// let's defer the interaction as things can take time to process
await interaction . deferReply ( ) ;
try {
const { track } = await player . play ( channel , query , {
nodeOptions : {
// nodeOptions are the options for guild node (aka your queue in simple word)
metadata : interaction // we can access this metadata object using queue.metadata later on
}
} ) ;
return interaction . followUp ( `** ${ track . cleanTitle } ** enqueued!` ) ;
} catch ( e ) {
// let's return error if something failed
return interaction . followUp ( `Something went wrong: ${ e } ` ) ;
}
}
Hanya itu yang diperlukan untuk membuat bot musik Anda sendiri. Silakan periksa Dokumentasi untuk fitur/fungsi lebih lanjut.
Jelajahi daftar sumber daya pilihan yang dibuat oleh komunitas Discord Player, termasuk bot dan ekstraktor musik sumber terbuka. Kunjungi https://discord-player.js.org/showcase untuk informasi lebih lanjut.