【问题标题】:Event handler when a user is playing a game用户玩游戏时的事件处理程序
【发布时间】:2020-01-04 05:24:23
【问题描述】:

我找不到使用 discord.js 的事件处理程序,当用户开始流式传输或玩游戏时会触发该事件处理程序。

我已尝试使用 userUpdate(我知道这不起作用,因为它与当前用户有关,即机器人)以及 guildMemberUpdate 事件。

client.on("guildMemberUpdate", (oldUser, newUser) => {
    if(oldUser.user.username === "Test"){
        if(newUser.user.game.streaming){
            //find the channel and post a message
        }
    }
});

添加断点时,我从不点击第一个 if 语句。该事件似乎不会因用户的“活动”或“状态”变化而触发。有这样的活动吗?

为清楚起见进行编辑:我一直在 discord 服务器上使用我自己的用户。我将从不玩游戏到玩游戏或流式传输,并且永远不会命中事件处理程序。包含图片以确保您可以看到我试图触发事件的状态。

【问题讨论】:

  • A. "...[userUpdate] 属于当前用户,是机器人..." 当用户更新 something 以处理他们的用户配置文件,而不是其特定于服务器的设置。例如,任何用户更改其用户名或鉴别器都会触发它。 B. 你展示的监听器是否嵌套在另一个监听器中?如果是这种情况,则在发出外部事件之前不会附加它。 C. 你能通过在监听器函数的第一行添加console.log('emitted')(或类似的东西)来调试你的代码,并分享结果吗?
  • A. userUpdate 和 guildMemberUpdate 都没有处理这个问题。 B. 不,不是。 C. 它永远不会击中侦听器,但我使用 VSCode 运行它,因此我也可以使用断点。
  • 你使用的是什么版本的 Discord.js?这些事件对我来说按预期工作。
  • 最新,11.5.1。我添加了一张图片,以确保我们在我说“玩游戏”时的意思一致。当我,比如说,添加一个权限时,它被解雇了。但不是为了玩游戏。

标签: node.js discord discord.js


【解决方案1】:

客户的presenceUpdate 事件就是您要查找的内容。当用户的游戏状态发生变化时会发出它。

client.on('presenceUpdate', (oldMember, newMember) => {
  // do your thing
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 2012-11-01
    相关资源
    最近更新 更多