javascript - 我不能使用我在 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 版本,如果您能提供帮助,我将不胜感激!我找不到其中一些,不幸的是,它们不起作用。
解决方案
这些是您需要更改的内容:
- 使用
newState.channel
代替newState.voiceChannel
(和相同的oldState
)。 - 管理人员
GuildChannelManager
已经替换了以下方法createChannel
:newState.guild.channels.create(...)
- 使用
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();
}
}
}
});
推荐阅读
- python - 在 Tensorflow 2.3.1 中读取损失函数的值
- python - 从两个字典创建新字典,其中键作为第一个字典的值,值作为第二个字典的值
- mysql - 带有子查询的 CTE 查询在小型索引表上很慢;如何在 MySQL 上进行优化?
- java - 问题 JPA/休眠
- python - 有人可以帮我理解 Zed Shaw 的 Learn Python 3 the Hard way 中的 ex23
- sql - INNER JOIN 的多个表的搜索条件
- r - 在制作ggplot轴标题时,我如何写£^-1?
- xslt - 在 msxml 中实现评估(XPath)
- python - 如何比较if语句中的字符串列表?
- sql - 如何在 SQL 中为每个带有行号的 user_id 选择最大收入?