Cuando configuro el apodo de alguien, por ejemplo, Stack Overflow, no lo configura correctamente. Establece mi apodo en "stackoverflow", sin espacios.
Mi código:
const { MessageEmbed } = require('discord.js'); module.exports = { name: 'changenickname', aliases: ['changenick'], permissions: ["MANAGE_NICKNAMES"], cooldown: 5, description: "change your target's nickname", usage: "d!changenickname <@user> <nickname>", async execute(message, args, cmd, client, Discord, profileData){ const target = message.mentions.members.first(); const nickname = args.slice(1).join(''); if(!target) return message.channel.send('Please specify a target to change nickname'); if(!nickname) return message.channel.send('Please specify a nickname to change'); if (member.roles.highest.position >= message.guild.me.roles.highest.position) return message.reply('I cannot moderate this user as their highest role is higher than mine or I have the same highest role position as them.') target.setNickname(nickname); const done = new MessageEmbed() .setColor("GREEN") .setTitle("✅ Done") .setDescription(`Changed <@${target.id}> nickname to ${nickname}`) .setTimestamp() message.channel.send({embeds: [done]}) } }Nota: El comando establece el apodo sin ningún error, pero debe establecer los apodos con espacios (si hubiera en args).
Estoy usando discord.js v13 y node.js v16
En la línea 11 tienes esto:
const nickname = args.slice(1).join(''); En su caso args.slice(1) devuelve la matriz ['The', 'God'] . El método join() toma todos los elementos de la matriz y los junta en una cadena con la cadena dada entre cada elemento. La cadena que le diste a la función es '' , por lo que juntará los elementos sin nada entre ellos. Entonces, a partir de la matriz ['The', 'God'] , se convierte en la cadena TheGod en lugar de The God .
Entonces, lo que necesitarías es .join(' ') , no .join('') .
Espero que eso ayude.