亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何檢測成員何時加入和離開語音頻道

如何檢測成員何時加入和離開語音頻道

幕布斯6054654 2023-08-18 14:31:43
我正在開發一個不和諧的機器人,它需要檢測用戶何時加入和離開頻道。我已經在第 4 行嘗試過這個,因為如果用戶的連接沒有改變,它就不會運行。但這是行不通的。這是我的整個代碼部分。client.on('voiceStateUpdate', (oldState, newState) => {// check for botif (oldState.member.user.bot) return;if (oldState.member.voice === newState.member.voice) return;//<- hereclient.channels.cache.get('777782275004825640').send(`${oldState.member} joined`);});我也嘗試過.connection但它不適用于我當前的設置。任何幫助都會很棒!
查看完整描述

2 回答

?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

我找到了!經過一些測試,我發現當頻道更新時,會發生以下四種情況之一。

  1. 如果用戶加入則oldState.channelID返回null

  2. 如果用戶返回newState.channelIDnull

  3. 如果用戶將自己靜音或被震聾,則oldState.channelID等于newState.channelID

  4. 如果用戶移動的頻道 oldState.channelID不等于newState.channelID

Discord.Client()的設置為client,所以如果你的不同,請更改

client.on('voiceStateUpdate', (oldState, newState) => {

    if(oldState.channelID === newState.channelID) {

        console.log('a user has not moved!')

    }

    if(oldState.channelID != null && newState.channelID != null && newState.channelID != oldState.channelID) {

        console.log('a user switched channels')

    }

    if(oldState.channelID === null) {

        console.log('a user joined!')

    }

    if (newState.channelID === null) {

        console.log('a user left!')

    }

});


查看完整回答
反對 回復 2023-08-18
?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

嘗試這個片段,請讓我知道它對你有什么作用。


let oldChannel = oldState.voiceChannel;

let newChannel = newState.voiceChannel;


if(oldChannel === undefined && newChannel !== undefined) {

  // User has joined a channel

} else if(newChannel === undefined) {

  // User has left a channel

}


查看完整回答
反對 回復 2023-08-18
  • 2 回答
  • 0 關注
  • 159 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號