Discord.js音乐机器人报错TypeError [InvalidType]求助:Supplied options is not an object
修复Discord音乐机器人的TypeError [InvalidType]: Supplied options is not an object错误
这个错误的核心原因是你调用Discord相关库(如Discord.js、discord-player、erela.js)的方法时,传入的options参数不是对象类型(可能是undefined、null、字符串等非对象值)。以下是常见场景的修复方案:
初始化客户端/播放器时传参错误
很多音乐库要求初始化时传入配置对象,若误传非对象值就会触发错误。
错误示例:const player = new Player(client, "invalid-options"); // 第二个参数应为对象,却传了字符串修复:确保传入对象(空对象或含配置的对象均可):
const player = new Player(client, { ytdlOptions: { quality: "highestaudio" } // 按需添加配置项 });调用播放方法时参数格式错误
调用play类方法时,部分库要求第二个参数是包含播放信息的对象,而非直接传链接/关键词。
错误示例:player.play(interaction, "https://example.com/song.mp3"); // 参数格式不符合要求修复:按库文档要求传入对象格式的参数:
player.play(interaction, { query: "https://example.com/song.mp3", requestedBy: interaction.user });配置变量未正确初始化
若options是一个变量,需确保它被赋值为对象类型,避免undefined或非对象值。
错误示例:let playerConfig; // 未赋值,默认是undefined const player = new Player(client, playerConfig);修复:提前定义对象类型的配置:
let playerConfig = { leaveOnEmpty: true, leaveOnEnd: false }; const player = new Player(client, playerConfig);检查库版本兼容性
旧版本的音乐库与新版Discord.js可能存在参数解析不兼容的问题。比如discord-player v6需要搭配Discord.js v14及以上版本,建议确认你使用的库版本匹配官方要求。
内容的提问来源于stack exchange,提问作者Vinx
相关产品推荐
相关产品推荐

