Skip to main content

nonebot2 plugin for group administration

Project description

nonebot

你的star是我的动力

(不)简易群管

_✨ NoneBot2 (有点不)简易群管✨ _

踢 改 禁.......
欢迎 ISSUES PR

nonebot_plugin_admin

nonebot_plugin_admin 是一个基于 NoneBot2 的群管理插件集合,当前包含基础群管、入群审批、内容审核、统计分析、广播、事件提醒、成员清理等功能。

当前 main-check 分支正在做结构整理与重构优化,目标是先稳定现有能力,再逐步清理历史耦合与文档遗留问题。现阶段目录结构和部分实现已经完成分域拆分,根目录说明文档也已按当前代码状态更新。

当前能力

  • 基础群管:禁言、解禁、改名片、踢人、拉黑、管理员增减、头衔、撤回、精华消息
  • 入群审批:审批词条、拒绝词条、分群管理员、手动处理请求、AI 广告拦截
  • 内容审核:违禁词检查、图片审核
  • 统计分析:消息记录、发言排行、群词云、停用词、早晚安群消息
  • 广播:广播预览、二次确认、排除群维护
  • 事件提醒:防撤回、事件通知
  • 成员清理:规则筛选、清理锁
  • Dashboard:Web 管理面板、API 接口、操作日志

安装

pip install nonebot-plugin-admin

或使用 nb(推荐):

nb plugin install nonebot-plugin-admin

导入

nb 命令下载的不用手动导入

pip下载的话,在 bot.py 中加载插件:

nonebot.load_plugin("nonebot_plugin_admin")

或者在pyproject.toml中的plugins = 追加:

plugins = [ xxx, xxx, "nonebot_plugin_admin"]

推荐 Python 3.9 及以上版本。

依赖说明

依赖会在安装插件时自动安装,如果你是从仓库下载的插件,则需要:

pip install -r requirements.txt

配置

以下配置写入 .env.env.prod 等 NoneBot 配置文件。 配置示例如下或: ./.env.example

# nonebot_plugin_admin 配置示例
# 腾讯云图片安全配置:tenid、tenkeys (当初用这个是因为送额度,很久没研究了,目前不建议使用,可自行实现相关功能)
# 腾讯云图片安全api(当初用这个是因为送额度,很久没研究了,目前不建议使用,可自行实现相关功能)
tenid="xxxxxx"
tenkeys="xxxxxx"

# 是否开启禁言等操作的成功提示【历史遗留功能,应该是不开启的话踢人/禁言等成功没有QQ消息提示】
callback_notice=true # 如果不想开启设置成 false 或者不添加此配置项【默认关闭】

ban_rand_time_min=60 # 随机禁言最短时间,单位秒
ban_rand_time_max=2591999 # 随机禁言最长时间,单位秒

#↓↓↓↓↓↓推荐使用↓↓↓↓↓↓
ai_verify_api_key=sk-xxxxxxxxxxxxxxxx # AI 加群审核 API Key
ai_verify_base_url=https://api.deepseek.com # AI 加群审核接口地址
ai_verify_model=deepseek-chat # AI 加群审核模型名称
ai_verify_proxy= # AI 加群审核单独代理地址
ai_verify_use_proxy=true # 是否允许 AI 加群审核使用代理

#↓↓↓↓↓↓推荐使用↓↓↓↓↓↓
statistics_orm_enabled=true # 是否启用 ORM 存储
statistics_orm_capture_message_content=true # 是否保存消息原文
tortoise_orm_db_url=sqlite:///data/admin3-statistics.db # 数据库连接地址

#↓↓↓↓↓↓推荐使用↓↓↓↓↓↓
dashboard_enabled=true # 是否启用后台 API
dashboard_frontend_enabled=true # 是否启用后台前端页面
dashboard_base_path=/admin-dashboard # 后台挂载路径
dashboard_api_token=please-change-me # 后台 API Token
dashboard_title=群管后台 # 后台页面标题
dashboard_log_file_path=data/admin-dashboard.log # Bot日志文件路径,如果你想让群管后台也显示bot的日志(不配置则只显示本插件自己的日志)

#↓↓↓↓↓↓跨域配置,一般不用配置,除非你把插件中的网页提出来单独部署↓↓↓↓↓↓
dashboard_cors_allow_origins=http://xxx.xxx.xxx.xxx:xxx,http://localhost:xxxx # 允许跨域来源,逗号分隔
dashboard_cors_allow_credentials=false # CORS 是否允许携带凭证
#↑↑↑↑↑↑跨域配置,一般不用配置,除非你把插件中的网页提出来单独部署↑↑↑↑↑↑

#↓↓↓↓↓↓古早用户PR,本人未曾使用过,自行验证↓↓↓↓↓↓
send_group_id = ["xxx","xxx"]    # 必填 群号
send_switch_morning = False                      # 选填 True/False 默认开启 早上消息推送是否开启
send_switch_night = False                        # 选填 True/False 默认开启 晚上消息推送是否开启
send_mode = 1                 # 选填 默认模式2 模式1发送自定义句子,模式2随机调用一句
send_sentence_morning = ["句子1","句子2","..."]    # 如果是模式1 此项必填,早上随机发送该字段中的一句
send_sentence_night = ["句子1","句子2","..."]     # 如果是模式1 此项必填,晚上随机发送该字段中的一句
send_time_moring = "8 0"    # 选填 早上发送时间默认为7:00
send_time_night = "23 0"    # 选填 晚上发送时间默认为22:00     

基础配置

配置项 必填 默认值 说明
tenid xxxxxx 腾讯云 SecretId(图片安全审核)
tenkeys xxxxxx 腾讯云 SecretKey(图片安全审核)
callback_notice true 是否发送操作成功提示
ban_rand_time_min 60 随机禁言最短时间(秒)
ban_rand_time_max 2591999 随机禁言最长时间(秒)

⚠️ 腾讯云图片安全审核为古早版本加入的功能,目前不太推荐使用。如需图片审核能力,建议评估其他方案。

AI 入群审核(推荐使用)

配置项 必填 默认值 推荐启用? 说明
ai_verify_api_key (空) 推荐 OpenAI 兼容接口 API Key
ai_verify_base_url (空) 推荐 OpenAI 兼容接口 Base URL
ai_verify_model (空) 推荐 使用的模型名称
ai_verify_proxy (空)
AI 审核请求代理地址
ai_verify_use_proxy true
是否启用代理

说明:

  • ai_verify_use_proxy=false 时,AI 审核请求不会走代理
  • ai_verify_proxy 仅影响 AI 审核请求,不影响插件内其他网络请求
  • 未配置 ai_verify_api_key 时,AI 审核功能会自动退化为不可用状态
  • 会拒绝“请通过一下,谢谢!”这类及机器人加群

早晚安群消息

⚠️ 此功能由用户 PR 加入,完成度一般,无需求可不用。

配置项 必填 默认值 说明
send_group_id (空) 推送目标群号,JSON 数组或逗号分隔
send_switch_morning true 是否启用早安推送
send_switch_night true 是否启用晚安推送
send_mode 2 推送模式:1=自定义句子,2=随机一言
send_sentence_morning (空) 早安自定义句子列表(mode=1 时生效)
send_sentence_night (空) 晚安自定义句子列表(mode=1 时生效)
send_time_morning "7 0" 早安推送时间,格式 "时 分"
send_time_night "22 0" 晚安推送时间,格式 "时 分"

说明:

  • send_mode=1 时,使用自定义句子列表
  • send_mode=2 时,使用插件内置随机句子逻辑(调用一言 API)
  • send_group_id 支持 JSON 数组,也支持逗号分隔字符串

统计 ORM(推荐使用)

配置项 必填 默认值 推荐使用? 说明
statistics_orm_enabled false 推荐 是否启用统计 ORM 存储,填写 tortoise_orm_db_url 后自动开启
statistics_orm_capture_message_content true 推荐 ORM 启用时是否记录消息原文
tortoise_orm_db_url (空)
数据库连接 URL

说明:

  • 填写 tortoise_orm_db_urlstatistics_orm_enabled 会自动设为 true,无需手动开启
  • 消息记录会同时写入数据库
  • 启用后插件会在初始化时自动检测历史文件数据并迁移至数据库,迁移记录通过数据库中的 MD5 去重,避免重复导入

tortoise_orm_db_url 填写示例

使用 SQLite 时,URL 格式为 sqlite:/// 加数据库文件路径:

Linux 示例

tortoise_orm_db_url=sqlite:////home/bot/data/admin3-statistics.db

四个 /sqlite:// 是协议前缀,/home/bot/data/admin3-statistics.db 是绝对路径。

Windows 示例

tortoise_orm_db_url=sqlite:///C:/bot/data/admin3-statistics.db

三个 /sqlite:// 是协议前缀,C:/bot/data/admin3-statistics.db 是 Windows 绝对路径(盘符后用 / 代替 \)。

相对路径示例(相对于 NoneBot 工作目录):

tortoise_orm_db_url=sqlite:///data/admin3-statistics.db

Dashboard(w)

配置项 必填 默认值 说明
dashboard_enabled false 是否启用 Dashboard API
dashboard_frontend_enabled false 是否提供前端入口
dashboard_base_path /admin-dashboard Dashboard 挂载路径
dashboard_api_token (空) API 鉴权 Token,非空时受保护接口需 X-Admin-Token
dashboard_title Admin Dashboard Dashboard 页面标题
dashboard_cors_allow_origins (空) CORS 允许的来源,JSON 数组或逗号分隔
dashboard_cors_allow_credentials false CORS 是否允许携带凭证
dashboard_log_file_path (空) Dashboard 日志文件路径

说明:

  • dashboard_enabled=true 后会挂载 dashboard API
  • dashboard_frontend_enabled=true 后会同时提供前端入口
  • admin-web/dist 存在,插件会优先提供 admin-web 构建产物
  • dist 不存在,插件会回退到仓库内保留的最小前端页面

命令概览

以下为当前版本的高层命令分类,详细矩阵建议查看 docs/README.md

初始化

  • 群管初始化

基础群管

  • / / / /
  • 管理员+ / 管理员-
  • 头衔 / 删头衔
  • 撤回
  • 加精 / 取消精华

入群审批

  • 查看词条 / 词条+ / 词条- / 词条拒绝
  • 所有词条 / 指定词条+ / 指定词条-
  • 分管 / 分管+ / 分管- / 所有分管 / 接收
  • 请求同意xxx / 请求拒绝xxx
  • ai拒绝开 / ai拒绝关 / ai拒绝prompt

关于分管:分管(副管理员)是本插件定义的角色,通过 分管+ 命令由群管指定。分管不是 OneBot 官方管理员,但可以执行以下操作:禁言、解禁、全员禁言、改名、踢人、拉黑、加精、取消精华、撤回。分管不能设置管理员/取消管理员/设置头衔。

词条审核与 AI 审核的区别

对比项 词条审核 AI 审核
触发方式 用户验证消息包含词条时自动同意 AI 判断验证消息是否为广告/人机
判断逻辑 精确字符串匹配(词条在消息中即通过) AI 语义理解,可识别变体和通用话术
拒绝能力 支持(词条拒绝 设置黑名单,匹配则拒绝) 支持(AI 判定为广告直接拒绝)
自定义规则 每群可设置不同的词条 每群可设置不同的自定义 prompt
优先级 先执行词条审核,再执行 AI 审核 词条审核通过后才进入 AI 审核
适用场景 固定格式验证(如"答案:xxx") 开放式验证、防广告机器人

两者可以同时启用,互不冲突。词条审核优先处理,未命中词条的请求才会进入 AI 审核。

AI 审核三级判断(设置自定义 prompt 后生效):

AI 返回 含义 处理方式
True 广告/人机 直接拒绝
False 看起来像真人但不符合条件 放行给管理员人工处理
Agree 确定是真人且符合条件 机器人直接同意入群,并在群内通知

未设置自定义 prompt 时,AI 仅返回 True/False(二级判断,行为不变)。

自定义 prompt 模板

通过 ai拒绝prompt 设置自定义规则后,AI 可根据规则直接同意符合条件的用户入群。模板示例:

ai拒绝prompt 本群的验证问题为"从哪里知道的本群?"如果用户的回答是一些社交平台,比如b站、bilibili、抖音等,或者包含xxx、xxx关键字时,则判定为直接同意。

说明:你可以强调某些条件让 AI 直接同意入群。注意放行直接同意是两种不同的处理——放行指放行给管理员处理,直接同意指由机器人直接同意入群。

统计分析

  • 记录本群 / 停止记录本群
  • 群词云 / 更新mask
  • 今日榜首 / 今日发言排行 / 昨日发言排行
  • 排行 / 发言数 / 今日发言数

广播

  • 广播
  • 广播排除
  • 群列表
  • 排除列表
  • 广播帮助

说明:广播现在会先生成预览,只有再次确认后才会真正发送。

事件提醒

  • 事件通知
  • 防撤回

成员清理

  • 成员清理
  • 清理解锁

Dashboard

  • 面板地址 / 获取面板 / dashboard地址

说明:仅超级管理员可用,返回 Dashboard 访问地址及 Token 提示。

  • 数据库地址

说明:仅超级管理员可用,返回 ORM 数据库连接地址。未配置 tortoise_orm_db_url 时会提示配置方法。

感谢贡献者们

balconyjh
BalconyJH
lakwsh
lakwsh
yzyyz1387
幼稚园园长
tom-snow
A lucky guy
NekoPunchs
NekoPunch!
Redmomn
脑袋里进花生了
deepsourcebot
DeepSource Bot

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nonebot_plugin_admin-1.0.1.tar.gz (2.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nonebot_plugin_admin-1.0.1-py3-none-any.whl (2.5 MB view details)

Uploaded Python 3

File details

Details for the file nonebot_plugin_admin-1.0.1.tar.gz.

File metadata

  • Download URL: nonebot_plugin_admin-1.0.1.tar.gz
  • Upload date:
  • Size: 2.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for nonebot_plugin_admin-1.0.1.tar.gz
Algorithm Hash digest
SHA256 2407ed9df89ab0034d81ebe2a212e12da4db28e10b62f2665a4fb1e68e9a4ef0
MD5 104fa4f77654ad7f968223652e92adaa
BLAKE2b-256 f050673c0c0c61f9bea9ee21173926c6da89527d5b26db87f12678943368c5ce

See more details on using hashes here.

File details

Details for the file nonebot_plugin_admin-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for nonebot_plugin_admin-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f9aeb2051f5e98b4cb53acc4cfe862882a014efb3f03ab08005395f58fca777b
MD5 5ddd4d865d4ca79b99a2d22e7292923c
BLAKE2b-256 a023950e8024e54ecad7eb628a38aaf58f73f531f9a9e3b92e7c9375c6505403

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page