如何基于JSON存储的频道ID实现命令的频道校验?
基于JSON存储频道ID的命令权限校验实现
需求说明
你已有一套通过JSON存储角色ID来校验用户命令权限的逻辑,现在需要复用相同思路,通过JSON存储频道ID来限制命令仅能在指定频道内使用。
步骤1:准备频道ID存储的JSON文件
格式和角色权限的JSON一致,创建比如channel_perms.json文件,内容为频道ID数组:
[ "channelid1", "channelid2", "channelid3" ]
步骤2:编写频道校验代码
复用原有逻辑的核心,只需要把角色校验的部分替换为频道ID的判断:
// 清除缓存重新读取最新的频道权限配置 delete require.cache[require.resolve("./resources/channel_perms.json")]; // 导入存储频道ID的JSON文件 const allowedChannels = require("./resources/channel_perms.json"); // 判断当前命令所在频道ID是否在允许列表内 const result = allowedChannels.includes(msg.channel.id); // 存储校验结果,供后续逻辑使用 Actions.storeValue(result, 1, "auth", cache); Actions.callNextAction(cache);
代码说明
- 和角色校验逻辑一致,先清除
require缓存确保读取最新配置 - 替换原有的角色数组为频道ID数组
- 核心判断从用户角色是否在允许列表改为当前频道ID是否在允许列表,直接用
includes判断即可,无需遍历
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

