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

DiscordJS中从Interaction获取用户ID失败的问题求助

在DiscordJS中从Interaction对象获取用户ID的问题

我正在DiscordJS中尝试从Interaction对象获取用户ID,编写了名为'test'的命令,该命令包含必填选项'testing',当用户输入'1'时,应返回命令所在的频道ID以及执行该命令的用户ID。

我的test.js代码如下:

module.exports = {
    name: "test",
    description: "example",
    options: [
        {
            name: "testing",
            description: "testing only.",
            type: 3,
            required: true,
        },
        
    ],
    async execute(_bot, say, interaction, args) {
        let object1 = args[0].value;
        if (object1 == '1') {
            await say(interaction, 'Channel ID : ' + interaction.channel_id +  '\nUser : '+ interaction.message.author.id);
        }
        else
        {
            return;
        }
        
    },
};

但我无法成功获取用户ID,尝试了以下几种写法均无效:

interaction.member.id;
interaction.user.id;
interaction.user_id;
interaction.member_id;
interaction.guildmember.id;

解决方案

问题核心

你代码里有两个关键错误:

  1. 频道ID的属性名用错了,新版本DiscordJS采用驼峰命名的channelId,而非channel_id
  2. 用户ID的获取路径错误,Slash命令的交互对象里不存在message.author(这是普通消息对象的属性),得从交互对象自身的用户属性获取

正确获取方式

针对Slash命令的Interaction对象:

  • 用户ID:优先用interaction.user.id,这个属性在服务器和私信场景下都能稳定返回发起交互的用户ID;如果需要服务器成员专属属性,再用interaction.member.user.id(注意member仅在服务器内存在)
  • 频道ID:直接用interaction.channelId

修正后的代码

把execute函数改成这样即可:

async execute(_bot, say, interaction, args) {
    let object1 = args[0].value;
    if (object1 == '1') {
        await say(interaction, `Channel ID : ${interaction.channelId}\nUser : ${interaction.user.id}`);
    } else {
        return;
    }
}

之前写法无效的原因

  • interaction.member.id:服务器场景下可以用,但私信中member会是undefined,通用性不如interaction.user.id
  • interaction.user_id/interaction.member_id:这是DiscordJS旧版本的属性命名,新版本已改为驼峰式的userId/memberId,直接访问user.id更符合对象调用逻辑
  • interaction.guildmember.id:拼写错误,正确属性名是interaction.member(驼峰命名)

内容的提问来源于stack exchange,提问作者Jada Developer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 21:01:44