Javascript 如何在命令中写入子命令?
我想把我的“播放”、“停止”、“跳过”、“离开”命令放到一个名为“music commands.js”的文件中 所以我把我的“播放”代码放进去,就像这样:Javascript 如何在命令中写入子命令?,javascript,node.js,bots,discord.js,Javascript,Node.js,Bots,Discord.js,我想把我的“播放”、“停止”、“跳过”、“离开”命令放到一个名为“music commands.js”的文件中 所以我把我的“播放”代码放进去,就像这样: const Discord = require('discord.js'); const ytdl = require('ytdl-core'); const bot = new Discord.Client(); var servers = {}; module.exports = { name: 'play', desc
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));
}
}
}
(注意:如果您有改进的想法,请发布)
所以我想在里面添加skip、stop和leave命令,同时能够访问server.dispatcher之类的东西,因为将每个命令放在它自己的文件中会给我带来一些问题,比如连接没有定义,但它在play命令中被定义为函数中的参数,所以我使用它
但是把所有的东西都放在自己的文件里,这使得很多东西没有定义
因此,如果你能在任何方面提供帮助,请发表评论,谢谢 首先,您要检查
!args[1]
这似乎需要!args[0]
因为所有数组都以0
开头(只有在您不接受我下面的建议时才这样做)
我建议的一种方法是对music
命令执行子命令,这样您就可以在一个文件中播放music
、music stop
、music skip
等
您可以通过检查args[0]
是否为play
、stop
、skip
等来实现这一点
更清楚地说,这里有一个例子:
module.exports={
名称:“音乐”,
描述:'作品',
执行(消息,参数){
如果(参数[0]=“播放”){
//做点什么
}否则如果(参数[0]=“停止”){
//做点什么
}else if(参数[0]=“跳过”){
//做点什么
}否则{
message.reply(“使用正确的语法”)
}
}
}
首先,您要检查!args[1]
这似乎需要!args[0]
因为所有数组都以0
开头(只有在您不接受我下面的建议时才这样做)
我建议的一种方法是对music
命令执行子命令,这样您就可以在一个文件中播放music
、music stop
、music skip
等
您可以通过检查args[0]
是否为play
、stop
、skip
等来实现这一点
更清楚地说,这里有一个例子:
module.exports={
名称:“音乐”,
描述:'作品',
执行(消息,参数){
如果(参数[0]=“播放”){
//做点什么
}否则如果(参数[0]=“停止”){
//做点什么
}else if(参数[0]=“跳过”){
//做点什么
}否则{
message.reply(“使用正确的语法”)
}
}
}