Home > Software design >  I'm trying to fetch the bot's permissions to check if the command will be able to run
I'm trying to fetch the bot's permissions to check if the command will be able to run

Time:03-17

I'm trying to fetch the bot's permissions to check if the command will be able to run. I have the following code:

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.")

I receive the following error:

if (!bot.permissions.has("ADMINISTRATOR"))
                    ^
TypeError: Cannot read properties of undefined (reading 'has')

CodePudding user response:

Because bot as you defined it is just a User, meaning it just has informations like it's tag, username, servers it is in etc.. what you want is a GuildMember, it's the same person but on a specific server, it has roles, a hoist color and permissions which is what you're searching for :

let bot = message.guild.me; // The bot's GuildMember object
if (!bot.permissions.has("ADMINISTRATOR")) return message.reply('I am not an admin!')

CodePudding user response:

bot is a User and Users don't have permissions, only GuildMembers do. For this, you'll need to grab the Guild (either by getting by its ID, or just using message.guild). guild#me will be your bot as a GuildMember of that guild.

You could also just use the fetch method on guild.members. Anyway, you'll need a guild to check your bot's permissions.

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.',
  );
  • Related