我想在命令处理程序中制作一个音乐机器人,但是遇到了一些问题。 这是我使用的命令处理程序:
delete require.cache[require.resolve(`./commands/${command}.js`)];
let commandFile = require(`./commands/${command}.js`);
commandFile.run(client, message, args);
在我的play.js文件中,我有一个队列:
var servers = {};
我不知道如何制作,因此我可以在队列中跳过歌曲(使用skip命令-skip.js)。跳过代码:
if (server.dispatcher) server.dispatcher.end();
我尝试查看教程,但是它们都在一个文件中完成,因此很容易,因为您可以将“ varservers = {};”放进去。在顶部,并且可以正常工作。我找不到任何教程来展示如何制作它,因此您可以使用像我这样的命令处理程序。
这里是所有文件:
play.js-https://hastebin.com/dijavugufu.js
skip.js-https://hastebin.com/kupecayotu.js
如果有人告诉我如何修改其他音乐机器人命令以与命令处理程序一起使用,那也很好。
答案 0 :(得分:0)
嘿,男人不确定您是否仍在寻找答案,但我也在开发带有命令处理程序的机器人。我解决这个问题的方法是直接从播放文件中导出跳过功能,并在跳过文件中使用该功能。这是我的工作。
/*In play.js*/
var dispatcher;
async function Play(connection, message){
dispatcher = await connection.playStream("your url and options here");
}
module.exports.Skip = function(){
if(dispatcher) dispatcher.end();
}
/*In skip.js*/
const playModule = require("your_path_to/play.js");
module.exports.run = async (client, message, args) => {
var skip = playModule.Skip();
}
对不起,我对Node.js还是很陌生,并且创建了Discord机器人,这可能不是最优雅的解决方案。但是要点是,我通过在play.js中编写函数并将该函数导出为skip.js并在其中调用来解决了这个问题。