You need to enable JavaScript to run this app. 如何创建仅购买对应Patreon等级的用户可使用的指令?
优惠活动
大模型
产品
解决方案
定价
更多

如何创建仅购买对应Patreon等级的用户可使用的指令?

JavaScript 实现 Patreon 等级专属指令权限方案

核心实现逻辑为:建立订阅等级与指令权限的映射关系,在所有指令执行前插入权限校验环节,权限不足直接拦截执行流程。


1. 基础配置定义

首先定义通用的等级枚举和指令权限映射,后续修改等级/指令权限只需要调整这部分配置即可:

// Patreon 订阅等级枚举,数值越大对应权限越高
const PATREON_TIERS = Object.freeze({
  NONE: 0,    // 未订阅
  BASIC: 1,   // 基础订阅档
  PREMIUM: 2, // 进阶订阅档
  PRO: 3      // 高级订阅档
});

// 指令权限映射表:key 为指令唯一标识,value 为使用该指令所需的最低等级
const COMMAND_PERMISSIONS = Object.freeze({
  "help": PATREON_TIERS.NONE,
  "custom-sticker": PATREON_TIERS.BASIC,
  "hd-export": PATREON_TIERS.PREMIUM,
  "batch-process": PATREON_TIERS.PRO
});

用Object.freeze是为了避免配置被意外修改。


2. 用户等级存储

你需要将用户的 Patreon 订阅等级同步存储到自有用户体系中,可通过 Patreon 提供的 Webhook 实现用户订阅、升级、退订时自动更新等级字段,示例用户结构:

const sampleUser = {
  userId: "u_123456",
  userName: "example_user",
  patreonTier: PATREON_TIERS.PREMIUM, // 用户当前生效的订阅等级
  // 其余用户字段
};

3. 权限校验逻辑

在指令触发入口处增加校验逻辑,校验不通过直接返回提示,不执行后续指令代码:

/**
 * 校验用户是否有指定指令的使用权限
 * @param {string} command 指令名
 * @param {object} user 用户对象
 * @returns {boolean} 权限校验结果
 */
function validateCommandPermission(command, user) {
  // 未知指令默认无权限
  if (!COMMAND_PERMISSIONS.hasOwnProperty(command)) return false;
  // 用户等级大于等于指令要求的最低等级即校验通过
  return user.patreonTier >= COMMAND_PERMISSIONS[command];
}

// 指令执行入口调用示例
function onCommandReceived(command, user) {
  const hasPermission = validateCommandPermission(command, user);
  if (!hasPermission) {
    return "该功能需要升级 Patreon 订阅等级后使用";
  }
  // 权限校验通过,执行对应指令业务逻辑
  // runCommand(command, user);
}

4. 可选优化

  • 同等级的批量指令可以用循环批量写入COMMAND_PERMISSIONS,无需逐个配置
  • 权限不足时可返回对应需要解锁的等级名称,引导用户升级
  • 建议每日全量同步一次用户订阅状态,避免 Webhook 漏触发导致的权限异常

内容的提问来源于stack exchange,提问作者Hunter W

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 06:36:02