【问题标题】:Doesn't create the voice channel with no error不创建没有错误的语音通道
【发布时间】:2021-03-10 22:03:34
【问题描述】:

我正在尝试使用 node.js 中的 discord.js 库构建一个机器人,当用户加入某个频道时,它将在某个类别中创建一个新的语音频道。创建频道后,我希望机器人将用户移动到新频道!

我正在尝试以下代码:

var temporary = [];

client.on('voiceStateUpdate', async (oldMember, newMember) => {
 const mainCatagory = '815281015207624704';
 const mainChannel = '814938402137833484';

 if (newMember.voiceChannelID == mainChannel) {
  await newMember.guild
   .createChannel(`???? ┋ Support Room`, { type: 'voice', parent: mainCatagory })
   .then(async (channel) => {
    temporary.push({ newID: channel.id, guild: newMember.guild.id });
    await newMember.setVoiceChannel(channel.id);
   });
 }

 if (temporary.length >= 0)
  for (let i = 0; i < temporary.length; i++) {
   let ch = client.guilds
    .find((x) => x.id === temporary[i].guild)
    .channels.find((x) => x.id === temporary[i].newID);

   if (ch.members.size <= 0) {
    await ch.delete();

    return temporary.splice(i, 1);
   }
  }
});

代码没有错误,但没有创建语音通道!

【问题讨论】:

  • 你使用的是什么 discord.js 版本?
  • 我使用的是v12+版本

标签: javascript discord discord.js


【解决方案1】:

问题是您使用的是 discord.js v12,但您的代码是为 v11 编写的。

(附带说明,在按 ID 搜索时,请始终使用 Collection#get 而不是 Collection#find.find((value) =&gt; value.id === '...') 应始终简单地转换为 .get('...')。这也适用于将 Collection#someCollection#has 切换)

这些弃用中的每一个都是由于 discord.js 切换到管理器/缓存系统而导致的。例如,Client#guilds 现在返回 GuildManager 而不是集合。

More information about switching from v11 to v12 (including Managers)

【讨论】:

  • 非常感谢!就像在我的国家免费翻译中所说的那样,它就在我眼前,我看不到它。我遇到了一个问题,说 newMember#voice#channelID 未定义
  • 很高兴我能帮上忙
  • 我遇到了一个问题,说 newMember#voice#channelID 未定义。
  • 如果成员不在语音频道中,VoiceState#channelID 将未定义。
  • 我想加入主频道,机器人创建新的语音频道并将我移入。当我加入主频道时,出现此错误。如果我加入任何其他语音频道都会出现同样的错误!
猜你喜欢
  • 2022-11-20
  • 1970-01-01
  • 1970-01-01
  • 2021-09-27
  • 1970-01-01
  • 2020-09-24
  • 1970-01-01
  • 1970-01-01
  • 2020-08-21
相关资源
最近更新 更多