繁体   English   中英

Discord js v13 setChannel 未定义

[英]Discord js v13 setChannel is undefined

我开始学习 discord.js 库,并尝试在用户加入特殊语音频道和机器人创建一个新频道并移动用户时制作事件。 现在机器人可以创建频道,但是当它试图移动用户时它有一个错误“无法读取未定义的属性(读取'setChannel')”

这是我的代码:

const {Collection} = require('discord.js')
let privateVoice = new Collection()
config = require('../config.json');

module.exports = async (bot, oldState, newState)=>{
  const user = await bot.users.fetch(newState.id)
  const member = newState.guild.members.fetch(user)
  if(!oldState.channel && newState.channel.id === (config.createChannel)){
    const channel = await newState.guild.channels.create(user.tag,{
      type: "GUILD_VOICE",
      parent: newState.channel.parent
    })
      member.voice.setChannel(channel);
      privateVoice.set(user.id, channel.id)
  }
    };

您正在尝试通过他们的用户对象获取成员,而您甚至没有await它。 .fetch是一个Promise ,你使用他们的 ID,而不是他们的用户对象。

而不是使用它来获取他们的成员对象:

const member = newState.guild.members.fetch(user)

使用VoiceState.member

const { member } = newState //object destructuring for cleaner syntax. 'const member = newState.member' is also fine

但这可以为null因为它从成员缓存中获取它们(请参阅此处)。 如果你真的想fetch它们,请确保await它并使用它们的 ID

const member = await newState.guild.members.fetch(user.id)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM