这是一个为 AstrBot 编写的插件:轮询游戏/创意工坊更新并推送(支持多 AppID、创意工坊ID、卡片或文本)
Important
本插件优先使用 Steam News API 获取游戏更新日志;当 API 失败或返回为空时,可启用 Steam Feed 自动回退
- 被动推送:自动轮询 Steam 更新日志
- 多游戏:支持多个 AppID 统一推送
- 手动查询:群内指令触发即时查询
- LLM整理:可选用大模型对更新内容进行翻译/总结/排版
- 卡片/文本:两种输出模式可选
- 无更新静默:当天无更新不推送
- 创意工坊订阅监控:支持轮询 Workshop PublishedFileID,发现更新时间变化后推送,支持查询非公开创意工坊内容
将插件目录放入:
AstrBot/data/plugins/astrbot_plugin_steam_updates
重启 AstrBot 后即可在 WebUI 中看到插件
插件使用 _conf_schema.json 定义配置,入口:
AstrBot WebUI -> 插件 -> 插件配置
| 配置项 | 说明 |
|---|---|
| enable_push | 是否启用插件 |
| steam_web_api_key | Steam Web API Key(可选) |
| enable_feed_fallback | 是否启用 Steam Feed 回退 |
| feed_timeout_sec | Feed 回退超时秒数 |
| proxy_mode | 代理模式:off / system / custom |
| proxy_url | 自定义代理地址(仅 custom 生效) |
| steam_appids | AppID 列表(如 730) |
| workshop_enable | 是否启用创意工坊订阅监控 |
| workshop_item_ids | 创意工坊订阅ID列表(PublishedFileID) |
| workshop_api_base | 创意工坊API基础地址 |
| workshop_timeout_sec | 创意工坊请求超时秒数 |
| workshop_push_on_first_seen | 首次发现时是否立即推送(默认仅记录基线) |
| steam_lang | 语言(如 schinese / english) |
| poll_interval_sec | 轮询间隔(秒,从起始时间开始计时) |
| poll_start_time | 轮询起始时间(HH:MM) |
| notify_group_ids | 推送群号列表 |
| platform_id | 平台 ID(可选,如 chatbot2) |
| message_mode | card 或 text |
| manual_query_game_command | 游戏更新手动查询指令(可配置多个) |
| manual_query_workshop_command | 创意工坊手动查询指令(可配置多个) |
| content_process_mode | 内容处理方式:plugin / llm |
| llm_provider_id | LLM 提供商ID(可选,WebUI下拉选择) |
| llm_timeout_sec | LLM 请求超时秒数(默认 20) |
| llm_prompt | LLM 提示词(仅 llm 模式生效) |
| max_days | 每个游戏最多展示最近 N 天更新 |
| content_max_chars | 单游戏正文最大字符数 |
| image_max_per_item | 每条更新最多渲染图片数 |
| image_max_height | 图片最大高度 |
| enable_app_headers | 是否启用游戏头图渲染 |
| image_download_timeout_sec | 内容图片下载超时秒数 |
| header_download_timeout_sec | 游戏头图下载超时秒数 |
| prefetch_image_concurrency | 内容图片预取并发数 |
| prefetch_header_concurrency | 头图预取并发数 |
| failed_download_cooldown_sec | 下载失败冷却时间(秒) |
| debug_log | 调试日志(仅控制台输出) |
- 打开
debug_log后,插件会输出结构化日志到 AstrBot 控制台 - 主要阶段:
poll、fetch、fetch_api、fetch_feed、manual、manual_cmd、send、push、ping - 不会生成额外日志文件,便于在线排查
proxy_mode=system:读取 AstrBot 进程环境变量(如HTTP_PROXY/HTTPS_PROXY)proxy_mode=custom:使用proxy_url强制指定代理(推荐,最可控)proxy_mode=off:不使用代理,直连请求
建议:
- 若创意工坊查询出现
ConnectTimeout/ReadTimeout,优先改为custom并设置proxy_url(例如http://127.0.0.1:7890) - 创意工坊不仅依赖
api.steampowered.com,还依赖steamcommunity.com - 仅代理 API 而不代理社区域名时,常见现象是:游戏更新可用、创意工坊失败
插件根目录内的 appid_map.json 用于缓存和手动维护 AppID 对应名称(多语言):
- 优先读取该文件中的名称
- 若该 AppID 语言缺失,会自动通过 Steam API 获取并写回同一条记录
- 不会覆盖已有语言条目(除非你手动修改)
示例:
{
"730": {
"schinese": "反恐精英2",
"english": "Counter-Strike 2",
"japanese": "カウンターストライク 2"
}
}部分地区访问 Steam 相关服务可能不稳定,推荐使用 Clash 混合模式并代理下列域名:
mixin:
mode: rule
proxy-groups:
- name: STEAM-UPDATES
type: select
proxies:
- HK # ← 改成你的节点
- DIRECT
rules:
# Steam 更新插件核心域名(建议代理)
- DOMAIN,api.steampowered.com,STEAM-UPDATES
- DOMAIN,store.steampowered.com,STEAM-UPDATES
- DOMAIN-SUFFIX,steamcommunity.com,STEAM-UPDATES
- DOMAIN-SUFFIX,steampowered.com,STEAM-UPDATES
# 资源域名(建议同样走代理,减少超时)
- DOMAIN-SUFFIX,steamstatic.com,STEAM-UPDATES
- DOMAIN-SUFFIX,steamusercontent.com,STEAM-UPDATES
- DOMAIN-SUFFIX,akamaihd.net,STEAM-UPDATES
# 其余流量直连
- MATCH,DIRECT开启 enable_push 即启用插件,插件会自动轮询 Steam 更新日志并推送到配置的群
若同时开启 workshop_enable 并配置 workshop_item_ids,会在同一轮询中检测创意工坊条目更新时间并合并推送
群内发送任一配置指令即可触发,例如:
STEAM更新
steam更新
cs2更新
steam_update_ping
用于捕获平台信息并测试推送通路
card:图片卡片(推荐)text:纯文本输出
GPL-3.0
Made for AstrBot ❤️