首页 > 解决方案 > 我不能使用我在 v11.6.4 版本中使用的代码 我使用的是 v12.3.1 版本

问题描述

client.on('voiceStateUpdate', async (oldState, newState) => {
 if (
  newState.voiceChannel != null &&
  newState.voiceChannel.name.startsWith('- create ')
 ) {
  newState.guild
   .createChannel(`+ ${newState.displayName}`, {
    type: 'voice',
    parent: newState.voiceChannel.parent,
   })
   .then((cloneChannel) => {
    newState.setVoiceChannel(cloneChannel);
    cloneChannel.setUserLimit(2);
   });
 }
 // ! leave
 if (oldState.voiceChannel != undefined) {
  if (oldState.voiceChannel.name.startsWith('+ ')) {
   if (oldState.voiceChannel.members.size == 0) {
    if (!oldState.voiceChannel.members.size) return;
    oldState.voiceChannel.delete();
   }
  }
 }
});

它进入命名的房间并形成新的房间,机器人遇到它们,然后删除它们。我刚刚切换到新的 V12 版本,如果您能提供帮助,我将不胜感激!我找不到其中一些,不幸的是,它们不起作用。

标签: javascriptnode.jsdiscord.js

解决方案


这些是您需要更改的内容:

  1. 使用newState.channel代替newState.voiceChannel(和相同的oldState)。
  2. 管理人员GuildChannelManager已经替换了以下方法createChannel
    newState.guild.channels.create(...)
    
  3. 使用newState.setChannel,不使用newState.setVoiceChannel

有关 v12 中重大更改的更多信息,请参阅Discord.js 指南中的“从 v11 更新到 v12”


更新后的代码:

client.on('voiceStateUpdate', async (oldState, newState) => {
 if (
  newState.channel != null &&
  newState.channel.name.startsWith('- create ')
 ) {
  newState.guild.channels
   .create(`+ ${newState.displayName}`, {
    type: 'voice',
    parent: newState.channel.parent,
   })
   .then((cloneChannel) => {
    newState.setChannel(cloneChannel);
    cloneChannel.setUserLimit(2);
   });
 }
 // ! leave
 if (oldState.channel != undefined) {
  if (oldState.channel.name.startsWith('+ ')) {
   if (oldState.channel.members.size == 0) {
    if (!oldState.channel.members.size) return;
    oldState.channel.delete();
   }
  }
 }
});

推荐阅读