so, i had a fundamental misunderstanding about how command errors work.
turns out the help command runs the checks for each function.
This ended up sending one "permission denied" message for each command in the Emotes cog,
*each time help was run*.
To fix this, __local_check needs to not have extra side effects.
I create one new exception, MissingManageServerEmojis, and raise it in case the user or bot is missing permissions.
I re-use NoPrivateMessages, since that's already a d.py exception.
Then I catch the errors in on_command_error, and send them to the user.