用户玩游戏时的事件处理程序

Posted

技术标签:

【中文标题】用户玩游戏时的事件处理程序【英文标题】: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。我添加了一张图片,以确保我们在我说“玩游戏”时的意思一致。当我,比如说,添加一个权限时,它被解雇了。但不是为了玩游戏。 【参考方案1】:

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

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

【讨论】:

以上是关于用户玩游戏时的事件处理程序的主要内容,如果未能解决你的问题,请参考以下文章

关闭事件处理程序 C#

为啥从独立函数生成的 pyplot 窗口与从事件处理程序调用的函数生成时的行为不同?

处理 EditText 未聚焦状态时的物理键盘按键事件

JavaScript事件

如何为不在更新方法中的游戏手柄按钮按下创建事件处理程序

RecyclerView onItemClick button和布局都有单击事件时的处理方式