Discord.js开发者权限检测失效问题求助
问题:Discord机器人开发者权限检测失效
我正在开发一款Discord机器人,设置了若干仅开发者可使用的命令,但开发者身份检测系统无法正常工作。测试addmoney命令时,我本应拥有权限,却收到了「仅开发者可使用」的提示。相关代码如下:
const { MessageEmbed } = require("discord.js"); exports.execute = async (client, message, args) => { if (!client.config.admins.includes(message.author.id)) return message.channel.send("Slow down, poke. This is devs only, poke?"); // return if author isn't bot owner let user = message.mentions.users.first(); if (!user) return message.channel.send("Send money to who?"); let amount = args[1]; if (!amount || isNaN(amount)) return message.reply("That isn't a valid amount."); let data = client.eco.addMoney(user.id, parseInt(amount)); const embed = new MessageEmbed() .setTitle(`You'll be rich! The money has been added.`) .addField(`User`, `<@${data.user}>`) .addField(`Balance Given`, `${data.amount} 💸`) .addField(`Total Amount`, data.after) .setColor("#f54242") .setThumbnail(user.displayAvatarURL) .setTimestamp(); return message.channel.send(embed); } exports.help = { name: "addmoney", aliases: ["addbal"], usage: `addmoney @user <amount>` }
排查与解决方向
- 核对
client.config.admins配置:确保你的Discord用户ID准确添加到该数组中,ID是纯数字字符串,可通过Discord开发者模式右键自己头像复制获取。注意不要带空格或额外字符。 - 验证配置加载状态:在权限判断代码前添加
console.log(client.config.admins),触发命令后查看控制台输出,确认数组中存在你的ID。若输出undefined或空数组,说明配置文件未正确导入到client对象。 - 统一ID数据类型:如果
client.config.admins中的ID是数字类型,而message.author.id是字符串类型,includes会匹配失败。可以统一转成字符串,比如修改判断为!client.config.admins.map(id => String(id)).includes(message.author.id)。 - 检查前置权限拦截:确认机器人其他中间件或命令处理代码中,没有在该命令执行前进行额外的权限拦截,导致提前返回提示。
内容的提问来源于stack exchange,提问作者arynaa
相关产品推荐
相关产品推荐

