[英]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.