Skip to content

mjy1113451/group_manager

Repository files navigation

GroupManager

一个强大的 AstrBot 群管理插件,支持通过正则表达式、关键词、白名单和黑名单验证加群申请。

issue请优先加最底下的插件群号

✨ 功能特点

  • 🔍 正则表达式支持 - 使用强大的正则表达式匹配加群申请
  • 🔑 关键词匹配 - 简单的关键词匹配功能
  • 白名单功能 - 白名单用户直接通过验证
  • 黑名单功能 - 黑名单用户直接拒绝申请
  • 🎯 群独立配置 - 每个群可以配置独立的验证规则
  • 🛡️ 权限管理 - 支持管理员权限控制
  • 🧪 测试功能 - 在添加规则前可以先测试匹配效果
  • 💎 精美消息 - 所有输出消息都经过精心设计,美观易读
  • 📦 模块化设计 - 清晰的代码结构,易于维护和扩展

📦 安装

  1. 将插件文件夹放入 AstrBot 的 plugins 目录
  2. 在 AstrBot WebUI 中启用插件
  3. 根据需要配置插件参数

🚀 快速开始

基本使用

  1. 添加关键词规则

    /gm add 学生
    /gm add 工作人员
  2. 添加正则表达式规则

    /gm add /\d{11}/           # 匹配11位数字(手机号)
    /gm add /[1-9][0-9]{4,}/   # 匹配QQ号
  3. 查看规则列表

    /gm list
  4. 测试规则

    /gm test 我是学生
    /gm test 13812345678
    
  5. 删除规则

    /gm remove 1
    

📋 指令列表

指令 说明 权限
`/gm add [关键词 正则]` 添加验证规则
/gm remove [索引] 删除指定规则 管理员
/gm list 查看当前群规则 所有用户
/gm clear 清空所有规则 管理员
/gm test [文本] 测试文本匹配 所有用户
/gm whitelist add [ID] 添加用户到白名单 管理员
/gm whitelist remove [ID] 从白名单移除用户 管理员
/gm whitelist list 查看白名单 所有用户
/gm blacklist add [ID] 添加用户到黑名单 管理员
/gm blacklist remove [ID] 从黑名单移除用户 管理员
/gm blacklist list 查看黑名单 所有用户
/gm help 显示帮助信息 所有用户

🔧 配置说明

在插件配置中可以设置以下参数:

admin_list

  • 类型: 列表
  • 说明: 管理员ID列表
  • 默认值: 空列表(所有用户都可以管理规则)
  • 提示: 只有列表中的用户才能添加/删除规则

default_mode

  • 类型: 字符串
  • 选项: allow / reject
  • 默认值: allow
  • 说明: 当群没有配置规则时的默认处理方式

enable_logging

  • 类型: 布尔值
  • 默认值: true
  • 说明: 是否记录加群申请的验证日志

whitelist_priority

  • 类型: 布尔值
  • 默认值: true
  • 说明: 白名单用户是否绕过规则验证直接通过

blacklist_priority

  • 类型: 布尔值
  • 默认值: true
  • 说明: 黑名单用户是否直接拒绝,即使匹配规则

📚 正则表达式示例

常用正则表达式

用途 正则表达式 说明
手机号 /\d{11}/ 匹配11位数字
QQ号 /[1-9][0-9]{4,}/ 匹配5位以上数字,首位不为0
邮箱 /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/ 标准邮箱格式
学号 /\d{8,12}/ 匹配8-12位数字
身份证 /\d{17}[\dXx]/ 匹配18位身份证号
微信号 /[a-zA-Z][-_a-zA-Z0-9]{5,19}/ 微信号格式
邮编 /\d{6}/ 匹配6位邮政编码

组合使用

你可以同时添加多个规则,只要匹配到任意一条规则就会通过验证:

/gm add 学生
/gm add 老师
/gm add /\d{11}/
/gm add /@.*\.edu\.cn/

这样,申请消息中包含"学生"、"老师"、11位数字或.edu.cn邮箱的申请都会被允许。

💡 使用场景

场景1: 学生群验证

/gm add 学生
/gm add /\d{11}/
/gm add /@.*\.edu\.cn/

验证申请者是否为学生(包含学生关键词、手机号或学校邮箱)

场景2: 工作群验证

/gm add 工号:\d{4,}/
/gm add 部门

验证申请者是否提供工号或部门信息

场景3: 兴趣群验证

/gm add 喜欢
/gm add 爱好
/gm add 感兴趣

验证申请者是否表达了对群主题的兴趣

场景4: 严格验证

/gm add /验证码:\d{6}/

要求申请者提供6位验证码(需要配合其他系统)

场景5: 白名单管理

/gm whitelist add 123456789
/gm whitelist add 987654321

添加特定用户到白名单,这些用户将直接通过验证

场景6: 黑名单管理

/gm blacklist add 111222333
/gm blacklist add 444555666

添加特定用户到黑名单,这些用户将被直接拒绝

场景7: 混合验证

/gm whitelist add 123456789
/gm blacklist add 111222333
/gm add 学生
/gm add /\d{11}/

综合使用白名单、黑名单和规则验证:

  • 白名单用户直接通过
  • 黑名单用户直接拒绝
  • 其他用户根据规则验证

🎨 消息样式

插件的所有输出消息都经过精心设计,包含:

  • ✅ 成功消息
  • ❌ 错误消息
  • ⚠️ 警告消息
  • 🔒 权限提示
  • 📋 列表展示
  • 🧪 测试结果

🔐 权限管理

配置管理员

在插件配置中设置 admin_list

["123456789", "987654321"]

只有列表中的用户才能执行以下操作:

  • 添加规则
  • 删除规则
  • 清空规则

查看/测试权限

所有用户都可以:

  • 查看规则列表
  • 测试规则匹配

📝 数据存储

插件使用 AstrBot 的 KV 存储功能,每个群的数据独立存储:

规则数据

  • 存储键格式: rules_{group_id}
  • 数据结构:
[
  {
    "type": "keyword",
    "content": "学生",
    "created_by": "123456789",
    "created_at": 1234567890
  },
  {
    "type": "regex",
    "content": "\\d{11}",
    "created_by": "123456789",
    "created_at": 1234567890
  }
]

白名单数据

  • 存储键格式: whitelist_{group_id}
  • 数据结构:
["123456789", "987654321"]

黑名单数据

  • 存储键格式: blacklist_{group_id}
  • 数据结构:
["111222333", "444555666"]

验证流程

  1. 首先检查黑名单,如果用户在黑名单中,直接拒绝
  2. 然后检查白名单,如果用户在白名单中,直接通过
  3. 如果没有规则,使用默认模式
  4. 检查规则匹配,至少匹配一条规则则通过

🐛 故障排除

问题: 正则表达式不生效

  • 确保正则表达式使用 // 包裹
  • 确保正则表达式语法正确
  • 使用 /gm test 测试正则表达式

问题: 无法添加规则

  • 检查是否在群聊中发送指令
  • 检查是否为管理员(如果配置了管理员列表)
  • 查看错误消息了解具体原因

问题: 规则匹配不准确

  • 关键词支持部分匹配,可能匹配到不相关的内容
  • 使用正则表达式进行精确匹配
  • 使用 /gm test 测试规则效果

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📄 许可证

本项目采用 AGPL-v3 许可证。

👨‍💻 开发者

🙏 致谢

感谢 AstrBot 提供的强大插件框架! ##作者的插件群 1079297679

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

Generated from Soulter/helloworld