为什么我得到:TypeError:Channel。updateOverwrite不是一个函数 [英] Why am I getting: TypeError: channel.updateOverwrite is not a function
本文介绍了为什么我得到:TypeError:Channel。updateOverwrite不是一个函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在discord.js上关注tutorial,制作了一个票务机器人。我已重新检查,但仍然收到相同的错误:
TypeError:Channel.updateOverwrite不是函数
我已经检查了我能找到的所有StackOverflow问题,但没有一个对我有效。我也在SO之外更深入地探索了一下,仍然没有帮助。以下是我的代码:
module.exports = {
name: 'ticket',
description: 'Open a ticket!',
async execute(client, message, args, cmd, Discord) {
// creates tickets
let channel = await message.guild.channels.create(
`ticket: ${message.author.tag}`,
{ type: 'text' }
);
await channel.setParent('912495738947260446');
// updates channel perms
channel.updateOverwrite(message.guild.id, {
SEND_MESSAGE: false,
VIEW_CHANNEL: false
});
channel.updateOverwrite(message.author, {
SEND_MESSAGE: true,
VIEW_CHANNEL: true
});
const reactionMessage = await channel.send('Thanks for opening a ticket! A staff member will be with you shortly. While you are here, please tell us why you opened this ticket.');
try {
await reactionMessage.react("🔒");
await reactionMessage.react("🗑️");
} catch(err) {
channel.send('Error sending emojis! Please tell a developer to check the console!');
throw err;
}
const collector = reactionMessage.createReactionCollector((reaction, user) => message.guild.members.cache.find((member) => member.id === user.id).hasPermission('ADMINISTRATOR'), {dispose: true});
collector.on('collect', (reaction, user) => {
switch (reaction.emoji.name) {
case "🔒":
channel.updateOverwrite(message.author, { SEND_MESSAGE: false, VIEW_CHANNEL: false});
channel.setname(`🔒 ${channel.name}`)
break;
case "🗑️":
channel.send('Deleting Channel in 10 seconds!');
setTimeout(() => channel.delete(), 10000);
break;
}
});
}
}
推荐答案
您似乎正在使用discord.js V13并尝试一些旧代码。在V13中,channel#updateOverwrite()
方法被删除,而在以前的版本中channel#permissionOverwrites
是collection of overwrites,在V13中它是PermissionOverwriteManager
。这意味着,您应该使用其.edit()
方法来更新覆盖:
channel.permissionOverwrites.edit(
message.author,
{ SEND_MESSAGES: false, VIEW_CHANNEL: false },
)
这篇关于为什么我得到:TypeError:Channel。updateOverwrite不是一个函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文