Discord JS:从集合中提取数据
Discord JS: Extracting data from a collection
我有一个命令,我想将语音通道中用户的 id
写入数组。到目前为止,我设法用 joinedTimestamp
等编写了整个用户集合。现在我想从集合中提取用户的 id
。
我的命令是这样的:
client.on('messageCreate', (message) => {
let waitingroom = message.guild.channels.cache.get("952324088762867722")
let player = [];
let isadmin = message.member.roles.cache.has(adminRole);
if (message.content.toLowerCase() === prefix + 'startgame' && isadmin) {
player.push(waitingroom.members);
console.log(player);
}
});
这就是当 waitingroom
中有 2 个用户时我从数组中得到的:
[
Collection(2) [Map] {
'392776445375545355' => GuildMember {
guild: [Guild],
joinedTimestamp: 1646940658665,
premiumSinceTimestamp: null,
nickname: null,
pending: false,
communicationDisabledUntilTimestamp: null,
_roles: [Array],
user: [User],
avatar: null
},
'849388169614196737' => GuildMember {
guild: [Guild],
joinedTimestamp: 1647168003344,
premiumSinceTimestamp: null,
nickname: 'Test-Account [Nils]',
pending: false,
communicationDisabledUntilTimestamp: null,
_roles: [],
user: [User],
avatar: null
}
}
]
但我只想要集合中的用户 id
s。感谢您的帮助。
Better solution, see accepted answer.
首先你需要用一个空数组创建一个变量。
然后您可以使用 .map
function of the member Collection
将用户 ID 推送到数组。
let arr = [];
<Channel>.members.map(user => {
arr.push(user.id);
});
接受的答案有点冗长。 Collection#map()
return 是一个数组并接受一个回调函数,所以你所要做的就是遍历成员和 return 他们的 id
s:
let waitingRoom = message.guild.channels.cache.get('952324088762867722')
let memberIDs = waitingRoom.members.map(member => member.id)
现在,memberIDs
是 snowflakes/IDs 个成员的数组。无需创建新数组或使用 push
方法。实际上,您永远不应该真正将 map
与 push
或其他改变数组的方法一起使用。
我有一个命令,我想将语音通道中用户的 id
写入数组。到目前为止,我设法用 joinedTimestamp
等编写了整个用户集合。现在我想从集合中提取用户的 id
。
我的命令是这样的:
client.on('messageCreate', (message) => {
let waitingroom = message.guild.channels.cache.get("952324088762867722")
let player = [];
let isadmin = message.member.roles.cache.has(adminRole);
if (message.content.toLowerCase() === prefix + 'startgame' && isadmin) {
player.push(waitingroom.members);
console.log(player);
}
});
这就是当 waitingroom
中有 2 个用户时我从数组中得到的:
[
Collection(2) [Map] {
'392776445375545355' => GuildMember {
guild: [Guild],
joinedTimestamp: 1646940658665,
premiumSinceTimestamp: null,
nickname: null,
pending: false,
communicationDisabledUntilTimestamp: null,
_roles: [Array],
user: [User],
avatar: null
},
'849388169614196737' => GuildMember {
guild: [Guild],
joinedTimestamp: 1647168003344,
premiumSinceTimestamp: null,
nickname: 'Test-Account [Nils]',
pending: false,
communicationDisabledUntilTimestamp: null,
_roles: [],
user: [User],
avatar: null
}
}
]
但我只想要集合中的用户 id
s。感谢您的帮助。
Better solution, see accepted answer.
首先你需要用一个空数组创建一个变量。
然后您可以使用 .map
function of the member Collection
将用户 ID 推送到数组。
let arr = [];
<Channel>.members.map(user => {
arr.push(user.id);
});
接受的答案有点冗长。 Collection#map()
return 是一个数组并接受一个回调函数,所以你所要做的就是遍历成员和 return 他们的 id
s:
let waitingRoom = message.guild.channels.cache.get('952324088762867722')
let memberIDs = waitingRoom.members.map(member => member.id)
现在,memberIDs
是 snowflakes/IDs 个成员的数组。无需创建新数组或使用 push
方法。实际上,您永远不应该真正将 map
与 push
或其他改变数组的方法一起使用。