【发布时间】:2020-07-16 21:12:07
【问题描述】:
我想将我的“播放”、“停止”、“跳过”、“离开”命令放入一个名为“music commands.js”的文件中 所以我把我的“播放”代码放在这样的地方:
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 命令中定义为函数中的参数,所以我曾经使用它 但是将所有内容都放在自己的文件中,这使很多事情变得不确定 所以如果你能提供帮助,请发表评论谢谢!
【问题讨论】:
标签: javascript node.js bots discord.js