如何在 discord.js 中创建 setNickname 命令

how do I make a setNickname command in discord.js

我在 discord.js v13 中创建了一个更改昵称命令,但它不起作用。我没有收到任何错误。 我的代码:

        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');


        target.setNickname(nickname);

我正在使用 node.js v16

我猜测您尝试设置的昵称是 null 或空的,这将导致 discord 将昵称重置为用户正常的 discord 用户名。

确保调试正在传递的值并在此处提出问题时提供此类信息,因为这将帮助人们更轻松地帮助您。



话虽如此,下面的代码对我来说效果很好

    const target = msg.mentions.members.first();
    if (!target) return msg.reply('Please mention a user');
    const nick = args[1];
    if (!nick) return msg.reply('Please provide a nickname');
    const oldNick = target.nickname;
    if (oldNick === nick) return msg.reply('That user already has that nickname');
    console.log(`Changing ${target.user.tag}'s nickname from ${oldNick} to ${nick}`);
    target.setNickname('');

您的代码对我有用,但请确保您的机器人具有以下权限,并且机器人的角色高于想要编辑昵称的用户的角色: 改变这个: https://i.stack.imgur.com/lKP9h.png 对此: https://i.stack.imgur.com/xX8GF.png 还要确保您的命令是小写的,因为命令名称中不允许使用大写字符。

您提供的代码似乎可以正常工作。错误可能是您的机器人的意图。确保你 enabled/requested 这个命令所需的所有意图(如果我没记错的话,公会成员)。确保您还为您的机器人提供了所需的权限:MANAGE_NICKNAMES 在服务器设置(角色)中。

祝你好运!