Is there any utility to check if a member has permission to run a command?
Hi! I have a bot that needs to check if a member has permission to run a command and then do something accordingly (eg remove a role) and I'd rather not write something to check if the member has permission to use a command if it already exists
Solution:Jump to solution
You'll have to write your own function. Feel free to make a PR to @sapphire/discord.js-utilities after the fact.
8 Replies
<:_:746069730170896405> Sapphire docs results:
Interfaces / Interface: CommandOptions / Properties / requiredUserPermissions
You can pass in a
Permissionresolvable
to the requiredUserPermissions
option on a command to make sure the user running it has that permission.Not like that permission
I want to know if the user is allowed to run a command based on the slash command's permissions
the guild may have overridden them
it's a little confusing
I'm not sure I follow then. If the guild overrode the perms and the user doesnt have the ability to run the slash command, your bot should never receive an interaction.
The command in question gives the user a role, I need to know if the user loses access to the command to then remove the role accordingly
I think I need https://discord.js.org/#/docs/discord.js/main/class/ApplicationCommandPermissionsManager?scrollTo=has but instead of it checking a single permission id, it'd iterate through and calculate whether the user has the ability to run a command
I basically need to check if a member can run a command outside of the command itself, instead in a listener
I'm not sure if there is an event sent to the client on that kind of update. Scanning through https://www.sapphirejs.dev/docs/Documentation/api-framework/#events doesn't show anything obvious but I might have missed something.
I know there isn't a event unfortunately
I'd probably use it in a member update as the user's ability to use a command would change based on roles
I just need a function to check if a user can run a command based on the guild overrides
Solution
You'll have to write your own function. Feel free to make a PR to @sapphire/discord.js-utilities after the fact.