Estoy tratando de obtener los permisos del bot para verificar si el comando podrá ejecutarse. Tengo el siguiente código:
let botid = "idbot" let bot = client.users.cache.get(botid) if (!bot.permissions.has("ADMINISTRATOR")) return message.channel.send("Para mim poder liberar a função de registro eu preciso da permissão **Administrador**, por favor peça para algum **Staff** do servidor configurar, Obrigado.")Recibo el siguiente error:
if (!bot.permissions.has("ADMINISTRATOR")) ^ TypeError: Cannot read properties of undefined (reading 'has')Porque el bot , como lo definió, es solo un User , lo que significa que solo tiene información como su etiqueta, nombre de usuario, servidores en los que se encuentra, etc. lo que quiere es un GuildMember , es la misma persona pero en un servidor específico, tiene roles, un color de elevación y permissions que es lo que está buscando:
let bot = message.guild.me; // The bot's GuildMember object if (!bot.permissions.has("ADMINISTRATOR")) return message.reply('I am not an admin!')bot es un User y los User no tienen permissions , solo los Miembros del GuildMember los tienen. Para esto, deberá obtener el Guild (ya sea obteniendo su ID o simplemente usando message.guild ). guild#me será tu bot como GuildMember de ese gremio.
También puedes usar el método fetch en guild.members . De todos modos, necesitarás un guild para verificar los permisos de tu bot.
let botid = 'idbot'; let guild = client.guilds.cache.get('GUILD_ID'); // OR get it from the message let { guild } = message; let bot = guild.me; // OR fetch it from members let bot = await guild.members.fetch(botid); if (!bot.permissions.has('ADMINISTRATOR')) return message.channel.send( 'Para mim poder liberar a função de registro eu preciso da permissão **Administrador**, por favor peça para algum **Staff** do servidor configurar, Obrigado.', );