so I have just finished this /setnick command for my Discord Bot, but I am getting the following error.
TypeError: user.setNickname is not a function
at Object.execute (/Users/Aplex/Downloads/Aplel-Bot/Commands/Moderation/setnick.js:43:24)
at Object.execute (/Users/Aplex/Downloads/Aplel-Bot/Events/Interaction/interactionCreate.js:24:15)
at Client.<anonymous> (/Users/Aplex/Downloads/Aplel-Bot/Structures/Handlers/Events.js:17:50)
at Client.emit (node:events:402:35)
at InteractionCreateAction.handle (/Users/Aplex/Downloads/Aplel-Bot/node_modules/discord.js/src/client/actions/InteractionCreate.js:74:12)
at Object.module.exports [as INTERACTION_CREATE] (/Users/Aplex/Downloads/Aplel-Bot/node_modules/discord.js/src/client/websocket/handlers/INTERACTION_CREATE.js:4:36)
at WebSocketManager.handlePacket (/Users/Aplex/Downloads/Aplel-Bot/node_modules/discord.js/src/client/websocket/WebSocketManager.js:351:31)
at WebSocketShard.onPacket (/Users/Aplex/Downloads/Aplel-Bot/node_modules/discord.js/src/client/websocket/WebSocketShard.js:444:22)
at WebSocketShard.onMessage (/Users/Aplex/Downloads/Aplel-Bot/node_modules/discord.js/src/client/websocket/WebSocketShard.js:301:10)
at WebSocket.onMessage (/Users/Aplex/Downloads/Aplel-Bot/node_modules/ws/lib/event-target.js:199:18)
I have tried looking for solutions on google and here on StackOverflow but I couldn't find any regarding my problem. Does anyone know what the fix for this is?
Here is the /setnick command file:
const { Client, Interaction, MessageEmbed } = require("discord.js");
module.exports = {
name: "setnick",
description: "Sets nicname to a user.",
options: [
{
name: "user",
description: "User to change nickname",
type: 6,
required: true
},
{
name: "nickname",
description: "New nickname",
type: 3,
required: true,
},
],
/**
*
* @param {Interaction} interaction
* @param {Client} client
*/
async execute(interaction, client) {
try {
const { options } = interaction;
const args = options._hoistedOptions;
const user = args.find(x => x.name == "user");
const nickname = args.find(x => x.name == "nickname");
const embed = new MessageEmbed()
.setColor("RED")
if(!user.member.manageable) {
embed.setDescription(`:x: I can't change ${user.member.toString()}'s Nickname`)
return interaction.reply({embeds: [embed]})
}
const oldNick = user.member.nickname ? user.member.nickname : user.member.user.username;
await user.setNickname(nickname.value);
embed.setDescription(`:white_check_mark: ${user.member.toString()}'s nickname changed!`).setFooter(`From ${oldNick} to ${nickname.value}`);
await interaction.reply({embeds: [embed]});
} catch (err) {
console.log("Something went wrong => ", err);
}
},
};
CodePudding user response:
Should be
await user.member.setNickname(nickname.value)