Skip to content

入群自动审批策略

概述

入群自动审批策略允许机器人自动处理入群申请。配置白名单号码后,命中白名单的申请将自动通过审批。

限制

  • 一个机器人最多创建 20 个策略
  • 单个策略白名单上限 10 万个号码
  • 单次添加/删除最多 10000 个号码

快速上手

创建策略

java
import cn.org.bukkit.bngeuit.Bngeuit;
import cn.org.bukkit.bngeuit.dto.message.approval.StrategyEnable;

// 创建策略,关联指定群,启用状态
Bngeuit.createJoinApprovalStrategy(
    List.of("group_openid_1", "group_openid_2"),  // 关联群列表
    null,                                           // 或使用 QQ 群号:List.of("123456789")
    StrategyEnable.ON,                              // 启用
    (String) null,                                  // 过期时间(null 默认一年)
    "售后群自动审批"                                  // 备注
);

// 使用毫秒时间戳设置过期时间
long expireAt = System.currentTimeMillis() + 365L * 24 * 60 * 60 * 1000; // 一年后
Bngeuit.createJoinApprovalStrategy(
    List.of("group_openid_1"),
    null,
    StrategyEnable.ON,
    expireAt,
    "带过期时间的策略"
);

查询策略列表

java
// 查询所有策略
JoinApprovalStrategyListResponse resp = Bngeuit.getJoinApprovalStrategies();

for (JoinApprovalStrategy strategy : resp.strategies()) {
    System.out.println("策略ID: " + strategy.strategyId());
    System.out.println("关联群: " + strategy.groupOpenids());
    System.out.println("白名单数量: " + strategy.whitelistUserCount());
    System.out.println("启用状态: " + strategy.isEnabled());
}

管理白名单

java
import cn.org.bukkit.bngeuit.dto.message.approval.WhitelistUsersOp;

// 添加白名单号码
Bngeuit.updateWhitelistUsers(strategyId, WhitelistUsersOp.ADD, 
    List.of("1234567890", "9876543210"));

// 删除白名单号码
Bngeuit.updateWhitelistUsers(strategyId, WhitelistUsersOp.DEL, 
    List.of("1234567890"));

执行策略

对策略关联的全部群发起全量扫描,命中白名单的入群申请自动审批通过:

java
Bngeuit.executeJoinApprovalStrategy(strategyId);
// 异步执行,约 10 分钟完成

修改策略

java
import cn.org.bukkit.bngeuit.dto.message.approval.GroupAction;

// 停用策略
Bngeuit.updateJoinApprovalStrategy(strategyId, StrategyEnable.OFF, null, null, null);

// 添加关联群
Bngeuit.updateJoinApprovalStrategy(strategyId, null, null, 
    GroupAction.addOpenids(List.of("new_group_openid")), null);

// 删除关联群
Bngeuit.updateJoinApprovalStrategy(strategyId, null, null, 
    GroupAction.delOpenids(List.of("old_group_openid")), null);

删除策略

java
Bngeuit.deleteJoinApprovalStrategy(strategyId);

手动审批

除了自动审批,也可以手动处理入群申请:

java
import cn.org.bukkit.bngeuit.dto.message.approval.ApprovalAction;

// 查询入群申请
JoinRequestListResponse requests = Bngeuit.getJoinRequestList(groupOpenid, null, 20);

// 批准申请
Bngeuit.approveJoinRequest(groupOpenid, memberOpenid, joinRequestId);

// 拒绝申请
Bngeuit.reviewJoinRequest(groupOpenid, memberOpenid, 
    ApprovalAction.DECLINE, joinRequestId, "不符合入群条件", false);

// 拒绝并加入黑名单
Bngeuit.reviewJoinRequest(groupOpenid, memberOpenid, 
    ApprovalAction.DECLINE, joinRequestId, "违规用户", true);

API 参考

JoinApprovalStrategy

入群自动审批策略:

字段类型说明
strategyId()String策略 ID
groupOpenids()List<String>关联群 OpenID 列表
groupIds()List<String>关联 QQ 群号列表
whitelistUserCount()int白名单号码数量
isEnable()StrategyEnable启用状态
expireAt()String过期时间
createdAt()String创建时间
updatedAt()String更新时间
remark()String备注

StrategyEnable

策略启用状态枚举:

枚举JSON 值说明
ON"on"启用
OFF"off"关闭

ApprovalAction

审批动作枚举:

枚举JSON 值说明
APPROVE"approve"通过
DECLINE"decline"拒绝

GroupAction

关联群增删操作(用于修改策略):

方法说明
GroupAction.addOpenids(groupOpenids)添加关联群(OpenID)
GroupAction.delOpenids(groupOpenids)删除关联群(OpenID)
GroupAction.addIds(groupIds)添加关联群(QQ 群号)
GroupAction.delIds(groupIds)删除关联群(QQ 群号)