【问题标题】:Post a message on console when users come online or go offline用户上线或下线时在控制台发布消息
【发布时间】:2017-12-14 19:30:16
【问题描述】:

我一直在尝试使用以下代码,但不知何故它根本不起作用。这个想法是为上线和下线的用户提供一个服务器登录控制台。

bot.on("Presence", usr => {
    if (usr.status == 'offline'){
        console.log(`${usr.username} is offline`);
    } else if (usr.status == 'online') {
        console.log(`${usr.username} is online`);
    }
});

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案1】:

    首先,我知道这是 JS,但您确实应该输入您正在编码的编程语言的名称并将其添加为标签,否则没有人会找到您的问题。其次,如果您检查docs,则事件名称为presenceUpdate

    bot.on("presenceUpdate", (oldMember, newMember) => {
        if(oldMember.presence.status !== newMember.presence.status){
            console.log(`${newMember.user.username} is now ${newMember.presence.status}`);
        }
    });
    

    【讨论】:

    • 非常感谢@Wright。对不起,我没有标记它。我实际上做了这个,甚至做了类似的事情,但把它当作“未定义现在在线”等等。我将如何解决它。再次感谢。
    • 太棒了!这似乎可以解决它。但是,它确实会在控制台上推送两个通知。两行总是相同的东西。例如:magn3to 现已上线 magn3to 现已上线
    • 嗯,您确定您的代码中没有两个 presenceUpdate 侦听器。或者在另一个文件中运行
    • 不,我没有别的东西在监听出席更新。让我一个人实际运行一下,看看会发生什么。
    • @Wright 这可能是因为该特定用户可能在多个公会中,并且机器人也在其中观看。因此,如果用户上线 bot 会从 3 个不同的公会触发,因此会触发 3 次。只是考虑可能性,不确定
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 2022-12-15
    • 1970-01-01
    • 2011-01-05
    • 2011-05-11
    • 1970-01-01
    相关资源
    最近更新 更多