TypeError: user.setNickname is not a function
TypeError: user.setNickname is not a function
所以我刚刚为我的 Discord Bot 完成这个 /setnick 命令,但是我收到以下错误。
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)
我曾尝试在 google 和 Whosebug 上寻找解决方案,但我找不到任何关于我的问题的解决方案。有谁知道解决这个问题的方法是什么?
这里是 /setnick 命令文件:
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);
}
},
};
应该是
await user.member.setNickname(nickname.value)
所以我刚刚为我的 Discord Bot 完成这个 /setnick 命令,但是我收到以下错误。
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)
我曾尝试在 google 和 Whosebug 上寻找解决方案,但我找不到任何关于我的问题的解决方案。有谁知道解决这个问题的方法是什么?
这里是 /setnick 命令文件:
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);
}
},
};
应该是
await user.member.setNickname(nickname.value)