discord.js机器人标记服务器中的随机用户



我想包含一个"随机"命令,该命令将标记服务器的随机成员。我发现了以下代码:

if(command === 'random'){

let randomUser = message.guild.members.cache.random().user;
message.channel.send('<@'+randomUser+'>');
}

它是有效的,但它只会标记我、机器人本身或其他人,如果那个人最近在频道上写道的话。我该如何解决这个问题?

首先获取所有成员,然后对返回的集合调用random()

if (command == 'random') {
message.guild.members.fetch()
.then(allMembers => {
const member = allMembers.random();
message.channel.send(member.toString());
})
.catch(console.error);
}

确保已启用GuildMember的获取工作意图。

要获得公会中的所有成员,您必须在client.login(token)之前启用特权意图:https://discordjs.guide/popular-topics/intents.html#privileged-意图

确保您也在Discord Developer bot面板中启用了意图:https://discord.com/developers/applications