Я хотел поместить свои команды «play», «stop», «skip», «exit» в один файл, называемый «musi c команды. js», поэтому я поместил свой код «play» так же, как это:
const Discord = require('discord.js');
const ytdl = require('ytdl-core');
const bot = new Discord.Client();
var servers = {};
module.exports = {
name: 'play',
description: 'works',
execute(msg, args) {
function play(connection, msg) {
var server = servers[msg.guild.id];
server.dispatcher = connection.play(ytdl(server.queue[0], {
filter: "audioonly"
}));
server.queue.shift();
server.dispatcher.on("end", function () {
if (server.queue[0]) {
play(connection, msg);
} else {
connection.disconnect();
}
});
}
if (!args[1]) {
msg.reply('please provide a link');
return;
}
if (!msg.member.voice.channel) {
msg.reply("Join a voice channel to play music!");
return;
}
if (!servers[msg.guild.id]) servers[msg.guild.id] = {
queue: []
}
var server = servers[msg.guild.id];
server.queue.push(args[1]);
const voiceChannel = msg.member.voice.channel;
if (!voiceChannel) {
return msg.reply('you are not in a voice channel.');
} else {
voiceChannel.join().then(function (connection) {
play(connection, msg);
}).catch(err => console.error(err));
}
}
}
(Примечание: если у вас есть идея улучшить, пожалуйста, опубликуйте ее)
, поэтому я хотел добавить свои команды пропуска, остановки и оставления внутри, также имея возможность доступа такие вещи, как server.dispatcher, в то же время, поскольку помещение каждой команды в свой собственный файл приводило меня к некоторой проблеме, например, соединение не определено, но оно определено в команде play как параметр в функции, поэтому я использовал это, но все ставил сам В этом файле многое не определено, так что если вы можете помочь, пожалуйста, оставьте комментарий, спасибо!