如何使用Discord.js v14更改用户昵称



我使用以下代码注册斜杠命令:

const nick = new SlashCommandBuilder()
.setName('nick')
.setDescription('Change the nickname of a user')
.setDefaultMemberPermissions(PermissionFlagsBits.ChangeNickname)
.addUserOption((option) =>
option
.setName('user')
.setDescription('The user to change the nickname')
.setRequired(true),
)
.addStringOption((option) =>
option.setName('nickname').setDescription('New nickname for the user'),
);

逻辑:

client.on('interactionCreate', (interaction) =>{
if (interaction.commandName === 'nick') {
const user = interaction.options.getUser('user');
const name = interaction.options.getString('nickname');
user.setNickname(name);
}
});

显示如下错误:

user.setNickname(name)
^
TypeError: user.setNickname is not a function

这是因为interaction.userUser,而不是GuildMember,并且只有成员具有setNickname()方法。

你应该得到成员而不是用户。试试这样做:

const member = await interaction.options.getMember('user')
user.setNickname(name)

最新更新