Skip to content

辅助工具

Luolan.QQBot 提供了一系列辅助工具类,位于 Luolan.QQBot.Helpers 命名空间。

KeyboardBuilder

构建互动键盘按钮。

命名空间: Luolan.QQBot.Helpers

方法

方法说明
NewRow()开始新的一行按钮(每行最多 5 个)
AddButton(string id, string label, string? visitedLabel, int style)添加回调按钮
AddLinkButton(string id, string label, string url, int style)添加链接按钮
Build()构建 Keyboard 对象
FromButtons(params Button[] buttons)静态方法,从按钮列表快速创建

使用示例

csharp
var keyboard = new KeyboardBuilder()
    .NewRow()
        .AddButton("btn_yes", "确认", style: 1)      // 蓝色
        .AddButton("btn_no", "取消", style: 0)       // 灰色
    .NewRow()
        .AddLinkButton("link_web", "打开网页",
            "https://github.com", style: 1)
    .Build();

按钮样式

Style效果
1蓝色(主要操作)
0灰色(次要操作)

MarkdownBuilder

构建 Markdown 消息内容。

命名空间: Luolan.QQBot.Helpers

方法

方法说明
UseContent(string content)使用原生 Markdown 内容
UseTemplate(string templateId)使用模板 ID(字符串)
AddParam(string key, params string[] values)追加模板参数
SetParam(string key, params string[] values)覆盖模板参数
Build()构建 MessageMarkdown 对象

静态工厂方法

方法说明
FromContent(string content)从原生 Markdown 创建
FromTemplate(string templateId)从模板创建

使用示例

csharp
// 原生 Markdown
var md1 = MarkdownBuilder.FromContent("# 标题\n**加粗** *斜体*");

// 模板模式
var md2 = new MarkdownBuilder()
    .UseTemplate("custom_template_id")
    .AddParam("title", "标题内容")
    .AddParam("items", "项目1", "项目2")
    .Build();

// Builder 模式
var md3 = new MarkdownBuilder()
    .UseContent("**通知**")
    .Build();

CommandParser

增强的命令解析器,支持引号参数。

命名空间: Luolan.QQBot.Helpers

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

RateLimiter

Token Bucket 速率限制器。

命名空间: Luolan.QQBot.Helpers

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

// 非阻塞尝试
if (limiter.TryAcquire("key"))
{
    // 立即执行
}

// 阻塞等待
await limiter.AcquireAsync("key", cancellationToken);

基于 MIT 协议发布