我正在尝试基于 Statbot 制作一个 Discord 统计机器人。 其功能之一是跟踪用户在语音频道中的停留时间。
我检查了 VoiceState
的文档(从 voiceStateUpdate
事件中检索),似乎没有关于用户在频道中停留多长时间的内置属性。>
我该怎么做?
(编辑:我希望有一个解决方案,每次有人加入/离开时我都不必保存)
答案 0 :(得分:0)
要检查您的用户在语音频道中使用了多长时间,您需要知道您何时加入房间以及何时用户离开房间并根据您的喜好存储用户加入某个地方的时间 所以代码将是
bot.on('voiceStateUpdate', async (oldState, newState) => {
let newUserChannel = newState.channel;
let oldUserChannel = oldState.channel;
if (oldUserChannel === null && newUserChannel !== null) {
// User Join a voice channel
// Handle your save when user join in memcache, database , ...
} else if (oldUserChannel !== null && newUserChannel === null) {
// User Leave a voice channel
// Calculate with previous save time to get in voice time
} else if (
oldUserChannel !== null &&
newUserChannel !== null &&
oldUserChannel.id != newUserChannel.id
) {
// User Switch a voice channel
// This is bonus if you want to do something futhermore
}
});