我设置了一个漫游器,以便每当有人输入t!accept @user [昵称]时,它将为用户添加一个角色并更改用户的昵称。这是我的代码:

    mention = message.mentions.members.first();

        if (msg.startsWith (prefix + "accept")){
            if(!message.member.hasPermission("MANAGE_ROLES")) return message.reply("You have no permission!");
            if (mention == null) { return; }
            let args = message.content.split(" ").slice(2);
            mention.roles.add('123456789')
            mention.setNickname(mention.displayName+" "+args.join('  '))
            mention.send("Congratulations");

            try{
                await message.author.send("Sent.")
            }catch(e){
                message.channel.send("An error has occured.")
            }
        }


但是,只有在大多数情况下它才能完全正常运行,有时它不会同时做两件事,有时它只会完成一项任务(添加角色,但不能昵称,反之亦然)

我的代码有什么问题吗?
提前致谢!

最佳答案

您提供的昵称有时可能太长,并且超出了不符合要求的昵称长度限制(最多32个字符)。您应该添加以下检查:
if ((mention.displayName + " " + args.join(" ")).length > 32) return message.channel.send("The nickname exceeds 32 characters")
但是,那当然不可能,我会事先发表评论,但不幸的是我没有足够的声誉。

07-28 06:35