javascript - 进入房间时扔进另一个房间
问题描述
当有人走进一个房间时,我希望他们把它扔到另一个房间
这是代码
client.on("voiceStateUpdate", function(oldMember, newMember){
let room = client.channels.cache.get('586962325240676370');
let newVoice = newMember.voice.channelID
if (newVoice == room){
let channelgit = client.channels.cache.get('757403475129794600')
member.voice.setChannel(channelgit);
}
});
我收到这个错误
C:\Users\user\Desktop\proton mdul\index.js:44
let newVoice = newMember.voice.channelID
^
TypeError: Cannot read property 'channelID' of undefined
at Client.<anonymous> (C:\Users\user\Desktop\proton mdul\index.js:44:37)
at Client.emit (events.js:311:20)
at VoiceStateUpdate.handle (C:\Users\user\Desktop\proton mdul\node_modules\discord.js\src\client\actions\VoiceStateUpdate.js:40:14)
at Object.module.exports [as VOICE_STATE_UPDATE] (C:\Users\user\Desktop\proton mdul\node_modules\discord.js\src\client\websocket\handlers\VOICE_STATE_UPDATE.js:4:35)
at WebSocketManager.handlePacket (C:\Users\user\Desktop\proton mdul\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
at WebSocketShard.onPacket (C:\Users\user\Desktop\proton mdul\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
at WebSocketShard.onMessage (C:\Users\user\Desktop\proton mdul\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
at WebSocket.onMessage (C:\Users\user\Desktop\proton mdul\node_modules\ws\lib\event-target.js:125:16)
at WebSocket.emit (events.js:311:20)
at Receiver.receiverOnMessage (C:\Users\user\Desktop\proton mdul\node_modules\ws\lib\websocket.js:797:20)
解决方案
该voiceStateUpdate
事件实际上在 discord.js ( sourceoldState
) 的最新版本中返回,它们都是对象,而不是对象。newState
VoiceState
GuildMember
因此,您必须更改要使用的代码VoiceState
。这非常简单,因为您可以通过获取属性GuildMember
从 a 中获取对象。VoiceState
.member
另一件事是,newState
有时可能是undefined
因为当有人离开语音频道时事件也会触发。这意味着您还必须检查该值是否未定义。
如果您要实现所有这些更改,它将如下所示:
client.on("voiceStateUpdate", function(oldState, newState) {
if (newState === undefined) {
return;
}
let room = client.channels.cache.get('586962325240676370');
let voiceChannelID = newState.channelID;
if (voiceChannelID === room) {
let channelgit = client.channels.cache.get('757403475129794600');
newState.setChannel(channelgit);
}
});
推荐阅读
- c# - 使用 LINQ 有效地配对与时间相关的记录
- sql - 不同条件的SQL join
- magento2 - Magento 2 Magento\Catalog\Model\layer getProductCollection() 不影响过滤器
- vba - MS Outlook VBA 通过身份验证将电子邮件附件上传到 Sharepoint
- c# - 在哪个 .Net Framework 版本 C# 7.2 可用
- javascript - Object.create() 使用
- python - 在 python 中启动键绑定
- ios - 未发送推送通知 quickblox
- java - CompletableFuture runAsync 与新线程
- solr - 使用 Solr 索引共享文件夹