Javascript Discord.js-TypeError:无法读取属性';声音';未定义的。谁能告诉我我';我做错了?

Javascript Discord.js-TypeError:无法读取属性';声音';未定义的。谁能告诉我我';我做错了?,javascript,node.js,discord,discord.js,Javascript,Node.js,Discord,Discord.js,这是我的play.js文件,我从一个源文件箱中得到的。 如果有人能帮助我,我将不胜感激 const ytdl=require(“ytdl核心”); 常量ytSearch=需要(“yt搜索”); //您的机器人的全局队列。每个服务器在此映射中将有一个密钥和值对。{guild.id,队列{} const queue=new Map(); module.exports={ 名称:“播放”, 别名:[“跳过”、“停止”], 冷却时间:0, 描述:“高级音乐机器人”, 异步执行(消息、args、cmd、客

这是我的play.js文件,我从一个源文件箱中得到的。 如果有人能帮助我,我将不胜感激

const ytdl=require(“ytdl核心”);
常量ytSearch=需要(“yt搜索”);
//您的机器人的全局队列。每个服务器在此映射中将有一个密钥和值对。{guild.id,队列{}
const queue=new Map();
module.exports={
名称:“播放”,
别名:[“跳过”、“停止”],
冷却时间:0,
描述:“高级音乐机器人”,
异步执行(消息、args、cmd、客户端、Discord){
//检查语音频道和权限(如果愿意,可以添加更多权限)。
const voice_channel=message.member.voice.channel;
if(!voice_channel)返回message.channel.send(“您需要在一个通道中才能执行此命令!”);
const permissions=voice_channel.permissions(message.client.user);
如果(!permissions.has(“CONNECT”))返回message.channel.send(“您没有正确的权限”);
如果(!permissions.has(“SPEAK”))返回message.channel.send(“您没有正确的权限”);
//这是我们的服务器队列。我们正在从全局队列获取此服务器队列。
const server_queue=queue.get(message.guild.id);
//如果用户已使用“播放”命令
如果(cmd==“播放”){
if(!args.length)返回message.channel.send(“您需要发送第二个参数!”);
让歌曲={};
//如果第一个参数是链接,则将歌曲对象设置为有两个键。Title和URl。
if(ytdl.validateURL(参数[0])){
const song_info=wait ytdl.getInfo(args[0]);
歌曲={title:song\u info.videoDetails.title,url:song\u info.videoDetails.video\u url};
}否则{
//如果没有链接,我们使用关键字搜索视频。将歌曲对象设置为有两个键。标题和URl。
const video_finder=异步(查询)=>{
const video_result=等待搜索(查询);
返回video\u result.videos.length>1?video\u result.videos[0]:空;
};
const video=等待视频查找器(args.join(“”);
if(视频){
歌曲={title:video.title,url:video.url};
}否则{
message.channel.send(“错误查找视频”);
}
}
//如果服务器队列不存在(第一个视频队列不存在),则创建要添加到全局队列的构造函数。
如果(!服务器队列){
常量队列\u构造函数={
语音频道:语音频道,
文本频道:message.channel,
连接:空,
歌曲:[],
};
//将密钥和值对添加到全局队列中。然后,我们使用它来获取服务器队列。
queue.set(message.guild.id,queue\u构造函数);
队列构造函数.歌曲.推送(歌曲);
//建立连接并使用vide_player功能播放歌曲。
试一试{
const connection=wait voice_channel.join();
queue_constructor.connection=连接;
视频播放器(message.guild,queue_constructor.songs[0]);
}捕捉(错误){
queue.delete(message.guild.id);
message.channel.send(“连接时出错!”);
犯错误;
}
}否则{
服务器队列.歌曲.推送(歌曲);
返回message.channel.send(`可以是
null
,如果消息是在DM中发送的

要修复错误,请确保命令不能在DM中使用:

异步执行(消息、args、cmd、客户端、Discord){ 如果(!message.guild)返回message.channel.send(“此命令在DMs中不起作用!”); //代码的其余部分。。。 }
如何调用主文件中的
execute()
函数?我将编辑并显示添加了调用execute()的文件。我忘了添加其余的错误消息。