# nonebot-plugin-dst-qq
[](https://pypi.org/project/nonebot-plugin-dst-qq/)
[](https://pypi.org/pypi/nonebot-plugin-dst-qq/)
[](https://pypi.org/project/nonebot-plugin-dst-qq/)
[](https://nonebot.dev/)
🎮 功能丰富的饥荒管理平台 (DMP) QQ 机器人插件,基于 NoneBot2 和 Alconna 构建,提供服务器管理、消息互通、物品百科等全方位功能。
## 🚀 快速开始
**新用户?** 查看 **[完整安装指南 (INSTALLATION.md)](INSTALLATION.md)** 立即体验!包含从零开始的详细教程和故障排除。
## ✨ 功能特性
### 🎮 核心功能
- **🏠 房间信息** - 综合显示服务器状态、世界信息、玩家列表
- **🌍 世界管理** - 世界状态监控、备份管理、回档重置
- **👥 玩家管理** - 在线玩家列表、管理员列表、封禁白名单
- **💻 系统监控** - CPU/内存使用率、服务器负载状态
- **🔗 服务器浏览** - 官方服务器列表查询和筛选
### 💬 消息互通
- **双向通信** - QQ消息与游戏内消息实时双向互通
- **智能路由** - 支持私聊/群聊模式,自动消息过滤
- **会话管理** - 多用户独立会话,自动超时清理
- **消息去重** - 防止消息重复发送,优化用户体验
### 🔍 物品百科
- **智能搜索** - 支持中英文搜索,覆盖2863个饥荒物品(包含角色)
- **Wiki截图** - Selenium自动截图,精准捕获Wiki正文内容
- **分离截图** - 信息栏和正文内容分开截图,查看更清晰
- **自适应大小** - 智能计算截图尺寸,避免内容截断
- **快速响应** - 双层缓存系统,毫秒级查询速度
- **模糊匹配** - 支持模糊搜索和多结果选择
- **内容优化** - 自动隐藏导航栏、侧边栏等无关元素
### 🛠️ 管理功能
- **集群管理** - 动态集群切换和状态监控
- **缓存管理** - 智能缓存统计和清理功能
- **服务器浏览** - 查询DST官方服务器列表
- **配置管理** - 动态配置更新,热重载支持
- **调试工具** - 完整的调试和监控命令集
### ⚡ 性能优化
- **🧠 双层缓存** - 内存+文件缓存,减少70%重复请求
- **🗄️ 连接池** - 统一数据库连接管理,提升30%性能
- **📦 模块化** - 清晰架构设计,代码量减少33%
- **🔄 异步处理** - 全异步设计,支持高并发访问
## 📦 安装
### 使用 nb-cli 安装 (推荐)
```bash
nb plugin install nonebot-plugin-dst-qq
```
### 使用 pip 安装
```bash
pip install nonebot-plugin-dst-qq
```
### 使用 poetry 安装
```bash
poetry add nonebot-plugin-dst-qq
```
## ⚙️ 配置
### 1. 环境变量配置
在 `.env` 文件中添加:
```env
# OneBot V11 配置 (必需)
ONEBOT_WS_URLS=["ws://your-onebot-server:port"]
ONEBOT_ACCESS_TOKEN="your-access-token"
# 超级用户 (必需)
SUPERUSERS=["your-qq-number"]
# 调试模式 (可选)
DEBUG=true
LOG_LEVEL=DEBUG
```
### 2. DMP 配置文件
插件会自动在以下位置创建配置文件:
- `config/config/app_config.json` - 主配置文件
- `nonebot_plugin_dst_qq/app_config.template.json` - 配置模板
配置示例:
```json
{
"dmp_url": "http://your-dmp-server:port/v1",
"auth": {
"username": "your-username",
"password": "your-password"
},
"clusters": ["YourClusterName"],
"cache_settings": {
"enable_cache": true,
"cache_ttl": 300
}
}
```
## 🎯 命令使用
### 基础命令
| 命令 | 别名 | 功能 | 示例 |
|------|------|------|------|
| `/房间` | `room`, `状态` | 综合服务器信息 | `/房间` |
| `/世界` | `world`, `worlds` | 世界状态列表 | `/世界` |
| `/玩家` | `players`, `在线` | 在线玩家列表 | `/玩家` |
| `/系统` | `sys`, `system` | 系统状态信息 | `/系统` |
| `/查房 [<关键词>]` | `服务器列表`, `server_list` | 查询官方服务器 | `/查房 PVP` |
| `/集群状态` | `cluster`, `集群列表` | 查看集群信息 | `/集群状态` |
### 物品查询
| 命令 | 别名 | 功能 | 示例 |
|------|------|------|------|
| `/物品 <关键词>` | `查物品`, `item`, `wiki`, `查` | 物品Wiki截图查询 | `/查 大理石` |
| `/物品分离 <关键词>` | `分离物品`, `物品详情`, `详细物品` | 分离截图信息栏和正文 | `/物品分离 大理石` |
| `/搜索物品 <关键词>` | `search`, `搜物品` | 物品搜索列表 | `/搜索物品 石头` |
| `/物品统计` | `item_stats`, `物品数量` | 物品数据统计 | `/物品统计` |
| `/重载物品` | `reload_items` | 重载物品数据(管理员) | `/重载物品` |
### 消息互通
| 命令 | 别名 | 功能 | 示例 |
|------|------|------|------|
| `/消息互通` | `bridge`, `互通` | 开启消息互通 | `/消息互通` |
| `/关闭互通` | `stop_bridge` | 关闭消息互通 | `/关闭互通` |
| `/互通状态` | `bridge_status` | 查看互通状态 | `/互通状态` |
## 📝 功能示例
### Wiki截图查询
输入:
```
/物品 大理石
```
机器人会:
1. 🔍 搜索匹配的物品
2. 🖼️ 自动截取Wiki页面正文内容
3. 📷 返回高质量截图图片
### 服务器浏览
输入:
```
/查房 PVP
```
显示结果:
```
🏠 找到5个服务器 (搜索: PVP)
1. [PVP] Klei Official Server
模式: Survival | 玩家: 12/16 | 地区: 亚太
季节: 夏天 15天 | 密码: 无
2. [PVP Arena] Combat Zone
模式: Endless | 玩家: 8/20 | 地区: 美洲
季节: 秋天 3天 | 密码: 无
...
```
### 集群管理
输入:
```
/集群状态
```
显示结果:
```
📊 集群状态概览
✅ 当前集群: Master
📊 可用集群: Master, Caves
🔍 最后检查: 2分钟前
集群详情:
• Master: 正常运行 | 5个世界
• Caves: 正常运行 | 2个世界
```
### 管理员命令
| 命令 | 功能 | 示例 |
|------|------|------|
| `/缓存状态` | 显示缓存统计信息 | `/缓存状态` |
| `/清理缓存` | 清空所有缓存 | `/清理缓存` |
| `/切换集群 <名称>` | 切换操作集群 | `/切换集群 Master` |
| `/重载配置` | 重新加载配置 | `/重载配置` |
### 调试命令
| 命令 | 功能 | 示例 |
|------|------|------|
| `/测试文字` | 测试消息发送 | `/测试文字` |
| `/调试信息` | 显示调试信息 | `/调试信息` |
| `/版本信息` | 显示版本信息 | `/版本信息` |
## 🏗️ 架构设计
### 模块化结构
```
nonebot_plugin_dst_qq/
├── __init__.py # 🚀 插件入口和生命周期管理
├── database/ # 🗄️ 数据库模块
│ ├── __init__.py # 统一接口和兼容层
│ ├── connection.py # 连接池管理器
│ └── models.py # 数据模型层
├── plugins/ # 🔌 核心插件
│ ├── dmp_api.py # DMP API集成
│ ├── dmp_advanced.py # DMP高级功能
│ └── message_bridge.py # 消息互通桥接
├── 命令模块/ # 🎯 命令处理器
│ ├── admin_commands.py # 管理员命令
│ ├── cluster_commands.py # 集群管理命令
│ ├── debug_commands.py # 调试命令
│ ├── item_commands.py # 物品查询命令
│ └── server_commands.py # 服务器命令
├── 核心组件/ # 🧠 核心功能组件
│ ├── simple_cache.py # 简化缓存系统
│ ├── message_utils.py # 消息工具
│ ├── server_browser.py # 服务器浏览器
│ ├── cluster_manager.py # 集群管理器
│ └── wiki_screenshot.py # Wiki截图系统
└── 工具模块/ # 🛠️ 通用工具
├── config.py # 配置管理
├── utils.py # 通用工具
├── scheduler.py # 任务调度
└── item_data.py # 物品数据
```
### 性能特性
- **🚀 异步优先**: 全异步设计,支持高并发
- **🧠 智能缓存**: LRU算法,内存+文件双层缓存
- **🔗 连接池**: 数据库连接复用,减少开销
- **📦 模块化**: 按需加载,降低内存占用
- **⚡ 优化算法**: 缓存命中率90%+,响应时间<100ms
## 🔧 高级配置
### 缓存配置
```json
{
"cache_settings": {
"enable_cache": true,
"memory_cache_size": 1000,
"file_cache_ttl": 3600,
"api_cache_ttl": 300
}
}
```
### 数据库配置
```json
{
"database_settings": {
"chat_history_days": 30,
"auto_cleanup": true,
"backup_enabled": true
}
}
```
### 消息互通配置
```json
{
"bridge_settings": {
"message_filter": true,
"max_message_length": 200,
"auto_reconnect": true,
"session_timeout": 1800
}
}
```
## 🐛 故障排除
### 常见问题
**1. 插件无法连接DMP服务器**
```bash
# 检查配置文件
cat config/config/app_config.json
# 测试网络连通性
curl -X GET "http://your-dmp-server:port/v1/auth/login"
```
**2. 消息互通不工作**
```bash
# 检查OneBot连接状态
# 确认超级用户配置正确
# 查看日志错误信息
```
**3. 物品查询失败**
```bash
# 重载物品数据
/重载物品
# 检查数据库文件
ls -la data/database/
```
### 日志位置
- NoneBot2日志: 控制台输出
- 插件日志: 使用 `LOG_LEVEL=DEBUG` 查看详细日志
- 数据库日志: `data/database/` 目录
## 🤝 贡献指南
欢迎贡献代码!请遵循以下步骤:
1. Fork 项目
2. 创建功能分支: `git checkout -b feature/amazing-feature`
3. 提交更改: `git commit -m 'Add amazing feature'`
4. 推送分支: `git push origin feature/amazing-feature`
5. 创建 Pull Request
### 开发环境
```bash
# 克隆项目
git clone https://github.com/uitok/nonebot-plugin-dst-qq.git
cd nonebot-plugin-dst-qq
# 安装依赖
poetry install
# 或
pip install -r requirements.txt
# 运行测试
pytest tests/
```
## 📋 版本历史
查看 [CHANGELOG.md](CHANGELOG.md) 了解详细更新历史。
### 最新版本 v0.4.5
- 🖼️ 全新Wiki截图系统,智能内容捕获
- 🔍 增强物品搜索功能,支持快速查询
- 🌐 新增服务器浏览功能,支持DST官方服务器列表
- 🗄️ 完善数据库连接池管理
- ⚡ 优化缓存系统,提升响应速度
- 📦 完整模块化架构,25个核心文件
## 📄 许可证
本项目采用 [MIT](LICENSE) 许可证。
## 🙏 致谢
- [NoneBot2](https://nonebot.dev/) - 优秀的Python异步机器人框架
- [Alconna](https://github.com/ArcletProject/Alconna) - 强大的命令解析器
- [OneBot](https://onebot.dev/) - 聊天机器人应用接口标准
## 📞 联系方式
- 作者: uitok
- 邮箱: ui_101@qq.com
- 项目地址: https://github.com/uitok/nonebot-plugin-dst-qq
- 问题反馈: https://github.com/uitok/nonebot-plugin-dst-qq/issues
---
如果这个项目对你有帮助,欢迎给一个 ⭐ Star!
Raw data
{
"_id": null,
"home_page": null,
"name": "nonebot-plugin-dst-qq",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.9",
"maintainer_email": null,
"keywords": "aiosqlite, alconna, beautifulsoup4, dmp, don't starve together, dst, htmlrender, message-exchange, nonebot, nonebot2, plugin, qq-bot, server-browser, wiki-screenshot, \u9965\u8352",
"author": null,
"author_email": "uitok <ui_101@qq.com>",
"download_url": "https://files.pythonhosted.org/packages/7f/6c/da2ff69a5e3f600250183841b6cef885b148895b77dc2efaec9e174fb642/nonebot_plugin_dst_qq-0.4.9.tar.gz",
"platform": null,
"description": "# nonebot-plugin-dst-qq\n\n[](https://pypi.org/project/nonebot-plugin-dst-qq/)\n[](https://pypi.org/pypi/nonebot-plugin-dst-qq/)\n[](https://pypi.org/project/nonebot-plugin-dst-qq/)\n[](https://nonebot.dev/)\n\n\ud83c\udfae \u529f\u80fd\u4e30\u5bcc\u7684\u9965\u8352\u7ba1\u7406\u5e73\u53f0 (DMP) QQ \u673a\u5668\u4eba\u63d2\u4ef6\uff0c\u57fa\u4e8e NoneBot2 \u548c Alconna \u6784\u5efa\uff0c\u63d0\u4f9b\u670d\u52a1\u5668\u7ba1\u7406\u3001\u6d88\u606f\u4e92\u901a\u3001\u7269\u54c1\u767e\u79d1\u7b49\u5168\u65b9\u4f4d\u529f\u80fd\u3002\n\n## \ud83d\ude80 \u5feb\u901f\u5f00\u59cb\n\n**\u65b0\u7528\u6237\uff1f** \u67e5\u770b **[\u5b8c\u6574\u5b89\u88c5\u6307\u5357 (INSTALLATION.md)](INSTALLATION.md)** \u7acb\u5373\u4f53\u9a8c\uff01\u5305\u542b\u4ece\u96f6\u5f00\u59cb\u7684\u8be6\u7ec6\u6559\u7a0b\u548c\u6545\u969c\u6392\u9664\u3002\n\n## \u2728 \u529f\u80fd\u7279\u6027\n\n### \ud83c\udfae \u6838\u5fc3\u529f\u80fd\n- **\ud83c\udfe0 \u623f\u95f4\u4fe1\u606f** - \u7efc\u5408\u663e\u793a\u670d\u52a1\u5668\u72b6\u6001\u3001\u4e16\u754c\u4fe1\u606f\u3001\u73a9\u5bb6\u5217\u8868\n- **\ud83c\udf0d \u4e16\u754c\u7ba1\u7406** - \u4e16\u754c\u72b6\u6001\u76d1\u63a7\u3001\u5907\u4efd\u7ba1\u7406\u3001\u56de\u6863\u91cd\u7f6e\n- **\ud83d\udc65 \u73a9\u5bb6\u7ba1\u7406** - \u5728\u7ebf\u73a9\u5bb6\u5217\u8868\u3001\u7ba1\u7406\u5458\u5217\u8868\u3001\u5c01\u7981\u767d\u540d\u5355\n- **\ud83d\udcbb \u7cfb\u7edf\u76d1\u63a7** - CPU/\u5185\u5b58\u4f7f\u7528\u7387\u3001\u670d\u52a1\u5668\u8d1f\u8f7d\u72b6\u6001\n- **\ud83d\udd17 \u670d\u52a1\u5668\u6d4f\u89c8** - \u5b98\u65b9\u670d\u52a1\u5668\u5217\u8868\u67e5\u8be2\u548c\u7b5b\u9009\n\n### \ud83d\udcac \u6d88\u606f\u4e92\u901a\n- **\u53cc\u5411\u901a\u4fe1** - QQ\u6d88\u606f\u4e0e\u6e38\u620f\u5185\u6d88\u606f\u5b9e\u65f6\u53cc\u5411\u4e92\u901a\n- **\u667a\u80fd\u8def\u7531** - \u652f\u6301\u79c1\u804a/\u7fa4\u804a\u6a21\u5f0f\uff0c\u81ea\u52a8\u6d88\u606f\u8fc7\u6ee4\n- **\u4f1a\u8bdd\u7ba1\u7406** - \u591a\u7528\u6237\u72ec\u7acb\u4f1a\u8bdd\uff0c\u81ea\u52a8\u8d85\u65f6\u6e05\u7406\n- **\u6d88\u606f\u53bb\u91cd** - \u9632\u6b62\u6d88\u606f\u91cd\u590d\u53d1\u9001\uff0c\u4f18\u5316\u7528\u6237\u4f53\u9a8c\n\n### \ud83d\udd0d \u7269\u54c1\u767e\u79d1 \n- **\u667a\u80fd\u641c\u7d22** - \u652f\u6301\u4e2d\u82f1\u6587\u641c\u7d22\uff0c\u8986\u76d62863\u4e2a\u9965\u8352\u7269\u54c1\uff08\u5305\u542b\u89d2\u8272\uff09\n- **Wiki\u622a\u56fe** - Selenium\u81ea\u52a8\u622a\u56fe\uff0c\u7cbe\u51c6\u6355\u83b7Wiki\u6b63\u6587\u5185\u5bb9\n- **\u5206\u79bb\u622a\u56fe** - \u4fe1\u606f\u680f\u548c\u6b63\u6587\u5185\u5bb9\u5206\u5f00\u622a\u56fe\uff0c\u67e5\u770b\u66f4\u6e05\u6670\n- **\u81ea\u9002\u5e94\u5927\u5c0f** - \u667a\u80fd\u8ba1\u7b97\u622a\u56fe\u5c3a\u5bf8\uff0c\u907f\u514d\u5185\u5bb9\u622a\u65ad\n- **\u5feb\u901f\u54cd\u5e94** - \u53cc\u5c42\u7f13\u5b58\u7cfb\u7edf\uff0c\u6beb\u79d2\u7ea7\u67e5\u8be2\u901f\u5ea6\n- **\u6a21\u7cca\u5339\u914d** - \u652f\u6301\u6a21\u7cca\u641c\u7d22\u548c\u591a\u7ed3\u679c\u9009\u62e9\n- **\u5185\u5bb9\u4f18\u5316** - \u81ea\u52a8\u9690\u85cf\u5bfc\u822a\u680f\u3001\u4fa7\u8fb9\u680f\u7b49\u65e0\u5173\u5143\u7d20\n\n### \ud83d\udee0\ufe0f \u7ba1\u7406\u529f\u80fd\n- **\u96c6\u7fa4\u7ba1\u7406** - \u52a8\u6001\u96c6\u7fa4\u5207\u6362\u548c\u72b6\u6001\u76d1\u63a7\n- **\u7f13\u5b58\u7ba1\u7406** - \u667a\u80fd\u7f13\u5b58\u7edf\u8ba1\u548c\u6e05\u7406\u529f\u80fd\n- **\u670d\u52a1\u5668\u6d4f\u89c8** - \u67e5\u8be2DST\u5b98\u65b9\u670d\u52a1\u5668\u5217\u8868\n- **\u914d\u7f6e\u7ba1\u7406** - \u52a8\u6001\u914d\u7f6e\u66f4\u65b0\uff0c\u70ed\u91cd\u8f7d\u652f\u6301\n- **\u8c03\u8bd5\u5de5\u5177** - \u5b8c\u6574\u7684\u8c03\u8bd5\u548c\u76d1\u63a7\u547d\u4ee4\u96c6\n\n### \u26a1 \u6027\u80fd\u4f18\u5316\n- **\ud83e\udde0 \u53cc\u5c42\u7f13\u5b58** - \u5185\u5b58+\u6587\u4ef6\u7f13\u5b58\uff0c\u51cf\u5c1170%\u91cd\u590d\u8bf7\u6c42\n- **\ud83d\uddc4\ufe0f \u8fde\u63a5\u6c60** - \u7edf\u4e00\u6570\u636e\u5e93\u8fde\u63a5\u7ba1\u7406\uff0c\u63d0\u534730%\u6027\u80fd\n- **\ud83d\udce6 \u6a21\u5757\u5316** - \u6e05\u6670\u67b6\u6784\u8bbe\u8ba1\uff0c\u4ee3\u7801\u91cf\u51cf\u5c1133%\n- **\ud83d\udd04 \u5f02\u6b65\u5904\u7406** - \u5168\u5f02\u6b65\u8bbe\u8ba1\uff0c\u652f\u6301\u9ad8\u5e76\u53d1\u8bbf\u95ee\n\n## \ud83d\udce6 \u5b89\u88c5\n\n### \u4f7f\u7528 nb-cli \u5b89\u88c5 (\u63a8\u8350)\n```bash\nnb plugin install nonebot-plugin-dst-qq\n```\n\n### \u4f7f\u7528 pip \u5b89\u88c5\n```bash\npip install nonebot-plugin-dst-qq\n```\n\n### \u4f7f\u7528 poetry \u5b89\u88c5\n```bash\npoetry add nonebot-plugin-dst-qq\n```\n\n## \u2699\ufe0f \u914d\u7f6e\n\n### 1. \u73af\u5883\u53d8\u91cf\u914d\u7f6e\n\u5728 `.env` \u6587\u4ef6\u4e2d\u6dfb\u52a0\uff1a\n```env\n# OneBot V11 \u914d\u7f6e (\u5fc5\u9700)\nONEBOT_WS_URLS=[\"ws://your-onebot-server:port\"]\nONEBOT_ACCESS_TOKEN=\"your-access-token\"\n\n# \u8d85\u7ea7\u7528\u6237 (\u5fc5\u9700)\nSUPERUSERS=[\"your-qq-number\"]\n\n# \u8c03\u8bd5\u6a21\u5f0f (\u53ef\u9009)\nDEBUG=true\nLOG_LEVEL=DEBUG\n```\n\n### 2. DMP \u914d\u7f6e\u6587\u4ef6\n\u63d2\u4ef6\u4f1a\u81ea\u52a8\u5728\u4ee5\u4e0b\u4f4d\u7f6e\u521b\u5efa\u914d\u7f6e\u6587\u4ef6\uff1a\n- `config/config/app_config.json` - \u4e3b\u914d\u7f6e\u6587\u4ef6\n- `nonebot_plugin_dst_qq/app_config.template.json` - \u914d\u7f6e\u6a21\u677f\n\n\u914d\u7f6e\u793a\u4f8b\uff1a\n```json\n{\n \"dmp_url\": \"http://your-dmp-server:port/v1\",\n \"auth\": {\n \"username\": \"your-username\",\n \"password\": \"your-password\"\n },\n \"clusters\": [\"YourClusterName\"],\n \"cache_settings\": {\n \"enable_cache\": true,\n \"cache_ttl\": 300\n }\n}\n```\n\n## \ud83c\udfaf \u547d\u4ee4\u4f7f\u7528\n\n### \u57fa\u7840\u547d\u4ee4\n| \u547d\u4ee4 | \u522b\u540d | \u529f\u80fd | \u793a\u4f8b |\n|------|------|------|------|\n| `/\u623f\u95f4` | `room`, `\u72b6\u6001` | \u7efc\u5408\u670d\u52a1\u5668\u4fe1\u606f | `/\u623f\u95f4` |\n| `/\u4e16\u754c` | `world`, `worlds` | \u4e16\u754c\u72b6\u6001\u5217\u8868 | `/\u4e16\u754c` |\n| `/\u73a9\u5bb6` | `players`, `\u5728\u7ebf` | \u5728\u7ebf\u73a9\u5bb6\u5217\u8868 | `/\u73a9\u5bb6` |\n| `/\u7cfb\u7edf` | `sys`, `system` | \u7cfb\u7edf\u72b6\u6001\u4fe1\u606f | `/\u7cfb\u7edf` |\n| `/\u67e5\u623f [<\u5173\u952e\u8bcd>]` | `\u670d\u52a1\u5668\u5217\u8868`, `server_list` | \u67e5\u8be2\u5b98\u65b9\u670d\u52a1\u5668 | `/\u67e5\u623f PVP` |\n| `/\u96c6\u7fa4\u72b6\u6001` | `cluster`, `\u96c6\u7fa4\u5217\u8868` | \u67e5\u770b\u96c6\u7fa4\u4fe1\u606f | `/\u96c6\u7fa4\u72b6\u6001` |\n\n### \u7269\u54c1\u67e5\u8be2\n| \u547d\u4ee4 | \u522b\u540d | \u529f\u80fd | \u793a\u4f8b |\n|------|------|------|------|\n| `/\u7269\u54c1 <\u5173\u952e\u8bcd>` | `\u67e5\u7269\u54c1`, `item`, `wiki`, `\u67e5` | \u7269\u54c1Wiki\u622a\u56fe\u67e5\u8be2 | `/\u67e5 \u5927\u7406\u77f3` |\n| `/\u7269\u54c1\u5206\u79bb <\u5173\u952e\u8bcd>` | `\u5206\u79bb\u7269\u54c1`, `\u7269\u54c1\u8be6\u60c5`, `\u8be6\u7ec6\u7269\u54c1` | \u5206\u79bb\u622a\u56fe\u4fe1\u606f\u680f\u548c\u6b63\u6587 | `/\u7269\u54c1\u5206\u79bb \u5927\u7406\u77f3` |\n| `/\u641c\u7d22\u7269\u54c1 <\u5173\u952e\u8bcd>` | `search`, `\u641c\u7269\u54c1` | \u7269\u54c1\u641c\u7d22\u5217\u8868 | `/\u641c\u7d22\u7269\u54c1 \u77f3\u5934` |\n| `/\u7269\u54c1\u7edf\u8ba1` | `item_stats`, `\u7269\u54c1\u6570\u91cf` | \u7269\u54c1\u6570\u636e\u7edf\u8ba1 | `/\u7269\u54c1\u7edf\u8ba1` |\n| `/\u91cd\u8f7d\u7269\u54c1` | `reload_items` | \u91cd\u8f7d\u7269\u54c1\u6570\u636e(\u7ba1\u7406\u5458) | `/\u91cd\u8f7d\u7269\u54c1` |\n\n### \u6d88\u606f\u4e92\u901a\n| \u547d\u4ee4 | \u522b\u540d | \u529f\u80fd | \u793a\u4f8b |\n|------|------|------|------|\n| `/\u6d88\u606f\u4e92\u901a` | `bridge`, `\u4e92\u901a` | \u5f00\u542f\u6d88\u606f\u4e92\u901a | `/\u6d88\u606f\u4e92\u901a` |\n| `/\u5173\u95ed\u4e92\u901a` | `stop_bridge` | \u5173\u95ed\u6d88\u606f\u4e92\u901a | `/\u5173\u95ed\u4e92\u901a` |\n| `/\u4e92\u901a\u72b6\u6001` | `bridge_status` | \u67e5\u770b\u4e92\u901a\u72b6\u6001 | `/\u4e92\u901a\u72b6\u6001` |\n\n## \ud83d\udcdd \u529f\u80fd\u793a\u4f8b\n\n### Wiki\u622a\u56fe\u67e5\u8be2\n\n\u8f93\u5165\uff1a\n```\n/\u7269\u54c1 \u5927\u7406\u77f3\n```\n\n\u673a\u5668\u4eba\u4f1a\uff1a\n1. \ud83d\udd0d \u641c\u7d22\u5339\u914d\u7684\u7269\u54c1\n2. \ud83d\uddbc\ufe0f \u81ea\u52a8\u622a\u53d6Wiki\u9875\u9762\u6b63\u6587\u5185\u5bb9\n3. \ud83d\udcf7 \u8fd4\u56de\u9ad8\u8d28\u91cf\u622a\u56fe\u56fe\u7247\n\n### \u670d\u52a1\u5668\u6d4f\u89c8\n\n\u8f93\u5165\uff1a\n```\n/\u67e5\u623f PVP\n```\n\n\u663e\u793a\u7ed3\u679c\uff1a\n```\n\ud83c\udfe0 \u627e\u52305\u4e2a\u670d\u52a1\u5668 (\u641c\u7d22: PVP)\n\n1. [PVP] Klei Official Server\n \u6a21\u5f0f: Survival | \u73a9\u5bb6: 12/16 | \u5730\u533a: \u4e9a\u592a\n \u5b63\u8282: \u590f\u5929 15\u5929 | \u5bc6\u7801: \u65e0\n\n2. [PVP Arena] Combat Zone \n \u6a21\u5f0f: Endless | \u73a9\u5bb6: 8/20 | \u5730\u533a: \u7f8e\u6d32\n \u5b63\u8282: \u79cb\u5929 3\u5929 | \u5bc6\u7801: \u65e0\n\n...\n```\n\n### \u96c6\u7fa4\u7ba1\u7406\n\n\u8f93\u5165\uff1a\n```\n/\u96c6\u7fa4\u72b6\u6001\n```\n\n\u663e\u793a\u7ed3\u679c\uff1a\n```\n\ud83d\udcca \u96c6\u7fa4\u72b6\u6001\u6982\u89c8\n\n\u2705 \u5f53\u524d\u96c6\u7fa4: Master\n\ud83d\udcca \u53ef\u7528\u96c6\u7fa4: Master, Caves\n\ud83d\udd0d \u6700\u540e\u68c0\u67e5: 2\u5206\u949f\u524d\n\n\u96c6\u7fa4\u8be6\u60c5:\n\u2022 Master: \u6b63\u5e38\u8fd0\u884c | 5\u4e2a\u4e16\u754c\n\u2022 Caves: \u6b63\u5e38\u8fd0\u884c | 2\u4e2a\u4e16\u754c\n```\n\n\n### \u7ba1\u7406\u5458\u547d\u4ee4\n| \u547d\u4ee4 | \u529f\u80fd | \u793a\u4f8b |\n|------|------|------|\n| `/\u7f13\u5b58\u72b6\u6001` | \u663e\u793a\u7f13\u5b58\u7edf\u8ba1\u4fe1\u606f | `/\u7f13\u5b58\u72b6\u6001` |\n| `/\u6e05\u7406\u7f13\u5b58` | \u6e05\u7a7a\u6240\u6709\u7f13\u5b58 | `/\u6e05\u7406\u7f13\u5b58` |\n| `/\u5207\u6362\u96c6\u7fa4 <\u540d\u79f0>` | \u5207\u6362\u64cd\u4f5c\u96c6\u7fa4 | `/\u5207\u6362\u96c6\u7fa4 Master` |\n| `/\u91cd\u8f7d\u914d\u7f6e` | \u91cd\u65b0\u52a0\u8f7d\u914d\u7f6e | `/\u91cd\u8f7d\u914d\u7f6e` |\n\n### \u8c03\u8bd5\u547d\u4ee4\n| \u547d\u4ee4 | \u529f\u80fd | \u793a\u4f8b |\n|------|------|------|\n| `/\u6d4b\u8bd5\u6587\u5b57` | \u6d4b\u8bd5\u6d88\u606f\u53d1\u9001 | `/\u6d4b\u8bd5\u6587\u5b57` |\n| `/\u8c03\u8bd5\u4fe1\u606f` | \u663e\u793a\u8c03\u8bd5\u4fe1\u606f | `/\u8c03\u8bd5\u4fe1\u606f` |\n| `/\u7248\u672c\u4fe1\u606f` | \u663e\u793a\u7248\u672c\u4fe1\u606f | `/\u7248\u672c\u4fe1\u606f` |\n\n## \ud83c\udfd7\ufe0f \u67b6\u6784\u8bbe\u8ba1\n\n### \u6a21\u5757\u5316\u7ed3\u6784\n```\nnonebot_plugin_dst_qq/\n\u251c\u2500\u2500 __init__.py # \ud83d\ude80 \u63d2\u4ef6\u5165\u53e3\u548c\u751f\u547d\u5468\u671f\u7ba1\u7406\n\u251c\u2500\u2500 database/ # \ud83d\uddc4\ufe0f \u6570\u636e\u5e93\u6a21\u5757\n\u2502 \u251c\u2500\u2500 __init__.py # \u7edf\u4e00\u63a5\u53e3\u548c\u517c\u5bb9\u5c42\n\u2502 \u251c\u2500\u2500 connection.py # \u8fde\u63a5\u6c60\u7ba1\u7406\u5668\n\u2502 \u2514\u2500\u2500 models.py # \u6570\u636e\u6a21\u578b\u5c42\n\u251c\u2500\u2500 plugins/ # \ud83d\udd0c \u6838\u5fc3\u63d2\u4ef6\n\u2502 \u251c\u2500\u2500 dmp_api.py # DMP API\u96c6\u6210\n\u2502 \u251c\u2500\u2500 dmp_advanced.py # DMP\u9ad8\u7ea7\u529f\u80fd\n\u2502 \u2514\u2500\u2500 message_bridge.py # \u6d88\u606f\u4e92\u901a\u6865\u63a5\n\u251c\u2500\u2500 \u547d\u4ee4\u6a21\u5757/ # \ud83c\udfaf \u547d\u4ee4\u5904\u7406\u5668\n\u2502 \u251c\u2500\u2500 admin_commands.py # \u7ba1\u7406\u5458\u547d\u4ee4\n\u2502 \u251c\u2500\u2500 cluster_commands.py # \u96c6\u7fa4\u7ba1\u7406\u547d\u4ee4\n\u2502 \u251c\u2500\u2500 debug_commands.py # \u8c03\u8bd5\u547d\u4ee4\n\u2502 \u251c\u2500\u2500 item_commands.py # \u7269\u54c1\u67e5\u8be2\u547d\u4ee4\n\u2502 \u2514\u2500\u2500 server_commands.py # \u670d\u52a1\u5668\u547d\u4ee4\n\u251c\u2500\u2500 \u6838\u5fc3\u7ec4\u4ef6/ # \ud83e\udde0 \u6838\u5fc3\u529f\u80fd\u7ec4\u4ef6\n\u2502 \u251c\u2500\u2500 simple_cache.py # \u7b80\u5316\u7f13\u5b58\u7cfb\u7edf\n\u2502 \u251c\u2500\u2500 message_utils.py # \u6d88\u606f\u5de5\u5177\n\u2502 \u251c\u2500\u2500 server_browser.py # \u670d\u52a1\u5668\u6d4f\u89c8\u5668\n\u2502 \u251c\u2500\u2500 cluster_manager.py # \u96c6\u7fa4\u7ba1\u7406\u5668\n\u2502 \u2514\u2500\u2500 wiki_screenshot.py # Wiki\u622a\u56fe\u7cfb\u7edf\n\u2514\u2500\u2500 \u5de5\u5177\u6a21\u5757/ # \ud83d\udee0\ufe0f \u901a\u7528\u5de5\u5177\n \u251c\u2500\u2500 config.py # \u914d\u7f6e\u7ba1\u7406\n \u251c\u2500\u2500 utils.py # \u901a\u7528\u5de5\u5177\n \u251c\u2500\u2500 scheduler.py # \u4efb\u52a1\u8c03\u5ea6\n \u2514\u2500\u2500 item_data.py # \u7269\u54c1\u6570\u636e\n```\n\n### \u6027\u80fd\u7279\u6027\n- **\ud83d\ude80 \u5f02\u6b65\u4f18\u5148**: \u5168\u5f02\u6b65\u8bbe\u8ba1\uff0c\u652f\u6301\u9ad8\u5e76\u53d1\n- **\ud83e\udde0 \u667a\u80fd\u7f13\u5b58**: LRU\u7b97\u6cd5\uff0c\u5185\u5b58+\u6587\u4ef6\u53cc\u5c42\u7f13\u5b58\n- **\ud83d\udd17 \u8fde\u63a5\u6c60**: \u6570\u636e\u5e93\u8fde\u63a5\u590d\u7528\uff0c\u51cf\u5c11\u5f00\u9500\n- **\ud83d\udce6 \u6a21\u5757\u5316**: \u6309\u9700\u52a0\u8f7d\uff0c\u964d\u4f4e\u5185\u5b58\u5360\u7528\n- **\u26a1 \u4f18\u5316\u7b97\u6cd5**: \u7f13\u5b58\u547d\u4e2d\u738790%+\uff0c\u54cd\u5e94\u65f6\u95f4<100ms\n\n## \ud83d\udd27 \u9ad8\u7ea7\u914d\u7f6e\n\n### \u7f13\u5b58\u914d\u7f6e\n```json\n{\n \"cache_settings\": {\n \"enable_cache\": true,\n \"memory_cache_size\": 1000,\n \"file_cache_ttl\": 3600,\n \"api_cache_ttl\": 300\n }\n}\n```\n\n### \u6570\u636e\u5e93\u914d\u7f6e\n```json\n{\n \"database_settings\": {\n \"chat_history_days\": 30,\n \"auto_cleanup\": true,\n \"backup_enabled\": true\n }\n}\n```\n\n### \u6d88\u606f\u4e92\u901a\u914d\u7f6e\n```json\n{\n \"bridge_settings\": {\n \"message_filter\": true,\n \"max_message_length\": 200,\n \"auto_reconnect\": true,\n \"session_timeout\": 1800\n }\n}\n```\n\n## \ud83d\udc1b \u6545\u969c\u6392\u9664\n\n### \u5e38\u89c1\u95ee\u9898\n\n**1. \u63d2\u4ef6\u65e0\u6cd5\u8fde\u63a5DMP\u670d\u52a1\u5668**\n```bash\n# \u68c0\u67e5\u914d\u7f6e\u6587\u4ef6\ncat config/config/app_config.json\n# \u6d4b\u8bd5\u7f51\u7edc\u8fde\u901a\u6027\ncurl -X GET \"http://your-dmp-server:port/v1/auth/login\"\n```\n\n**2. \u6d88\u606f\u4e92\u901a\u4e0d\u5de5\u4f5c** \n```bash\n# \u68c0\u67e5OneBot\u8fde\u63a5\u72b6\u6001\n# \u786e\u8ba4\u8d85\u7ea7\u7528\u6237\u914d\u7f6e\u6b63\u786e\n# \u67e5\u770b\u65e5\u5fd7\u9519\u8bef\u4fe1\u606f\n```\n\n**3. \u7269\u54c1\u67e5\u8be2\u5931\u8d25**\n```bash\n# \u91cd\u8f7d\u7269\u54c1\u6570\u636e\n/\u91cd\u8f7d\u7269\u54c1\n# \u68c0\u67e5\u6570\u636e\u5e93\u6587\u4ef6\nls -la data/database/\n```\n\n### \u65e5\u5fd7\u4f4d\u7f6e\n- NoneBot2\u65e5\u5fd7: \u63a7\u5236\u53f0\u8f93\u51fa\n- \u63d2\u4ef6\u65e5\u5fd7: \u4f7f\u7528 `LOG_LEVEL=DEBUG` \u67e5\u770b\u8be6\u7ec6\u65e5\u5fd7\n- \u6570\u636e\u5e93\u65e5\u5fd7: `data/database/` \u76ee\u5f55\n\n## \ud83e\udd1d \u8d21\u732e\u6307\u5357\n\n\u6b22\u8fce\u8d21\u732e\u4ee3\u7801\uff01\u8bf7\u9075\u5faa\u4ee5\u4e0b\u6b65\u9aa4\uff1a\n\n1. Fork \u9879\u76ee\n2. \u521b\u5efa\u529f\u80fd\u5206\u652f: `git checkout -b feature/amazing-feature`\n3. \u63d0\u4ea4\u66f4\u6539: `git commit -m 'Add amazing feature'`\n4. \u63a8\u9001\u5206\u652f: `git push origin feature/amazing-feature`\n5. \u521b\u5efa Pull Request\n\n### \u5f00\u53d1\u73af\u5883\n```bash\n# \u514b\u9686\u9879\u76ee\ngit clone https://github.com/uitok/nonebot-plugin-dst-qq.git\ncd nonebot-plugin-dst-qq\n\n# \u5b89\u88c5\u4f9d\u8d56\npoetry install\n# \u6216\npip install -r requirements.txt\n\n# \u8fd0\u884c\u6d4b\u8bd5\npytest tests/\n```\n\n## \ud83d\udccb \u7248\u672c\u5386\u53f2\n\n\u67e5\u770b [CHANGELOG.md](CHANGELOG.md) \u4e86\u89e3\u8be6\u7ec6\u66f4\u65b0\u5386\u53f2\u3002\n\n### \u6700\u65b0\u7248\u672c v0.4.5\n- \ud83d\uddbc\ufe0f \u5168\u65b0Wiki\u622a\u56fe\u7cfb\u7edf\uff0c\u667a\u80fd\u5185\u5bb9\u6355\u83b7\n- \ud83d\udd0d \u589e\u5f3a\u7269\u54c1\u641c\u7d22\u529f\u80fd\uff0c\u652f\u6301\u5feb\u901f\u67e5\u8be2\n- \ud83c\udf10 \u65b0\u589e\u670d\u52a1\u5668\u6d4f\u89c8\u529f\u80fd\uff0c\u652f\u6301DST\u5b98\u65b9\u670d\u52a1\u5668\u5217\u8868\n- \ud83d\uddc4\ufe0f \u5b8c\u5584\u6570\u636e\u5e93\u8fde\u63a5\u6c60\u7ba1\u7406\n- \u26a1 \u4f18\u5316\u7f13\u5b58\u7cfb\u7edf\uff0c\u63d0\u5347\u54cd\u5e94\u901f\u5ea6\n- \ud83d\udce6 \u5b8c\u6574\u6a21\u5757\u5316\u67b6\u6784\uff0c25\u4e2a\u6838\u5fc3\u6587\u4ef6\n\n## \ud83d\udcc4 \u8bb8\u53ef\u8bc1\n\n\u672c\u9879\u76ee\u91c7\u7528 [MIT](LICENSE) \u8bb8\u53ef\u8bc1\u3002\n\n## \ud83d\ude4f \u81f4\u8c22\n\n- [NoneBot2](https://nonebot.dev/) - \u4f18\u79c0\u7684Python\u5f02\u6b65\u673a\u5668\u4eba\u6846\u67b6\n- [Alconna](https://github.com/ArcletProject/Alconna) - \u5f3a\u5927\u7684\u547d\u4ee4\u89e3\u6790\u5668\n- [OneBot](https://onebot.dev/) - \u804a\u5929\u673a\u5668\u4eba\u5e94\u7528\u63a5\u53e3\u6807\u51c6\n\n## \ud83d\udcde \u8054\u7cfb\u65b9\u5f0f\n\n- \u4f5c\u8005: uitok\n- \u90ae\u7bb1: ui_101@qq.com \n- \u9879\u76ee\u5730\u5740: https://github.com/uitok/nonebot-plugin-dst-qq\n- \u95ee\u9898\u53cd\u9988: https://github.com/uitok/nonebot-plugin-dst-qq/issues\n\n---\n\n\u5982\u679c\u8fd9\u4e2a\u9879\u76ee\u5bf9\u4f60\u6709\u5e2e\u52a9\uff0c\u6b22\u8fce\u7ed9\u4e00\u4e2a \u2b50 Star\uff01",
"bugtrack_url": null,
"license": "MIT",
"summary": "\ud83c\udfae \u529f\u80fd\u4e30\u5bcc\u7684\u9965\u8352\u7ba1\u7406\u5e73\u53f0 (DMP) QQ \u673a\u5668\u4eba\u63d2\u4ef6\uff0c\u57fa\u4e8e NoneBot2 \u548c Alconna \u6784\u5efa\uff0c\u63d0\u4f9b\u670d\u52a1\u5668\u7ba1\u7406\u3001\u6d88\u606f\u4e92\u901a\u3001Wiki\u622a\u56fe\u7b49\u5168\u65b9\u4f4d\u529f\u80fd",
"version": "0.4.9",
"project_urls": {
"Bug Tracker": "https://github.com/uitok/nonebot-plugin-dst-qq/issues",
"Documentation": "https://github.com/uitok/nonebot-plugin-dst-qq#readme",
"Homepage": "https://github.com/uitok/nonebot-plugin-dst-qq",
"Repository": "https://github.com/uitok/nonebot-plugin-dst-qq"
},
"split_keywords": [
"aiosqlite",
" alconna",
" beautifulsoup4",
" dmp",
" don't starve together",
" dst",
" htmlrender",
" message-exchange",
" nonebot",
" nonebot2",
" plugin",
" qq-bot",
" server-browser",
" wiki-screenshot",
" \u9965\u8352"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "863a1938ff0235a17137033aec61f3ee3b3b81b6b3ecbcefb6ea02f239946820",
"md5": "f573484445668031fc9c62cf414a868e",
"sha256": "4aa9cba90b6df4d881ee3a0422519742d957b4d962ffb94acf52dc9ccafd7b8a"
},
"downloads": -1,
"filename": "nonebot_plugin_dst_qq-0.4.9-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f573484445668031fc9c62cf414a868e",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.9",
"size": 127624,
"upload_time": "2025-09-20T02:25:04",
"upload_time_iso_8601": "2025-09-20T02:25:04.964249Z",
"url": "https://files.pythonhosted.org/packages/86/3a/1938ff0235a17137033aec61f3ee3b3b81b6b3ecbcefb6ea02f239946820/nonebot_plugin_dst_qq-0.4.9-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7f6cda2ff69a5e3f600250183841b6cef885b148895b77dc2efaec9e174fb642",
"md5": "575acb3cb2047f0b752d0d9474848a83",
"sha256": "60a2052639d9d297af693208d63137fd42fcb7ef50104fdae29a0b1266a392cd"
},
"downloads": -1,
"filename": "nonebot_plugin_dst_qq-0.4.9.tar.gz",
"has_sig": false,
"md5_digest": "575acb3cb2047f0b752d0d9474848a83",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.9",
"size": 113673,
"upload_time": "2025-09-20T02:25:07",
"upload_time_iso_8601": "2025-09-20T02:25:07.799189Z",
"url": "https://files.pythonhosted.org/packages/7f/6c/da2ff69a5e3f600250183841b6cef885b148895b77dc2efaec9e174fb642/nonebot_plugin_dst_qq-0.4.9.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-20 02:25:07",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "uitok",
"github_project": "nonebot-plugin-dst-qq",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "nonebot-plugin-dst-qq"
}