You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 23:12:02