首页 > 解决方案 > 打印用户在 discord.js 中显示用户 ID

问题描述

我想使用 discord.js 库在 Discord 上列出服务器成员。但是,一些(大部分是非活动的)用户以表单<@123456789123456789>(他们的 id)而不是@Michal(他们的可点击名称和用户配置文件)显示。

可能是因为某些成员未缓存?我尝试在打印之前获取所有成员,即使有force选项。但没有成功。

const executeCommand = async (client, message) => {
    const members = await message.guild.members.fetch({ force: true })

    message.channel.send({ embed: {
        title: 'Members',
        description: members.map(m => `<@${m.id}>`).join(', ')
    } })
}

在我的机器人上也启用了Presence intent和。Server member intent我该如何解决?

标签: javascriptcachingdiscorddiscord.js

解决方案


不幸的是,这是不可能的,因为提及显示为 ID 而不是可点击的用户名实际上是 Discord 客户端的问题,而不是机器人本身的问题,但确实在未获取用户时发生。如果您重新启动客户端,请查看相关人员发送的消息,然后返回机器人发送的消息,用户名将显示,并且完全有可能显示为您的 ID 的内容正确显示给某人别的。如果有的话,这必须由 Discord 自己解决,并且超出我们作为机器人开发人员的控制范围。


推荐阅读