javascript 更改您的昵称命令discord.js v14

mwngjboj  于 2023-01-04  发布在  Java
关注(0)|答案(2)|浏览(260)

我正在尝试编写一个可以更改用户昵称的命令,但无法使其工作。我已尝试找到解决方案,但无法实现。
下面是我的代码:

const { SlashCommandBuilder, EmbedBuilder } = require("discord.js");

module.exports = {
    data: new SlashCommandBuilder()
      .setName("nickname")
      .setDescription("Change your nickname")
      .addStringOption(option =>
        option.setName("nickname")
        .setDescription("New Nickname")
        .setRequired(true)
        ),

    async execute(interaction) {
      const { options } = interaction;
      const nick = options.getString("nickname");
      const member = interaction.author;
      
      const embed = new EmbedBuilder()
        .setDescription(`Succesfully changed your nickname to ${nick}`)
        .setColor(0xFFFFFE)
        .setTimestamp();

      await member.setNickname(`${nick}`)
        
      await interaction.reply({
        embeds: [embed],
        ephemeral: true
    
    });  
  }    
}

我想问题出在这里,但我不确定

await member.setNickname(`${nick}`)
cidc1ykv

cidc1ykv1#

因为interaction.author就是undefined,你可能认为它像message.author,但它仍然是User,而不是GuildMember,只有成员才有setNickname()方法。
你应该得到成员而不是用户。尝试如下:

const member = await interaction.guild.members.fetch(interaction.user.id)

如果使用addUserOption()而不是addStringOption(),也可以使用options.getMember("nickname")

gr8qqesn

gr8qqesn2#

我只是做了一个类似的命令,遇到了和你一样的问题。我意识到我试图改变昵称的成员,有另一个角色分配给他们,这比机器人的角色更高。给予这个看一下,让我知道。另外,确保你有GatewayIntentBits.GuildsGatewayIntentBits.GuildMembers在你的意图传递。

相关问题