- services/servers.py:校验 + 读写 + 增删改收敛成一份数据层(顶层不 import nonebot, 可脱离运行时单测),群命令与 Web API 都只经它改数据,校验不再各写一套 - web_hub.py + /hub/mc_server_status 页面:按群列出服务器,抽屉新增/编辑(改名)/ 测试连接,行内删除(删空一台连带删群);每条路由自带 require_admin - handlers/server.py 改为薄封装,只在需要命令特有提示时自己判断 - services/mc.py 的图标属性名兼容 mcstatus ≥13 的 icon(旧版叫 favicon, 读错会把整条查询打成"查询失败") - tests/test_mc_servers.py:数据层归一/改名/删群/坏文件兜底 + 图标解码两版属性名 Co-Authored-By: Claude Code <noreply@anthropic.com>
42 lines
1.2 KiB
Plaintext
42 lines
1.2 KiB
Plaintext
nonebot2[fastapi,websockets,httpx]>=2.1.0
|
||
|
||
# --- 基础运行时 ---
|
||
httpx>=0.23.3
|
||
aiohttp>=3.9.5
|
||
websockets>=10.4
|
||
requests>=2.32.3
|
||
pydantic>=2.7.3
|
||
SQLAlchemy>=2.0.30
|
||
|
||
# --- 图像 / 渲染 ---
|
||
pillow>=10.3.0
|
||
pilmoji>=2.0.4
|
||
CairoSVG>=2.7.1
|
||
playwright>=1.50.0
|
||
nonebot-plugin-htmlrender>=0.6.7 # hexi/core/message_utils.py、helldivers、picstatus
|
||
numpy>=2.2.2
|
||
opencv-contrib-python>=4.10.0.84 # bf_bot
|
||
cjk-textwrap>=0.1.0 # makeaquote
|
||
|
||
# --- 抓取 / 网络 ---
|
||
yt-dlp>=2026.6.9 # video_analysis
|
||
boto3>=1.39.11 # video_analysis S3 存储
|
||
pyzipper>=0.3.6 # video_analysis 群文件压缩包加密(AES)
|
||
cloudscraper>=1.2.71 # picfinder_take
|
||
curl-cffi>=0.14.0 # bf_bot (BF6)
|
||
lxml>=5.4.0 # picfinder_take
|
||
beautifulsoup4>=4.13.3 # steam_info
|
||
mcstatus>=13.0.1 # mc_server_status(13 把 JavaStatusResponse.favicon 改名成了 icon)
|
||
|
||
# --- 文本 / 系统 ---
|
||
jieba>=0.42.1 # learning_chat
|
||
ruamel.yaml>=0.17.40 # learning_chat
|
||
pytz>=2025.1 # steam_info
|
||
psutil>=5.9.5 # web_hub dashboard、picstatus
|
||
py-cpuinfo>=9.0.0 # web_hub dashboard、picstatus
|
||
taskgroup>=0.2.2 # picstatus(仅 py<3.11 需要)
|
||
|
||
# nonebot_plugin_group_daily_analysis
|
||
ulid-py>=1.1.0
|
||
diskcache>=5.6.3
|