Table of Contents

Webhook 客户端

Webhook 客户端的抽象类是 KookWebhookClient

ASP.NET 实现

// 创建服务主机构建器
WebApplicationBuilder builder = WebApplication.CreateBuilder(args);

// 添加 KookAspNetWebhookClient 服务并进行必要的配置
builder.Services.AddKookAspNetWebhookClient(config =>
{
    // 包含 KookRestConfig 及 KookSocketConfig 的全部配置项,此处略

    // 由 KookWebhookConfig 提供的配置项
    // Webhook 负载验证令牌
    config.VerifyToken = default;
    // Webhook 负载解密密钥
    config.EncryptKey = default;
    // 启动时是否等待 Webhook 验证挑战后再开始启动 Bot 服务
    config.StartupWaitForChallenge = false;
    // Webhook 提供程序,此处为由 KookAspNetWebhookConfig 设置的默认值
    config.WebhookProvider = DefaultAspNetWebhookProvider.Instance;

    // 由 KookAspNetWebhookConfig 提供的配置项
    // 令牌类型
    config.TokenType = TokenType.Bot;
    // 令牌
    config.Token = default;
    // 是否验证令牌格式
    config.ValidateToken = true;
    // 请求的路由终结点
    config.RouteEndpoint = "kook";
    // 配置 KookAspNetWebhookClient
    config.ConfigureKookClient = (serviceProvider, client) => { };
});

// 构建服务主机
WebApplication app = builder.Build();

// 配置 Webhook 终结点
app.UseKookEndpoint();

// 启动服务主机
await app.RunAsync();

HTTP Listener 实现


// 使用默认配置创建 WebSocket 客户端
KookHttpListenerWebhookClient webhookClient = new KookHttpListenerWebhookClient();
// 使用自定义配置创建 WebSocket 客户端
KookHttpListenerWebhookClient webhookClient = new KookHttpListenerWebhookClient(new KookHttpListenerWebhookConfig
{
    // 包含 KookRestConfig 及 KookSocketConfig 的全部配置项,此处略

    // 由 KookWebhookConfig 提供的配置项
    // Webhook 负载验证令牌
    VerifyToken = default,
    // Webhook 负载解密密钥
    EncryptKey = default,
    // 启动时是否等待 Webhook 验证挑战后再开始启动 Bot 服务
    StartupWaitForChallenge = false,
    // Webhook 提供程序,此处为由 KookAspNetWebhookConfig 设置的默认值
    WebhookProvider = DefaultAspNetWebhookProvider.Instance,

    // 由 KookHttpListenerWebhookConfig 提供的配置项
    // 用于 HttpListener 的 URI 前缀列表
    UriPrefixes =
    [
        "http://localhost:5043/",
        "http://127.0.0.1:5043/"
    ],
    // HttpListener 崩溃后自动重启的时间间隔
    // Timeout.InfiniteTimeSpan 表示终止服务但不终止进程
    // 其它小于 0 的时间间隔表示不自动重启并终止进程
    // TimeSpan.Zero 表示立即重启 HttpListener
    // 其它大于 0 的时间间隔表示等待指定的时间间隔后重启 HttpListener
    AutoRestartInterval = TimeSpan.FromSeconds(5),

});

// Token
string token = null;
// 登录
await webhookClient.LoginAsync(TokenType.Bot, token);
// 启动
await webhookClient.StartAsync();
// 停止
await webhookClient.StopAsync();
// 登出
await webhookClient.LogoutAsync();