discord.js事件voiceStateUpdate

时间:2019-11-07 14:23:45

标签: node.js discord.js

我如何获得用户加入频道或离开频道的时间 console.log(newMember.joinedTimestrap)它给了我一些数字,而不是日期和时间(例如1572014868278) console.log(newMember.joinedAt)给出未定义

const Discord = require("discord.js");
module.exports = async (client,oldMember,newMember) => {
     if(newMember.bot) return;

     let newUserChannel = newMember.voiceChannel
     let oldUserChannel = oldMember.voiceChannel


     if(oldUserChannel === undefined && newUserChannel !== undefined) {



     } else if(newUserChannel === undefined){

       // User leaves a voice channel

     }

    }

2 个答案:

答案 0 :(得分:0)

没有这样的属性member.joinedTimestrap,但是假设您的意思是member.joinedTimestamp,则在Unix time中给出。您可以将其传递给Date构造函数,即new Date(member.joinedTimestamp),将其转换为常规的Date对象-这是member.joinedAt在内部执行的操作,因此它应该是给您相同答案的捷径。

但是,joinedAtjoinedTimestamp只是用户加入服务器而不是voiceChannel的时间。用户加入voiceChannel时,代码正在正确运行,因此您只需获取其当前时间即可:new Date()

答案 1 :(得分:0)

当用户加入vc时,GuildMember类中没有任何属性,.joinedTimestrap是该用户加入公会的时间戳。

现在,要回答为什么它给了您一些数字而不是日期,这是他作为unix时间戳加入的日期,要将其转换为可读的日期,请执行以下操作:

let date = new Date(newMember.joinedTimestrap)

// Then you can use the Date class methods for getting the date, hour, minutes etc...
console.log(date)

Date类可用的方法的完整列表可以在MDN

上找到。

现在,如果要获取用户加入频道的时间,只需在事件触发后立即创建一个新的Date对象,然后将其记录下来:

let date = new Date()
console.log(date)