为了账号安全,请及时绑定邮箱和手机立即绑定

错误:无法读取未定义的属性“歌曲”-discord.js

错误:无法读取未定义的属性“歌曲”-discord.js

繁星淼淼 2023-06-09 17:45:21
我对编码比较陌生,目前正在尝试制作一个简单的音乐机器人。要求很高的功能之一是每 5 秒更新一次的“正在播放”嵌入。几天前,我在 Stack Overflow 上的其他人的帮助下尝试实现这个,但我收到这个错误,我不知道如何修复,因为我现在只做了几个月的 discord.js。我将向您展示有效的代码和无效的代码,在此先感谢您的帮助!const queue = message.client.queue.get(message.guild.id);if (!queue) return message.channel.send({  embed: { color: 'ff0000', description: `Nothing's playing right now.` }, });const song = queue.songs[0];const seek = (queue.connection.dispatcher.streamTime -  queue.connection.dispatcher.pausedTime) / 1000;const left = song.duration - seek;let nowPlaying = new MessageEmbed() .setTitle('Now playing:') .setDescription(`${song.title}`) .setColor('#ff0000') .setThumbnail('https://img.icons8.com/clouds/2x/play.png') .addField(  '\u200b',  new Date(seek * 1000).toISOString().substr(11, 8) +   '[ ' +   createBar(song.duration == 0 ? seek : song.duration, seek, 10)[0] +   '] ' +   (song.duration == 0    ? ' ◉ LIVE'    : new Date(song.duration * 1000).toISOString().substr(11, 8)),  false );if (song.duration > 0) nowPlaying.setFooter(  'Time Remaining: ' + new Date(left * 1000).toISOString().substr(11, 8) );message.channel.send(nowPlaying);
查看完整描述

1 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

错误消息Cannot read property 'songs' of undefined表明之前的变量.songs未定义。在这种情况下,queue是未定义的。


在有效的代码中,您可以正确处理它:queue在访问其.songs.


if (!queue) // handle if queue is undefined

  return message.channel.send({

    embed: { color: 'ff0000', description: `Nothing's playing right now.` },

  });

// queue is guaranteed to be not undefined here

const song = queue.songs[0];

但是,在导致错误的代码中,您没有在setInterval处理程序中处理它。


/** in setInterval() **/

const queue = message.client.queue.get(message.guild.id);

// queue may be undefined!

const song = queue.songs[0]; // error occurs if queue is undefined!

要修复错误,您需要做的就是像处理有效代码一样处理未定义的情况。例如:


const queue = message.client.queue.get(message.guild.id);

if (!queue) return clearInterval(interval); // when queue is gone, stop editing the embed message

// queue is guaranteed to be not undefined here!

const song = queue.songs[0]; // OK!


查看完整回答
反对 回复 2023-06-09
  • 1 回答
  • 0 关注
  • 127 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信