用户玩游戏时的事件处理程序
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
);
【讨论】:
以上是关于用户玩游戏时的事件处理程序的主要内容,如果未能解决你的问题,请参考以下文章