简体   繁体   English

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

[英]How do I change a users nick name using Discord.js v14

I am using the following code to register the slash command:我正在使用以下代码来注册斜杠命令:

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'),
  );

The logic:逻辑:

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

Which gives me the following error:这给了我以下错误:

   user.setNickname(name)
         ^

TypeError: user.setNickname is not a function

It's because interaction.user is a User , not a GuildMember and only members have the setNickname() method.这是因为interaction.user是一个User ,而不是一个GuildMember并且只有成员有setNickname()方法。

You should get the member instead of the user.您应该获取成员而不是用户。 Try something like this:尝试这样的事情:

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

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

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