Discord.js头像查询指令如何将错误改为向用户发消息而非控制台输出
问题修复方案
你修改不生效的核心原因是原代码存在大括号配对错误,@用户触发的逻辑分支被错误放在了command == "avatar"的判断之外,先修正语法问题再替换catch逻辑即可实现需求。
完整修正后代码
client.on("message", async message => { const args = message.content.slice(PREFIX.length).trim().split(/ +/g) // 指令参数 const command = args.shift().toLowerCase(); // 提取指令名 if (message.content.indexOf(PREFIX) !== 0) return; if (command == "avatar") { var user; user = message.mentions.users.first(); // 优先取@的用户 if (!user) { // 没有@用户的情况 if (!args[0]) { // 没有填ID参数,取发消息人自己的头像 user = message.author; getuseravatar(user); } else { // 填了ID参数,尝试拉取ID对应用户 var id = args[0] bot.users.fetch(id).then(user => { getuseravatar(user) // 替换原catch段的内容 }).catch(error => { console.log(error) // 可保留控制台打印方便开发者排查 message.reply("查询失败:你输入的不是有效的用户ID,请检查后重试") }) } } else { // 存在@用户的情况,直接取@用户的头像 getuseravatar(user); } // 封装的头像发送方法 function getuseravatar(user) { var embed = new Discord.MessageEmbed() .setColor("RANDOM") .setImage(user.avatarURL({ size: 2048, dynamic: true })) message.channel.send({embeds: [embed]}) } } })
核心修改点
- 调整了大括号的位置,将@用户触发的分支挪进
command == "avatar"的判断范围内,修复原代码语法逻辑错误 - 将原来的
.catch(error => console.log(error))替换为带消息回复的逻辑,用户输入无效ID时会直接收到提示
内容的提问来源于stack exchange,提问作者rainbow
相关产品推荐
相关产品推荐

