javascript - 按名称获取用户,无需区分
问题描述
我试图通过另一个用户给出的名称在服务器上找到一个用户,而没有鉴别器。我正在向我的机器人添加一个允许我创建用户组的系统,它还为他们添加了一个类别和文本/语音通道。我将用户设置为“创始人”和“领导者”,这允许他们将其他用户添加到组中。问题是,该组对不在该组中的任何人都是隐藏的,因此他们不能简单地提及要添加的用户,而只需使用他们看到的人员用户名,而无需区分。
我有message.guild.members.cache.find(member => member.tag === newMemberName)
,但它需要一个带有鉴别器的标签。
我的整个方法是
function addMember(message) {
var server = message.guild;
var user = message.author;
var messageContent = message.content;
var args = messageContent.substring(1).split(' ');
var channel = message.channel.parent.name;
var json = fs.readFileSync("allegiances.json");
var parsed = JSON.parse(json);
var currentChannel = message.channel.name.toLowerCase();
if ((args[1] != null) && (currentChannel == "leadercommands")) {
var userid = user.id;
if (parsed[channel].leaders.includes(userid)) {
var newMemberName = args[1];
console.log(newMemberName);
var newMember = server.members.cache.find(member => member.username === newMemberName);
console.log(newMember);
newMember.roles.add(server.roles.cache.find(role => role.name === channel));
}
}
}
解决方案
我最终使用
server.members.fetch({ query: args[1], limit: 1 }).then(user => {
user.first().roles.add(server.roles.cache.find(role => role.name === channel))
}).catch(console.error);
我发现这段代码可以让你找到一个用户,或者如果你想获得超过 1 个用户,可以通过他们的名字找到一个没有鉴别器的用户。用于查找用户的所有其他系统似乎都需要鉴别器才能工作。
推荐阅读
- php - 如何在 laravel 8 中禁用自动登录并重定向到带有成功消息的简单页面(注册后)
- python - 如何将函数应用于数据框列中的某些值
- django - Django "Join" 和 "count" - 在 psql 中很简单,在 Django 中不是那么简单
- javascript - 在 JavaScript 中用 Twitter 表情符号替换系统默认表情符号
- c# - OSX DOTNET 附加到进程
- android - 有没有办法在Android中将连拍照片分组
- java - 如何在 Java 中静音 Snackbar 的 Android 应用程序通知?
- python - 如何查找目录中的文件是否被其他用户使用
- flutter - 将变量从有状态小部件传递到状态
- express - 在 Nuxt 和 Express 中上传图片