从“ presenceUpdate”事件中排除移动更新?

时间:2019-09-04 18:36:39

标签: javascript node.js discord discord.js

在discord.js中使用“ presenceUpdate”事件时,当状态从“无”变为“流”时,将成功触发该事件。但是,似乎如果在事件触发后打开移动客户端,则会再次发生,并使用完全相同的“ oldUser”和“ newUser”。我正在使用VSCode并在那里本地运行我的node.js实例,因此我可以使用断点进行调试。

client.on("presenceUpdate", (oldUser, newUser) => {
    //Exclude title changes and typing
    if(oldUser.presence.game != null && oldUser.presence.game.streaming) {
        return;
    }

    if(oldUser.displayName === "Test" && newUser.presence != null){
        if(newUser.presence.game != null && newUser.presence.game.streaming){
            client.channels.get("channelId").send("@everyone Test has started streaming!");               
        }
    }
});

如您所见,我已经尝试使用第一个if块过滤此“双触发”。这并不成功,因为它看起来像是第一次触发,新老用户与第二次触发完全相同。我只能说的唯一区别是,“ clientStatus”现在包括“ mobile:online”作为属性。首先,有什么方法可以防止这种双重触发吗?还是我需要对if语句进行更好的过滤?

1 个答案:

答案 0 :(得分:1)

请参见Presence.clientStatus;它会返回存在状态适用的设备类型。

使用此属性,您可以将旧用户的客户端与新用户的客户端进行比较,并在更改后返回。

if (oldUser.presence.clientStatus !== newUser.presence.clientStatus) return;