wimiserver 指令手册

基于 src/index.ts 整理,按使用范围分组。

📋 指令速查表

🟢 普通指令(群成员可用)

指令说明权限使用范围
地图列表 [服务器]获取服务器地图列表所有人L4D2Group
地图 <代码/名称> [服务器]查询地图建图代码(战役/对抗/生还)所有人L4D2Group
服务器 [服务器]查询服务器实时状态所有人L4D2Group
网盘 <地图名称> [服务器]获取地图网盘下载链接所有人L4D2Group
游戏介绍 <游戏名>AI 用可爱语气介绍游戏所有人全局
图片 <比例> [冗余值]按比例随机返回本地图片所有人全局
创意工坊 <ID或链接>查询 Steam 创意工坊模组详情所有人全局

🔴 管理员指令(仅 Admins 可用)

指令说明权限使用范围
切图 <服务器> <地图编号/名称> [关卡] [模式]切换服务器当前地图管理员L4D2Group
更新地图 <mapname>强制更新指定地图管理员L4D2Group
删除网盘地图文件 <file> [服务器]删除网盘中的地图文件管理员L4D2Group
删除服务器地图 <代码/名称> [服务器]删除服务器上的地图管理员L4D2Group
放地图 <服务器> <地图列表>部署地图(自动同步至群文件)管理员L4D2Group
获取模组 <平台> <ID> <类型> <别名>通过 ID 抓取模组到网盘管理员L4D2Group
清理服务器地图 [服务器]清理服务器地图管理员L4D2Group
重启服务器 [服务器]重启指定服务器管理员L4D2Group
steam绑定 <SteamID/链接> <@用户>绑定用户 Steam 账户管理员私聊
分析 <日期> <时间> [服务器] [提示词] [玩家]AI 对局数据分析管理员全局

⚙️ 触发器与定时任务

触发条件行为
群公告包含「开黑信息」自动解析公告中的服务器、时间、地图并建队
群消息以「上传」开头 + 文件上传地图文件到服务器(可附带分类和别名)
群消息含 steamcommunity.com/sharedfiles 链接自动识别创意工坊 ID 并返回模组详情(带 CD)
Bot 被戳一戳(notice)AI 用猫娘语气回复
每日 04:00 cron每日随机地图推送
每日 02:00 cron每日地图更新推送
每日 05:00 cronPixiv 推荐 R18 抓取
每 30 分钟 cronPixiv 普通推荐抓取

🟢 普通指令详解

1. 地图列表 <server>

  • 用途:获取服务器地图列表(含官图、常驻、自定义图)
  • 参数server 可选,默认使用 ServerName[0]
  • 返回:地图编号 + 名称列表
  • 注意:必须先调用此指令缓存地图列表后才能使用 地图删除服务器地图

2. 地图 <code> <server>

  • 用途:根据地图编号或中文名称查询战役/对抗/生还模式的建图代码
  • 参数

    • code:地图编号或中文名(必填)
    • server:服务器名(可选,默认 ServerName[0]
  • 依赖:必须先执行 地图列表

3. 服务器 <server>

  • 用途:查看服务器当前在线人数、地图、模式、玩家列表(按时长排序)

4. 网盘 <mapname> <server>

  • 用途:获取网盘地图的临时下载链接
  • 返回:文件名、大小、下载链接(500ms 后发送)

5. 游戏介绍 <gamename>

  • 用途:调用 AI 用可爱语气介绍游戏,含多人/联机方式

6. 图片 <targetRatiostr> <tolerancestr>

  • 用途:从 E:\Dev\wi-mi-server-api\FastAPI_1\...\Images\ 随机抽取符合比例的图片
  • 参数

    • targetRatiostr:目标比例(如 9/16
    • tolerancestr:宽高冗余值,默认 200

7. 创意工坊 <id>

  • 用途:查询 Steam 创意工坊模组
  • 参数:支持完整链接或纯数字 ID
  • 返回:模组名称、游戏、文件名、大小、浏览/订阅/收藏数、创建/更新时间、下载地址、配图

🔴 管理员指令详解

1. 切图 <server:string> <mapnumber:string> <level:string> <mods:string>

  • 格式切图 服务器名 地图编号/中文名 关卡 模式
  • 模式:战役 / 对抗 / 生还(默认 战役
  • 关卡:默认 1
  • 依赖:必须先执行 地图列表

2. 更新地图 <mapname>

  • 用途:检查并强制更新指定地图
  • 返回:地图更新状态、原更新时间、最新更新时间
  • 注意:接口可能耗时较长(超时 120 分钟)

3. 删除网盘地图文件 <file:string> <server>

  • 用途:删除网盘中的指定地图文件

4. 删除服务器地图 <code:string> <server>

  • 用途:删除服务器上的指定地图
  • 依赖:必须先执行 地图列表

5. 放地图 <server> <maps>

  • 用途:部署一个或多个地图到服务器(多张用逗号分隔)
  • 附加:自动将所需 MOD 文件上传到当前群文件
  • 流程

    1. 检查本地/网盘/服务器状态
    2. 上传缺失的 MOD 到群文件(自动跳过已存在,失败重试 3 次)

6. 获取模组 <platform> <id> <type> <alias>

  • 平台steam / steam创意工坊 / gamemaps
  • 类型:必须在 Updata 配置项中
  • 别名:自定义显示名
  • 用途:从指定平台抓取模组到网盘

7. 清理服务器地图 <server>

  • 用途:清理服务器当前加载的地图

8. 重启服务器 <server>

  • 用途:通过 RCON 重启指定服务器

9. steam绑定 <id> <userId:user>

  • 用途:将用户与 Steam 账户绑定到数据库(steambinding 表)
  • 输入:支持 SteamID64 或个人资料链接

10. 分析 <date:string> <time:string> <server:string> <prompt:string> <player:string>

  • 日期:支持 今天 / 明天 / 昨天 / 4-17 / 04-17 / 4月17日
  • 时间:支持 17 / 17:30 / 17:30:00 / 17点30 / 17-30
  • 服务器:默认 ServerName[0]
  • 提示词

    • 默认:使用默认提示词
    • 毒舌:使用犀利毒舌风格
    • 其他:自定义提示词
  • 玩家:可选,筛选指定玩家
  • 返回:AI 生成的赛后分析图片

⚙️ 触发器详解

群公告自动建队

发送群公告时若公告中包含「开黑信息」字样,会自动解析以下字段:

  • 服务器:xxx
  • 预计开始时间:xx 分
  • 地图:xxx, xxx

并调用 setgameteam 接口创建对局。结果会推送到群内。

「上传」指令(管理员限定)

  • 格式上传 <分类> [别名] + 文件
  • 文件可直接附带或引用(回复)一条带文件的消息
  • 分类必须在 Updata 配置项中
  • 别名缺省时使用文件名

创意工坊链接自动识别

  • 消息中只要含 https://steamcommunity.com/sharedfiles/... 链接即自动解析
  • 每群每 ID 有 SteamWorkshopCOOLDOWN 秒冷却(默认配置项)

notice 事件

  • 当 bot 用户被戳一戳时,由 AI 用猫娘语气回复

📝 配置项说明

字段说明
SelfId已登录的机器人 ID
ServerAddr后端 API 地址
ServerName服务器名称数组
ServerTokenApiAPI 鉴权 Token
Errorat出错时 @ 的用户 ID
L4D2Group支持 L4D2 指令的群列表
Updata允许的地图分类
Admins管理员用户 ID 列表
InfoGroup信息推送群列表
RandomMapSum每日随机地图数量
SteamWorkshopCOOLDOWN创意工坊查询冷却秒数