我正在尝试获取机器人的权限以检查该命令是否能够 运行

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

我正在尝试获取机器人的权限以检查该命令是否能够 运行。我有以下代码:

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

我收到以下错误:

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

因为 bot 正如您定义的那样,它只是一个 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,这正是您要搜索的内容:

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

bot 是一个 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 将成为您的机器人作为该公会的 GuildMember

您也可以在 guild.members 上使用 fetch 方法。无论如何,您需要 guild 来检查您的机器人的权限。

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