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