javascript - 有时机器人不会添加角色并设置昵称
问题描述
我设置了一个机器人,因此每当有人键入t!accept @user [nickname]时,它都会向用户添加一个角色并更改用户的昵称。这是我的代码:
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")
但是当然不可能,我会事先发表评论,但不幸的是我没有足够的声誉。
推荐阅读
- yii2 - 如何在模型yii2中添加功能
- python - 使用 django 在 python 上运行 mysqlclient
- python - 使用python从jsonschema获取无效键值
- mysql - mysql 语法区分大小写?我可以写:选择,在哪里?
- java - 在 Apache Lucene 中获取字段类型
- android - Android P 应用程序未安装在 KitKat 上
- sql - 外键中的数据类型问题?
- git - RHEL 上的 git add/stat 非常慢
- reactjs - React - 获取不同行中对象的值
- opentsdb - 如何在 openTSDB 中将密集的时间序列转换为稀疏的时间序列?