Skip to content

Akiyy-dev/CS2-Bridge

Repository files navigation

CS2-Bridge

一个基于 CounterStrikeSharp 的 CS2 服务端插件,用于把服务器事件通过 Webhook 推送给 nonebot-plugin-cs2bridge。

功能概览

  • 推送玩家加入事件 player_connect
  • 推送玩家离开事件 player_disconnect
  • 根据断开原因识别并推送踢出事件 player_kick
  • 推送地图切换事件 map_changed
  • 提供测试命令 css_testwebhook / testwebhook
  • 提供状态命令 css_webhookstatus / webhookstatus
  • 支持超时、成功日志、失败日志配置

项目结构

运行环境

  • .NET 8.0
  • CounterStrikeSharp.API
  • 已部署可接收事件的 nonebot-plugin-cs2bridge

配置说明

配置定义位于 Config.cs

第一次启动后配置文件生成于 addons/counterstrikesharp/configs/plugins/CS2-Bridge

配置项 类型 默认值 说明
enable_webhook bool true 是否启用 webhook 发送
webhook_url string http://localhost:xxxx/cs2/event bot 接收 webhook 的完整地址 (端口为Bot启动端口,默认8080)
webhook_secret string your-secret-key-here 请求头 X-Webhook-Secret
webhook_timeout_seconds int 5 单次请求超时秒数
log_webhook_success bool true 发送成功是否打印日志
log_webhook_failure bool true 发送失败是否打印错误日志

注意:Version 字段为 CounterStrikeSharp 配置所需,必须保留。

Webhook Payload 格式

与 nonebot-plugin-cs2bridge 对齐,采用根结构:

{
  "event": "player_connect",
  "data": {
    "player_name": "Akiyy",
    "steamid": "76561198000000000",
    "player_count": 8,
    "max_players": 20
  }
}

当前已实现的 event 值:

  • test
  • player_connect
  • player_disconnect
  • player_kick
  • map_changed

模型定义见 Models/WebhookEventModels.cs

事件与命令逻辑

实现位于 CS2-Bridge.cs

  • 使用 [GameEventHandler] 监听 EventPlayerConnect / EventPlayerDisconnect
  • 使用 RegisterListener<Listeners.OnMapStart> 监听地图切换
  • 使用 AddCommand 注册测试与状态命令
  • 所有 webhook 调用都走异步发送,不阻塞主线程

已注册命令

  • css_testwebhook / testwebhook: 手动发送 test 事件
  • css_webhookstatus / webhookstatus: 查询当前 webhook 启用状态和最近发送状态

发送器说明

实现位于 WebhookSender.cs

  • 静态 HttpClient 复用连接
  • POST + application/json
  • Header 自动附加 X-Webhook-Secret
  • 超时由 webhook_timeout_seconds 控制
  • 全量异常捕获,不向外抛出,避免影响游戏主流程

构建

dotnet build CS2-Bridge.csproj

调试建议

  • 启动后先在控制台确认配置日志是否正确(会打印启用状态和 URL,不打印 secret)
  • 在服务器执行 css_testwebhook 验证链路
  • 若 bot 未收到消息,优先检查:
    • webhook_url 是否可访问
    • webhook_secret 是否与 bot 端一致
    • 防火墙/反向代理是否放行
    • 控制台失败日志中的状态码与异常信息

参考

About

一个基于 CounterStrikeSharp 的 CS2 服务端插件,用于把服务器事件通过 Webhook 推送给 nonebot-plugin-cs2bridge

Resources

Stars

Watchers

Forks

Contributors

Languages