我使用以下代码注册斜杠命令:
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.user
是User
,而不是GuildMember
,并且只有成员具有setNickname()
方法。
你应该得到成员而不是用户。试试这样做:
const member = await interaction.options.getMember('user')
user.setNickname(name)