mayudev / revcord

A bridge for Discord and Revolt with easy setup through commands
MIT License
64 stars 9 forks source link

DiscordAPIError: Missing Permissions #9

Closed stratbasher closed 1 year ago

stratbasher commented 1 year ago

Hello,

I am running revcord in Docker. I have both bots running and signed into Discord and Revolt. The bot in Revolt is in a role that has Masquerade permissions and the bot on Discord is in a role that has "Manage Webhooks" specifically enabled.

I also used all the checkboxes when generating the invitation link.

I'm getting the following in my logs whenever I try to connect channels:


revcord_1                | ERR! Discord DiscordAPIError: Missing Permissions
revcord_1                | ERR! Discord     at RequestHandler.execute (/app/node_modules/discord.js/src/rest/RequestHandler.js:350:13)
revcord_1                | ERR! Discord     at processTicksAndRejections (node:internal/process/task_queues:96:5)
revcord_1                | ERR! Discord     at async RequestHandler.push (/app/node_modules/discord.js/src/rest/RequestHandler.js:51:14)
revcord_1                | ERR! Discord     at async TextChannel.fetchWebhooks (/app/node_modules/discord.js/src/structures/BaseGuildTextChannel.js:125:18)
revcord_1                | ERR! Discord  DiscordAPIError: Missing Permissions
revcord_1                | ERR! Discord     at RequestHandler.execute (/app/node_modules/discord.js/src/rest/RequestHandler.js:350:13)
revcord_1                | ERR! Discord     at processTicksAndRejections (node:internal/process/task_queues:96:5)
revcord_1                | ERR! Discord     at async RequestHandler.push (/app/node_modules/discord.js/src/rest/RequestHandler.js:51:14)
revcord_1                | ERR! Discord     at async TextChannel.fetchWebhooks (/app/node_modules/discord.js/src/structures/BaseGuildTextChannel.js:125:18) {
revcord_1                | ERR! Discord   method: 'get',
revcord_1                | ERR! Discord   path: '/channels/<redacted>/webhooks',
revcord_1                | ERR! Discord   code: 50013,
revcord_1                | ERR! Discord   httpStatus: 403,
revcord_1                | ERR! Discord   requestData: { json: undefined, files: [] }
revcord_1                | ERR! Discord }
revcord_1                | ERR! Discord DiscordAPIError: Missing Permissions
revcord_1                | ERR! Discord     at RequestHandler.execute (/app/node_modules/discord.js/src/rest/RequestHandler.js:350:13)
revcord_1                | ERR! Discord     at processTicksAndRejections (node:internal/process/task_queues:96:5)
revcord_1                | ERR! Discord     at async RequestHandler.push (/app/node_modules/discord.js/src/rest/RequestHandler.js:51:14)
revcord_1                | ERR! Discord     at async TextChannel.fetchWebhooks (/app/node_modules/discord.js/src/structures/BaseGuildTextChannel.js:125:18)
revcord_1                | ERR! Discord  DiscordAPIError: Missing Permissions
revcord_1                | ERR! Discord     at RequestHandler.execute (/app/node_modules/discord.js/src/rest/RequestHandler.js:350:13)
revcord_1                | ERR! Discord     at processTicksAndRejections (node:internal/process/task_queues:96:5)
revcord_1                | ERR! Discord     at async RequestHandler.push (/app/node_modules/discord.js/src/rest/RequestHandler.js:51:14)
revcord_1                | ERR! Discord     at async TextChannel.fetchWebhooks (/app/node_modules/discord.js/src/structures/BaseGuildTextChannel.js:125:18) {
revcord_1                | ERR! Discord   method: 'get',
revcord_1                | ERR! Discord   path: '/channels/<redacted>/webhooks',
revcord_1                | ERR! Discord   code: 50013,
revcord_1                | ERR! Discord   httpStatus: 403,
revcord_1                | ERR! Discord   requestData: { json: undefined, files: [] }
revcord_1                | ERR! Discord }

revolt discord

I'm not sure what I'm doing wrong or if this is a bug. Any assistance would be appreciated.

stratbasher commented 1 year ago

Re-inviting as administrator resolved the issue, but this means that the documentation is missing a permission that's needed.

mayudev commented 1 year ago

The most likely reason is that at some point the permission to manage webhooks in the channel was overridden to be denied. Adding the Administrator permission just invalidated this override.

I've added an additional permission check, a clearer error message and and an entry in documentation explaining it.