javascript - Discord.js 将数组中的 ID 替换为与该 ID 匹配的用户的昵称?
问题描述
if (message.content === '.mutelist') {
var muteIdsList = muteIds.slice();
var memberList = message.guild.members.array();
var convertList = muteIdsList.indexOf(`${memberList}`);
console.log(`${memberList}`);
if (convertList !== -1) {
muteIdsList[convertList] = `${guild.member.nickname}`
console.log('Match!')
}
message.channel.send(`${muteIdsList}`)
.catch(function(err) {
if (muteIds.length >= 0) {
message.channel.send('Nobody is being muted at this time!');
}
else {
message.channel.send('There was an unknown error that occured, try running the command again!');
}
})
}
到目前为止似乎没有任何工作,memberList 通过获取公会中的所有用户 ID 来完成我想要的操作,但将它们显示为 <@ID> 而不仅仅是普通 ID,因此它与数组中的任何项目都不匹配我有。我想要发生的事情是,我制作了一个数组的副本,用于保存要静音的人的 ID,然后获取公会中的所有 ID,遍历复制的数组并找到所有匹配项,然后替换 ID在复制的数组中,用户的昵称与该特定 ID 匹配。
解决方案
您可以使用 message.guild.members 访问成员到昵称的映射。
var muteIdsList = muteIds.slice(); // [1]
var memberList = message.guild.members; // {1: nickname1, 2: nickname2}
var mutedNicknameList = muteIdsList.map(x => memberList[x]); // [nickname1]
推荐阅读
- java - Javafx 特定文件夹的路径并选择在文本字段中输入的文件
- html - 为什么标题容器的子级不水平对齐?
- node.js - 使用角度5+从ftp下载文件?
- javascript - 使用javascript输入后隐藏文本
- elasticsearch - 如何在 Golang 中将数组传递给 Elasticsearch 的 NewTermsQuery?
- ios - 在子视图中添加 UIImage 并添加约束 - 图像不会调整大小
- java - 在游戏框架中限制登录尝试 3 次
- r - R - 通过光栅图像(迷宫)找到成本最低的路径?
- haskell - 内联派生类型类方法
- android - 我怎样才能让多边形看相机(OpenGL)?