LDinos
LDinos

Reputation: 103

discord.js How to check if the bot has permissions from server/channel?

I want to check two things

  1. Check if I have a specific SERVER permission for my bot (return true/false depending if it has that permission)
  2. Check if I have a specific CHANNEL permission for my bot (return true/false depending on the value of the channel settings that has included my bot a specific permission. E.g I might have added my bot in the channel settings and set the "MANAGE SERVER" permission to true. How can I read that?)

Upvotes: 3

Views: 5610

Answers (3)

Benzy
Benzy

Reputation: 905

for v14 you now have to use the MemberManager within Guild to access me

like so

msg.guild.members.me?.permissionsIn(message.channel).has(permissions);

Upvotes: 3

Lauren Yim
Lauren Yim

Reputation: 14148

LDinos' answer is correct for Discord.js v12. However, Discord.js v13 removed the hasPermission permission in favour of permissions.has.

Channel permissions:

msg.guild.me.permissionsIn(msg.channel).has(permissions)

Guild (server) permissions:

msg.guild.me.permissions.has(permissions)

Upvotes: 2

LDinos
LDinos

Reputation: 103

Found it! To find the bot's permissions, let's say, after a message (msg =>) was sent by a user:

CHANNEL permission:

msg.guild.me.permissionsIn(msg.channel).has(<permission string here>)

SERVER permission

msg.guild.me.hasPermission(<permission string here>)

Upvotes: 6

Related Questions