一个基于 CounterStrikeSharp 的 CS2 服务端插件,用于把服务器事件通过 Webhook 推送给 nonebot-plugin-cs2bridge。
- 推送玩家加入事件
player_connect - 推送玩家离开事件
player_disconnect - 根据断开原因识别并推送踢出事件
player_kick - 推送地图切换事件
map_changed - 提供测试命令
css_testwebhook/testwebhook - 提供状态命令
css_webhookstatus/webhookstatus - 支持超时、成功日志、失败日志配置
- CS2-Bridge.cs: 插件主类,事件监听、命令注册与调用发送器
- Config.cs: 插件配置模型(CounterStrikeSharp 配置)
- WebhookSender.cs: Webhook 发送工具类(HttpClient 异步发送)
- Models/WebhookEventModels.cs: Webhook Payload 数据模型(record)
- .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 配置所需,必须保留。
与 nonebot-plugin-cs2bridge 对齐,采用根结构:
{
"event": "player_connect",
"data": {
"player_name": "Akiyy",
"steamid": "76561198000000000",
"player_count": 8,
"max_players": 20
}
}当前已实现的 event 值:
testplayer_connectplayer_disconnectplayer_kickmap_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 端一致- 防火墙/反向代理是否放行
- 控制台失败日志中的状态码与异常信息
- CounterStrikeSharp API 文档: https://docs.cssharp.dev/api/CounterStrikeSharp.API.html
- nonebot 插件仓库: https://github.com/Akiyy-hub/nonebot-plugin-cs2bridge