为啥我得到:TypeError:channel.updateOverwrite 不是函数
Posted
技术标签:
【中文标题】为啥我得到:TypeError:channel.updateOverwrite 不是函数【英文标题】:Why am I getting: TypeError: channel.updateOverwrite is not a function为什么我得到:TypeError:channel.updateOverwrite 不是函数 【发布时间】:2022-01-02 08:23:51 【问题描述】:我在 discord.js 上关注 tutorial,制作票务机器人。我已经仔细检查过,我仍然收到同样的错误:
TypeError:channel.updateOverwrite 不是函数
我查看了我能找到的所有 *** 问题,但没有一个对我有用。我也在 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;
);
【问题讨论】:
尝试 channel.overwritePermissions 代替:***.com/questions/62704976/… 【参考方案1】:您似乎正在使用 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 不是函数的主要内容,如果未能解决你的问题,请参考以下文章
我得到一个“TypeError:'int'对象没有属性'_getitem',我不知道为啥
为啥我得到 Typeerror 超级表达式必须为 null 或函数?
为啥我得到一个 TypeError: PySide2.QtCore.QStringListModel.setData(): no enough arguments
我明白为啥我得到: TypeError: getsockaddrarg: AF_INET address must be tuple, not str