Skip to content

从 v1.4 迁移 ​

v1.5.1 保持向后兼容,主要新增官方新域名适配、Webhook 接入、群管理 API 和新事件。

升级步骤 ​

1. 更新 NuGet 包 ​

bash
dotnet add package Luolan.QQBot --version 1.5.1

2. 检查事件域名 ​

v1.5.1 默认使用官方新域名:

配置v1.4v1.5.1
API 地址https://api.sgroup.qq.comhttps://api.bot.qq.com
鉴权地址https://bots.qq.com/app/getAppAccessTokenhttps://api.bot.qq.com/app/getAppAccessToken

如果你的网络需要继续使用旧地址,可以覆盖:

csharp
var options = new QQBotClientOptions
{
    AppId = "...",
    ClientSecret = "...",
    ApiBaseUrlOverride = "https://api.sgroup.qq.com",
    AuthUrlOverride = "https://bots.qq.com/app/getAppAccessToken"
};

3. 按需订阅新 Intents ​

csharp
.WithIntents(
    Intents.Default
    | Intents.GroupAndC2C     // 群@/全量群消息/C2C/好友事件 (1<<25)
    | Intents.GroupMembers    // 群成员/入群申请 (1<<24)
)

v1.5.1 新增功能 ​

Webhook 作为传输模式 ​

v1.5.1 的 Webhook 是 QQBotClientOptions.Mode 的一种模式,切换时业务代码不变:

csharp
builder.Services.AddQQBotWithHttpClientFactory(options =>
{
    options.AppId = "...";
    options.ClientSecret = "...";
    options.Mode = QQBotConnectionMode.Webhook;
});

builder.Services.AddQQBotHostedService(); // 两种模式都保留
app.MapQQBotWebhook();                     // WebSocket 模式下自动跳过

详见 Webhook 接入。

新事件 ​

事件说明
OnGroupMessageCreate全量群消息(需开启"接收所有消息")
OnGroupMemberAdd / OnGroupMemberRemove群成员加入/退出
OnGroupJoinRequest入群申请(机器人需为管理员)
OnSubscribeMessageStatus订阅消息授权状态变更

新 API ​

分组能力
消息单聊流式消息、群/单聊撤回、分片上传、输入中状态、互动召回
群管理群信息、机器人群内状态、群成员、批量移除、入群申请、自动审批策略、黑名单、禁言
互动自定义菜单、指令面板、互动响应、分享链接

控制器构造函数注入 ​

v1.5.1 修复了 UseControllers() 未传递 DI 容器的问题:

csharp
public class HelloController : QQBotController
{
    private readonly ILogger<HelloController> _logger;

    public HelloController(ILogger<HelloController> logger)
        => _logger = logger;

    [Command("hello")]
    public string Hello(string name) => $"Hello, {name}!";
}

破坏性变更 ​

v1.5.1 没有破坏性变更,但有以下行为调整:

变更说明
默认 API 域名改为 https://api.bot.qq.com,可用 ApiBaseUrlOverride 覆盖
传输模式WebSocket / Webhook 由 QQBotClientOptions.Mode 决定,默认 WebSocket
速率限制默认值令牌桶容量 100 / 每秒补充 20(原 60 / 1),可通过 options 调整
ControllerManager 构造新增可选 IServiceProvider 参数,旧调用方式仍可用
新增依赖BouncyCastle.Cryptography(用于 Webhook Ed25519 签名校验)
新增包Luolan.QQBot.AspNetCore 提供 MapQQBotWebhook()

从 v1.3 升级到 v1.4 ​

如果你仍在使用 v1.3,v1.4 的主要变化:

1. 控制器模式 ​

csharp
public class MyController : QQBotController
{
    [Command("hello")]
    public string Hello(string name) => $"Hello, {name}!";
}

bot.UseControllers();

2. 增强的命令解析器 ​

CommandParser 支持引号参数:

csharp
// 用户输入: /say "hello world" test
var args = CommandParser.Parse(input);
// args = ["/say", "hello world", "test"]

3. 丰富的类型转换 ​

支持 bool、enum、Guid、可空类型等。

4. 速率限制器 ​

csharp
var limiter = new RateLimiter(capacity: 60, refillRate: 1);

5. Markdown 模板 ​

使用 custom_template_id(字符串),旧版 template_id(int)已标记为 [Obsolete]。

csharp
// ✅ 新写法
var md = new MarkdownBuilder().UseTemplate("custom_template_id_string").Build();

// ❌ 已弃用
var md = new MarkdownBuilder().UseTemplate(12345).Build();

基于 MIT 协议发布