簡體   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