66
77<div align =" center " >
88
9- ## ✨ * 基于 Nonebot2 的 QQ 详细信息查询插件 * ✨
9+ ## ✨ * 基于 NoneBot2 的 QQ 用户信息查询插件 * ✨
1010
1111<a href =" ./LICENSE " >
1212 <img src="https://img.shields.io/github/license/006lp/nonebot-plugin-qqdetail.svg" alt="license">
2525
2626## 📖 介绍
2727
28- 一个简单的 NoneBot2 插件,允许机器人通过 QQ 号或 @用户 查询 QQ 用户的公开详细信息(如昵称 、头像、QID、 等级、IP归属地等)。数据来源于第三方 API 。
28+ 一个基于 NoneBot2 的插件,用于查询 QQ 用户的公开信息。通过 QQ 号或 @用户 方式获取用户资料,包括昵称 、头像、等级、生日、VIP 等信息。数据来源于 OneBot 协议提供的用户信息接口 。
2929
30- 仅支持 OneBot V11 协议。
30+ 目前仅支持 OneBot V11 协议。
31+
32+ ## 📁 项目结构
33+
34+ ```
35+ nonebot-plugin-qqdetail/
36+ ├── __init__.py # 插件入口,包含 PluginMetadata
37+ ├── config.py # 配置模型(使用 Pydantic v2)
38+ ├── matchers.py # 事件处理器(命令和通知)
39+ ├── utils.py # 工具函数和数据处理
40+ ├── draw.py # 图片生成逻辑
41+ ├── assets/ # 资源文件夹(需手动创建)
42+ │ ├── 可爱字体.ttf # 中文字体
43+ │ └── NotoColorEmoji.ttf # Emoji 字体
44+ ├── pyproject.toml # 项目配置
45+ ├── README.md # 使用文档
46+ ├── .env.example # 配置示例
47+ └── .gitignore # Git 忽略文件
48+ ```
3149
3250## 💿 安装
3351
3452<details open >
3553<summary >使用 nb-cli 安装</summary >
36- 在 NoneBot2 项目的根目录下打开命令行,输入以下指令即可安装
54+
55+ 在 NoneBot2 项目的根目录下打开命令行,运行以下命令进行安装:
3756
3857``` bash
3958nb plugin install nonebot-plugin-qqdetail --upgrade
4059```
41- 如果需要使用 PyPI 镜像源(例如清华源):
60+
61+ 如需使用国内镜像源(如清华源)加速安装:
4262
4363``` bash
4464nb plugin install nonebot-plugin-qqdetail --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple
@@ -47,7 +67,8 @@ nb plugin install nonebot-plugin-qqdetail --upgrade -i https://pypi.tuna.tsinghu
4767
4868<details >
4969<summary >使用包管理器安装</summary >
50- 在 NoneBot2 项目的插件目录下(或项目根目录,取决于你的项目结构和包管理器),打开命令行,根据你使用的包管理器,输入相应的安装命令:
70+
71+ 在 NoneBot2 项目的根目录下(或插件目录,取决于项目结构),打开命令行,使用你偏好的包管理器运行相应命令:
5172
5273<details open >
5374<summary >uv</summary >
@@ -104,58 +125,122 @@ plugins = ["nonebot_plugin_qqdetail"] # 确保你的插件代码在 nonebot_plug
104125
105126## ⚙️ 配置
106127
107- 插件支持通过 ` .env ` 文件进行配置。
108-
109- | 配置项 | 必填 | 默认值 | 说明 |
110- | :------------------- | :---: | :----: | :------------------------------------------------------------------------ |
111- | ` QQDETAIL_WHITELIST ` | 否 | ` [] ` | QQ 号码列表。白名单内的用户,只有超级用户才能查询其信息(自己查自己除外) |
128+ 插件通过 ` .env ` 文件进行配置,所有配置项均为可选,默认为推荐设置。
129+
130+ ### 基础配置
131+
132+ | 配置项 | 必填 | 默认值 | 说明 |
133+ | :------------------------ | :---: | :-----: | :---------------------------------------- |
134+ | ` QQDETAIL_ONLY_ADMIN ` | 否 | ` false ` | 仅管理员可用(默认:false) |
135+ | ` QQDETAIL_BOX_BLACKLIST ` | 否 | ` [] ` | 黑名单用户列表(这些用户的资料无法被查询) |
136+ | ` QQDETAIL_WHITELIST_GROUPS ` | 否 | ` [] ` | 群聊白名单(仅这些群可使用命令,留空则所有群都可用) |
137+
138+ ### 自动获取配置
139+
140+ | 配置项 | 必填 | 默认值 | 说明 |
141+ | :----------------------------------- | :---: | :-----: | :---------------------------------------- |
142+ | ` QQDETAIL_AUTO_BOX_CONFIG__INCREASE_BOX ` | 否 | ` false ` | 自动获取新入群用户信息 |
143+ | ` QQDETAIL_AUTO_BOX_CONFIG__DECREASE_BOX ` | 否 | ` false ` | 自动获取退群用户信息 |
144+ | ` QQDETAIL_AUTO_BOX_CONFIG__WHITE_GROUPS ` | 否 | ` [] ` | 自动获取功能的群聊白名单(留空则所有群都启用) |
145+
146+ ### 速率限制配置
147+
148+ | 配置项 | 必填 | 默认值 | 说明 |
149+ | :--------------------------------------- | :---: | :----: | :---------------------------------------- |
150+ | ` QQDETAIL_RATE_LIMIT_CONFIG__TIME ` | 否 | ` 0 ` | 速率限制时间(分钟),0表示不限制 |
151+ | ` QQDETAIL_RATE_LIMIT_CONFIG__WHITE_GROUPS ` | 否 | ` [] ` | 速率限制白名单群聊(这些群不受速率限制) |
152+ | ` QQDETAIL_RATE_LIMIT_CONFIG__WHITE_USERS ` | 否 | ` [] ` | 速率限制白名单用户(这些用户不受速率限制) |
153+
154+ ### 显示配置
155+
156+ 你可以精细控制要显示的用户信息字段(默认为全部显示):
157+
158+ | 分类 | 配置项 | 说明 |
159+ | :------- | :----------------------------------------------- | :----------- |
160+ | ** 基本信息** | ` QQDETAIL_DISPLAY_CONFIG__CARD ` | 群昵称 |
161+ | | ` QQDETAIL_DISPLAY_CONFIG__TITLE ` | 群头衔 |
162+ | | ` QQDETAIL_DISPLAY_CONFIG__SEX ` | 性别 |
163+ | | ` QQDETAIL_DISPLAY_CONFIG__AGE ` | 年龄 |
164+ | ** 生日相关** | ` QQDETAIL_DISPLAY_CONFIG__BIRTHDAY_CONFIG__ENABLE ` | 生日 |
165+ | | ` QQDETAIL_DISPLAY_CONFIG__BIRTHDAY_CONFIG__CONSTELLATION ` | 星座 |
166+ | | ` QQDETAIL_DISPLAY_CONFIG__BIRTHDAY_CONFIG__ZODIAC ` | 生肖 |
167+ | ** 联系信息** | ` QQDETAIL_DISPLAY_CONFIG__PHONE_NUM ` | 手机号码 |
168+ | | ` QQDETAIL_DISPLAY_CONFIG__EMAIL ` | 邮箱 |
169+ | | ` QQDETAIL_DISPLAY_CONFIG__POST_CODE ` | 邮编 |
170+ | ** 地理信息** | ` QQDETAIL_DISPLAY_CONFIG__HOME_TOWN ` | 家乡 |
171+ | | ` QQDETAIL_DISPLAY_CONFIG__ADDRESS ` | 现居地 |
172+ | ** 其他信息** | ` QQDETAIL_DISPLAY_CONFIG__BLOOD_TYPE ` | 血型 |
173+ | | ` QQDETAIL_DISPLAY_CONFIG__CAREER ` | 职业 |
174+ | | ` QQDETAIL_DISPLAY_CONFIG__REMARK ` | 备注 |
175+ | | ` QQDETAIL_DISPLAY_CONFIG__LABELS ` | 标签 |
176+ | | ` QQDETAIL_DISPLAY_CONFIG__UNFRIENDLY ` | 风险账号标记 |
177+ | ** VIP 信息** | ` QQDETAIL_DISPLAY_CONFIG__VIP_CONFIG__ENABLE ` | VIP |
178+ | | ` QQDETAIL_DISPLAY_CONFIG__VIP_CONFIG__YEARS_VIP ` | 年VIP |
179+ | | ` QQDETAIL_DISPLAY_CONFIG__VIP_CONFIG__VIP_LEVEL ` | VIP等级 |
180+ | ** 活动信息** | ` QQDETAIL_DISPLAY_CONFIG__LOGIN_DAYS ` | 连续登录天数 |
181+ | | ` QQDETAIL_DISPLAY_CONFIG__LEVEL ` | 群等级 |
182+ | | ` QQDETAIL_DISPLAY_CONFIG__JOIN_TIME ` | 加群时间 |
183+ | ** 个性签名** | ` QQDETAIL_DISPLAY_CONFIG__LONG_NICK ` | 个性签名 |
112184
113185** ` .env ` 文件配置示例:**
114186
115187``` env
116- # QQDetail 插件配置
117- # 白名单内的 QQ 号,只有 Superuser 可以查询 (除了用户自己查自己)
118- # 值需要是有效的 JSON 列表字符串,例如: '["10001", "10002"]'
119- QQDETAIL_WHITELIST='["12345678", "87654321"]'
188+ # 基础配置
189+ QQDETAIL_ONLY_ADMIN=false
190+ QQDETAIL_BOX_BLACKLIST=["123456789", "987654321"]
191+ QQDETAIL_WHITELIST_GROUPS=["123456789"]
192+
193+ # 自动获取配置
194+ QQDETAIL_AUTO_BOX_CONFIG__INCREASE_BOX=false
195+ QQDETAIL_AUTO_BOX_CONFIG__DECREASE_BOX=false
196+ QQDETAIL_AUTO_BOX_CONFIG__WHITE_GROUPS=["123456789"]
197+
198+ # 速率限制配置
199+ QQDETAIL_RATE_LIMIT_CONFIG__TIME=5
200+ QQDETAIL_RATE_LIMIT_CONFIG__WHITE_GROUPS=["123456789"]
201+ QQDETAIL_RATE_LIMIT_CONFIG__WHITE_USERS=["123456789"]
202+
203+ # 显示配置(关闭手机号显示以保护隐私)
204+ QQDETAIL_DISPLAY_CONFIG__PHONE_NUM=false
120205```
121206
122- ** 注意:** ` .env ` 文件中的列表通常需要以 JSON 字符串的形式提供。
207+ ** 注意:** ` .env ` 具体示例参见 ` .env.example ` 。另外, 文件中的列表通常需要以 JSON 字符串的形式提供。
123208
124209## 🎉 使用
125210
126211### 指令表
127212
128213| 指令 | 别名 | 权限 | 需要@ | 范围 | 说明 |
129214| :------------------------------ | :----: | :---: | :---: | :-------: | :------------------------------------------------------------------------------ |
130- | ` /detail <QQ号 或 @用户 或 无> ` | ` info ` | 群员 | 可选 | 群聊/私聊 | 查询目标QQ用户的详细信息。参数可以是5-11位QQ号,@提及用户 ,或不带参数查询自己。 |
215+ | ` /detail <QQ号 或 @用户 或 无> ` | ` info ` | 群员 | 可选 | 群聊/私聊 | 查询目标 QQ 用户的详细信息。支持 QQ 号、@用户 ,或不带参数查询自己。 |
131216
132- ### 说明
217+ ### 使用说明
133218
134- * ** ` <QQ号> ` ** : 必须是 5 到 11 位的纯数字。
135- * ** ` @用户 ` ** : 在群聊中可以直接 @ 群成员。
136- * ** 无参数** : 如果直接发送 ` /detail ` 或 ` /info ` ,则查询发送者本人的信息。
137- * ** 数据来源** : 本插件使用 ` https://api.yyy001.com/ ` 提供的公开接口查询信息,结果的准确性和可用性取决于该 API。
138- * ** 白名单 ** : 如果配置了 ` QQDETAIL_WHITELIST ` ,则列表中的 QQ 号只有超级用户 ( ` SUPERUSERS ` ) 可以查询,除非用户是自己查询自己。
219+ * ** ` <QQ号> ` ** : 输入 5-11 位的有效 QQ 号码
220+ * ** ` @用户 ` ** : 在群聊中直接 @ 指定的群成员
221+ * ** 无参数** : 直接发送指令查询发送者本人的信息
222+ * ** 数据来源** : 基于 OneBot 协议获取用户信息,准确性取决于连接的 OneBot 实现
223+ * ** 权限控制 ** : 支持多种权限控制,如管理员专用、用户黑名单等
139224
140225### 🎨 返回示例
141226
142- * 查询成功示例: *
227+ ** 查询成功示例: * *
143228```
144- [图片:用户头像 ]
145- 查询对象 :123456789
229+ [图片:用户头像和彩色文字 ]
230+ QQ号 :123456789
146231昵称:示例昵称
147- QID:example_qid
148232性别:男
149233年龄:20
150- 等级:Lv.50
151- VIP等级:VIP7
152- 注册时间:2010-01-01
234+ 生日:05-15
235+ 星座:金牛座
236+ 生肖:龙
237+ 现居:广东-深圳
238+ QQ等级:50级
239+ 注册时间:2010年
153240签名:这是一个示例签名。
154- IP城市:广东 深圳
155- ......
156241```
157242
158- * 格式错误示例: *
243+ ** 格式错误示例: * *
159244```
160245命令格式错误、QQ号无效或包含多余参数。
161246请使用:
@@ -164,23 +249,34 @@ IP城市:广东 深圳
164249/detail (查询自己)
165250```
166251
167- * 查询失败示例: *
252+ ** 查询失败示例: * *
168253```
169- 获取QQ信息失败 (UID: 123456789)。
170- 原因:API请求失败: 404
254+ 获取 QQ 信息失败 (UID: 123456789)。
255+ 原因:用户信息获取失败
171256```
172257
173- ## ⚠️ 使用警告
258+ ## ⚠️ 重要提醒
259+
260+ * ** 学习交流用途** :本插件仅供学习和交流使用,请勿用于任何非法目的
261+ * ** 隐私保护** :查询用户信息时请尊重他人隐私,确保使用符合相关法律法规
262+ * ** 免责声明** :用户需对自身使用行为负责,开发者不对使用本插件产生的任何后果承担责任
263+
264+ ## 📄 许可证
265+
266+ 本项目采用 [ AGPL-3.0] ( ./LICENSE ) (GNU Affero General Public License v3.0) 开源许可证。
267+
268+ ### AGPL-3.0 许可证说明
174269
175- * ** 仅供学习交流使用!** 请勿用于非法用途。
176- * ** 尊重隐私!** 查询他人信息可能涉及隐私,请确保你的使用符合相关法律法规和平台规定。
177- * ** 数据准确性!** 插件依赖第三方 API,无法保证信息的绝对准确性和实时性。
178- * 用户应对自己的使用行为负责,开发者不承担任何因使用此插件造成的直接或间接责任。
270+ AGPL-3.0 是 GNU 自由软件基金会发布的开源许可证,特别适用于网络应用。其主要特点包括:
179271
180- ## 📃 许可证
272+ * ** 网络服务条款** :如果您修改本软件并通过网络提供服务,必须公开修改后的完整源代码
273+ * ** Copyleft 特性** :任何基于本项目的衍生作品必须采用相同的许可证
274+ * ** 用户自由保护** :确保用户在使用网络服务时享有修改和再分发的自由
181275
182- 本项目采用 [ AGPL-3.0 ] ( ./LICENSE ) 许可证 。
276+ 有关许可证的完整条款,请查看 [ LICENSE ] ( ./LICENSE ) 文件或访问 [ GNU 官网 ] ( https://www.gnu.org/licenses/agpl-3.0.html ) 。
183277
184278## 🙏 致谢
185279
186- * ** API 提供方** : [ https://api.yyy001.com/ ] ( https://api.yyy001.com/ )
280+ * ** NoneBot2 社区** :提供了优秀的机器人开发框架
281+ * ** OneBot 协议** :提供了标准化的机器人通信协议
282+ * ** AstrbotPlugin-ProfileSearch** :本插件参考了其设计思路
0 commit comments