SCP:SL 服务器查询插件
简介
这是一个为 AstrBot 开发的 SCP:SL (SCP: Secret Laboratory) 服务器查询插件,仿照 server_Qchat 项目的功能实现。该插件可以查询 SCP:SL 游戏服务器的在线人数、状态和详细信息。
功能特性
🎮 主要功能
- 预设服务器: 内置5个常用SCP:SL服务器,一键快速查询
- 服务器状态查询: 实时查询SCP:SL服务器在线状态
- 玩家数量统计: 显示当前在线玩家数和最大玩家数
- 服务器信息: 获取服务器名称、游戏模式、地图等详细信息
- 网络延迟测试: 测量到服务器的网络延迟
- 智能容错: 自动处理各种网络异常情况
- 批量检测: 检测包含"炸了?"的消息并自动返回所有预设服务器状态
- 自定义查询: 支持查询任意IP和端口的SCP:SL服务器
- 群聊服务器管理: 每个群聊可绑定专属服务器,支持数据库存储
- 数据持久化: SQLite 数据库存储群聊服务器配置
📋 可用命令
🚀 预设服务器快速查询
/servers- 显示所有预设服务器列表/xy- 查询所有椿雨服务器状态总览
🔧 自定义服务器查询
| 命令 | 描述 | 使用方法 | 示例 |
|---|---|---|---|
/cx |
查询服务器在线人数和状态 | /cx <服务器IP> [端口] |
/cx 127.0.0.1 7777 |
/zc |
群聊服务器管理 | /zc [服务器IP] [端口] [服务器名称] |
/zc 127.0.0.1 7777 我的服务器 |
/scpsl_help |
显示插件帮助信息 | /scpsl_help |
/scpsl_help |
🤖 自动功能
- 当消息中包含"炸了?"或"服务器炸了?"时,自动检测默认服务器状态
- 支持智能关键词识别,无需手动触发
安装说明
将插件文件放置在 AstrBot 的插件目录中:
AstrBot/data/plugins/scpsl_server_query/ ├── main.py ├── metadata.yaml └── README.md重启 AstrBot 或在 WebUI 中重载插件
插件将自动加载并可以使用
使用示例
📝 使用示例
🚀 预设服务器查询
用户: /servers
机器人: 🎮 SCP:SL 服务器列表
🟢 椿雨系列服务器:
• 椿雨纯净服#1: 27.45.5.146:7777
• 椿雨纯净服#2: 27.45.5.146:7778
• 椿雨插件服#1: 27.45.5.146:7779
• 椿雨插件服#2: 27.45.5.146:7780
用户: /xy
机器人: 服务器状态总览
椿雨纯净服#1 [12/25]
椿雨纯净服#2 [8/25]
椿雨插件服#1 [15/35]
椿雨插件服#2 [0/35]
总计: 4/4 台服务器在线
总在线人数: 35 人
🔧 自定义服务器查询
用户: /cx 127.0.0.1:7777
机器人: 🎮 SCP:SL 服务器状态
📍 服务器: 127.0.0.1:7777
👥 在线人数: 12/20
🏷️ 服务器名: [CN] Test Server
🎯 游戏模式: ClassD
🗺️ 地图: Facility
⏱️ 回合时间: 00:05:23
🌐 延迟: 45ms
🔄 状态: 🟢 在线
🏠 群聊服务器管理
用户: /zc 192.168.1.100 7777 我们的服务器
机器人: ✅ 群聊服务器设置成功!
🏷️ 服务器: 我们的服务器
💡 使用 /zc 查询服务器状态
用户: /zc
机器人: 🎮 群聊服务器状态
🏷️ 服务器: 我们的服务器
👥 在线人数: 8/20
🔄 状态: 🟢 在线
🤖 自动批量检测
用户: 服务器炸了?
机器人: 🤖 自动检测所有椿雨服务器状态
• 椿雨纯净服#1: 🟢 在线 | 👥12/25 | 🌐45ms
• 椿雨纯净服#2: 🟢 在线 | 👥8/25 | 🌐52ms
• 椿雨插件服#1: 🔴 离线 | 👥N/A | 🌐N/A
• 椿雨插件服#2: 🟢 在线 | 👥15/35 | 🌐38ms
📊 总计: 3/4 个服务器在线
技术实现
查询协议
- 主要协议: TCP 连接查询
- 备用协议: UDP 查询(当 TCP 失败时自动切换)
- 默认端口: 7777
- 查询超时: 5 秒
支持的服务器信息
- 在线玩家数量
- 最大玩家数量
- 服务器名称
- 游戏模式
- 当前地图
- 回合时间
- 服务器版本
- 网络延迟
- 在线状态
配置说明
插件支持以下配置项(可在代码中修改):
default_port: 默认查询端口(默认: 7777)timeout: 查询超时时间(默认: 5 秒)default_server: 自动检测使用的默认服务器 IP
返回信息说明
状态图标
- 🟢 在线/正常运行
- 🔴 离线/无法连接
- 🎮 服务器状态
- 📊 详细信息
- 🤖 自动检测
- 👥 玩家信息
- 📍 服务器地址
- 🌐 网络延迟
注意事项
网络要求: 确保 AstrBot 所在服务器能够访问目标 SCP:SL 服务器
端口开放: 目标服务器的查询端口(通常是 7777)需要对外开放
协议兼容: 插件支持标准的 SCP:SL 查询协议
查询频率: 建议不要过于频繁查询,避免对目标服务器造成压力
错误处理: 查询失败时会显示相应的错误信息
群聊限制:
/zc命令只能在群聊中使用,私聊无法使用数据库权限: 确保插件目录有写入权限,用于创建和访问 SQLite 数据库
群号识别: 插件会自动识别当前群聊的群号,每个群聊的服务器配置独立存储
版本信息
- 当前版本: 1.0.0
- 作者: 若梦
- 兼容性: AstrBot 3.0.0+
- 依赖: 无额外依赖
许可证
本插件遵循 MIT 许可证开源。
更新日志
v1.0.0 (2025-01-XX)
- 初始版本发布
- 实现基本的服务器查询功能
- 支持 TCP/UDP 双协议查询
- 添加自动状态检测功能
- 完善错误处理和用户提示
贡献
欢迎提交 Issue 和 Pull Request 来改进这个插件!