【问题标题】:Discord.js bot doesn't correctly recognise user statusDiscord.js 机器人无法正确识别用户状态
【发布时间】:2020-12-18 17:48:32
【问题描述】:

如果我在我的 discord 机器人中发出类似“userstatus”的命令,它无法正确识别用户状态,并发送“离线”(即使用户在线)。我该如何解决这个问题?

这是我的代码:

module.exports = {
    name: 'status',
    execute(message) {
        message.channel.send(`${message.author.presence.status}`)
    }
}

【问题讨论】:

    标签: node.js discord.js


    【解决方案1】:

    不久前,Discord 添加了一些机器人帐户必须遵守的隐私准则。其中一项准则是具有“特权网关意图”(read more here)。基本上,如果您想跟踪特定的用户特征,您必须在 Discord 开发者控制台中启用这些功能。提供的链接表明,如果未启用网关意图,所有成员都将显示为离线,这就是您的代码所发生的情况。

    为了启用 Privileged Gateway Intent 以跟踪存在:

    1. 如果需要,请转到 this link 并登录。
    2. 点击您的机器人并转到机器人部分。
    3. 向下滚动,直到看到“Privileged Gateway Intents”。
    4. 启用“Presence Intent”并保存更改

    之后,您应该能够跟踪用户的存在。

    【讨论】:

    • 您还需要在创建 Discord 客户端时指定您正在使用的意图,包括特权意图,例如:new Discord.Client({ws: {intents: ["GUILD_MEMBERS", "GUILD_PRESENCES"]}})。当然,如果使用特权意图,您还必须执行您在此答案中描述的操作。在这种情况下,您必须两者都,因为存在是一种特权意图;只做一个或另一个是行不通的。您还可以找到所有意图的列表here
    猜你喜欢
    • 2022-01-07
    • 2022-11-11
    • 2021-10-09
    • 2021-05-04
    • 2021-01-11
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    相关资源
    最近更新 更多