【问题标题】:Discord js v13 setChannel is undefinedDiscord js v13 setChannel 未定义
【发布时间】:2021-11-13 21:33:58
【问题描述】:

我开始学习 discord.js 库并尝试在用户加入特殊语音频道并且机器人创建新频道并移动用户时进行事件。现在 bot 可以创建频道,但是当它尝试移动用户时出现错误“无法读取未定义的属性(正在读取 '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)
  }
    };

【问题讨论】:

    标签: javascript discord discord.js


    【解决方案1】:

    您试图通过用户对象获取成员,而您甚至没有awaiting 它。 .fetchPromise,您使用的是他们的 ID,而不是他们的用户对象。

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

    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,因为它从成员缓存中获取它们(参见here)。如果你真的想fetch他们,请确保await它并使用他们的ID

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

    【讨论】:

      猜你喜欢
      • 2021-03-29
      • 2022-01-05
      • 2018-12-25
      • 2021-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      相关资源
      最近更新 更多