繁体   English   中英

如何获取与Discord.JS交互的用户id

[英]How to get user id of interaction with Discord.JS

我正在尝试获取发送交互(/ 命令)的用户的数据。 下面的代码发送回复消息,但我没有在控制台中获取用户 ID。 我尝试了这段代码,因为我在网上找到了它,但它不起作用。

if (interaction?.data?.name === 'test') {
    await interaction.createMessage({
        content: 'test'
    })
    const interactionUser = await interaction.guild.members.fetch(interaction.user.id)

    const nickName = interactionUser.nickname
    const userName = interactionUser.user.username
    const userId = interactionUser.id

    console.log(nickName,userName,userId)
}

谁能帮我?

你仍然需要有“用户”所以这样的事情应该有效

const userId = interactionUser.user.id

这是因为代码的作者假设从interaction.guild.members.fetch(interaction.user.id)返回的类型是User而它是GuildMember 如果你对 Discord 机器人做了任何事情,你需要能够跟上他们关于类型指南的官方文档,因为他们制作了一个又一个版本,代码很快就会过时。 这意味着在其他地方谷歌搜索代码片段,在大多数情况下意味着您正在获取旧 API 版本的代码。

还强烈建议使用 TypeScript 来制作 Discord 机器人,而不是每次需要获取任何东西的属性时都必须打开文档,您可以在提示中获得所有内容。

if (interaction?.data?.name === 'test') {
    await interaction.createMessage({
        content: 'test'
    })
    // This returns a GuildMember and not User
    const interactionGuildMember= await interaction.guild.members.fetch(interaction.user.id)

    const nickName = interactionGuildMember.nickname
    const userName = interactionGuildMember.user.username
    // This is GuildMember.id
    const guildMemberId = interactionGuildMember.id
    // This is User.id
    const userId = interactionGuildMember.user.id

    console.log(nickName, userName, userId)
}

我发现:

const user = interaction?.member?.user

给我所有我需要的信息。

它返回:

User {
  id: '355012453690897985',
  bot: false,
  system: false,
  avatar: '1cbff471070418e53fa69ce99a57fd8a',
  username: 'MushroomFX',
  discriminator: '4269',
  publicFlags: 64
}

这足以让我工作。

还是感谢大家<3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM