直接消息时如何在discord js中获取权限

How to get permissions in discord js when we do direct message

我正在尝试获取用户在 Discord 中拥有的权限列表。如果它在频道中发送消息,就可以了,因为我们可以使用 message.member.hasPermission 等。 但是,如果消息是 DM 怎么办?我希望我的用户向机器人发送 DM,并且机器人能够检查并查看用户是否具有特定权限。 我在任何地方都找不到任何东西。我不断被重定向到 message.membermessage.guild,当它在 DM 中时它们都是空的。

在DM中没有人有权限。您所拥有的只是查看消息和发送未在视觉上显示的消息或发送给机器人的消息的权限。为了确保它不是 DM,只需 return 如果频道类型是 dm,或者公会是 null。

if(!message.guild) return;
//before checking "perms"

如果消息来自 DM,如果您想要某个公会的权限,请使用此代码

if(message.channel.type === 'dm') {
let guild = await client.guilds.fetch('THE ID OF THE GUILD YOU WANT TO SEE THE USER’S PERMS IN')
let member = await guild.members.fetch(message.author.id);
//you can now access member.permissions
}

请记住 await 必须在异步回调中。

您没有提供任何代码,所以我无法提供更多代码。

您可以使用公会的上下文获取成员。

推荐抓取,因为Guild#member()依赖于缓存并且也被弃用了。

Member#hasPermission() 也将被弃用,建议使用 MemberRoleManager#has()

以下示例使用 async/await,确保您在异步函数中

// Inside async function
const guild = await client.guilds.fetch('guild-id');
const member = await guild.members.fetch(message.author.id);
const hasThisPermission = member.roles.cache.has('permission');