繁体   English   中英

频道中@everyone 的访问权限 Discord.js v14

[英]Access permissions for @everyone in a channel Discord.js v14

我想检查@everyone是否对定义的频道具有特定权限。

在 v13 中,我让它工作得很好:

const channelPermissions = channel.guild.roles.everyone.permissionsIn(channel);

if (channelPermissions.has([Permissions.FLAGS.SEND_MESSAGES, Permissions.FLAGS.VIEW_CHANNEL])) {
   interaction.reply('Hey! You can use this channel!');
}

在 v14 中, 文档官方指南并未暗示此方法的重大更改。

这是我试图让它发挥作用:

const { PermissionsBitField } = require('discord.js');

const channelPermissions = interaction.channel.guild.roles.everyone.permissionsIn(channel);

if (channelPermissions.has([PermissionsBitField.Flags.SendMessages, PermissionsBitField.Flags.ViewChannel])) {
   interaction.reply('Hey! You can use this channel!');
}

但是,每次执行时都会出现以下错误:

TypeError: Cannot read properties of null (reading 'has')

正如文档所说, has()模式与以前相同,我不明白这个错误来自哪里。

欢迎任何帮助或解释。 谢谢!

愚蠢的我,在代码的上方, if/else语句中的拼写错误会使channelPermissions null。

但是,在Discord.js 支持服务器中寻求帮助时,有人与我分享了另一种从频道上的@everyone获取权限的方法:

const channelPermissions = channel.permissionsFor(interaction.guild.id);

我想我下次应该更加小心!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM