[英]Check if bot has permissions in a specific channel discord.js v14
[英]How to create a private channel only the user and the bot can see in Discord.js v14?
我尝试在 Discord.js v14 中创建私人频道,但我的代码返回错误。
这是我的代码的相关部分:
else if (interaction.customId === 'donatid') {
if(interaction.values[0] == '01'){
const everyoneRole = interaction.guild.roles.everyone;
const name = interaction.user.tag;
interaction.guild.channels.create(name, 'text') // i think problem over here
.then(r => {
r.overwritePermissions(interaction.author.id, { VIEW_CHANNEL: true });
r.overwritePermissions(client.id, { VIEW_CHANNEL: true });
r.overwritePermissions(everyoneRole, { VIEW_CHANNEL: false });
})
.catch(console.error);
}
};
和错误:
DiscordAPIError\[50035\]: Invalid Form Body
您的代码中有几个错误。 在 v14 中, create()
接受options
object 并且"text"
不再是有效类型。 您应该导入ChannelType
枚举并为此使用ChannelType.GuildText
。
没有interaction.author
。 有一个interaction.user
或interaction.member
,所以如果你想使用作者的 ID,你可以使用它们。
也没有client.id
。 不过,您可以使用client.user.id
获取机器人的 ID。
此外,您可以在create
方法中添加权限作为选项,这样您就不必then
使用它了。 请参阅下面的工作代码:
const { ChannelType, PermissionFlagsBits } = require('discord.js');
//...
interaction.guild.channels.create({
name: interaction.user.tag,
type: ChannelType.GuildText,
permissionOverwrites: [
{
id: interaction.guild.roles.everyone,
deny: [PermissionFlagsBits.ViewChannel],
},
{
id: interaction.user.id,
allow: [PermissionFlagsBits.ViewChannel],
},
{
id: client.user.id,
allow: [PermissionFlagsBits.ViewChannel],
},
],
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.