我正在學習有關 discord.js的教程,制作票務機器人。我已經加倍檢查了,但仍然出現相同的錯誤:
型別錯誤:channel.updateOverwrite 不是函式
我查看了所有我能找到的 StackOverflow 問題,但沒有一個對我有用。我也在堆疊之外更深入地探索了一點,仍然沒有幫助。這是我的代碼:
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;
}
});
}
}
uj5u.com熱心網友回復:
看來您正在使用 discord.js v13 并嘗試一些舊代碼。在 v13channel#updateOverwrite()中洗掉了該方法,而在以前的版本中channel#permissionOverwrites是覆寫的集合,在 v13 中它是一個PermissionOverwriteManager. 這意味著,您應該使用它的.edit()方法來更新覆寫:
channel.permissionOverwrites.edit(
message.author,
{ SEND_MESSAGES: false, VIEW_CHANNEL: false },
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/364487.html
標籤:javascript 节点.js 不和谐 不和谐.js
