#slack #models #messages #model #message

slack-blocks

为 Slack 的 JSON Block Kit 提供模型和客户端验证

82 个版本 (24 个破坏性更新)

0.25.0 2021 年 6 月 5 日
0.23.1 2021 年 6 月 2 日
0.9.12 2020 年 8 月 6 日
0.9.11 2020 年 7 月 26 日

#482数据结构

Download history 108/week @ 2024-03-14 20/week @ 2024-03-21 82/week @ 2024-03-28 60/week @ 2024-04-04 38/week @ 2024-04-11 30/week @ 2024-04-18 23/week @ 2024-04-25 36/week @ 2024-05-02 68/week @ 2024-05-09 98/week @ 2024-05-16 95/week @ 2024-05-23 143/week @ 2024-05-30 68/week @ 2024-06-06 48/week @ 2024-06-13 51/week @ 2024-06-20 39/week @ 2024-06-27

每月 223 次下载

MIT/Apache

380KB
4.5K SLoC

crates.io docs.rs Maintenance

slack-blocks

此包将 Slack 的优秀 Block Kit 🔗 带入 Rust 生态系统。

内部包含 Slack 所有布局块、块元素和组合对象的模型。每个结构都复制了 Slack 的 API 文档,以便您无需离开编辑器即可记住块套件 API 的详细信息。

每个模型都有构建器,利用 Rust 的类型系统帮助您提供所有必需的字段,因此您可以对自己的应用程序充满信心。

常见编译器错误的故障排除

未找到 方法 build...Builder - 深入查看错误消息,您会找到类似 RequiredMethodNotCalled<method::foo> 的内容,这意味着您需要调用 .foo(),然后才能调用 .build()

示例

使用 Slack 文档中的示例

{
  "type": "section",
  "text": {
    "text": "*Sally* has requested you set the deadline for the Nano launch project",
    "type": "mrkdwn"
  },
  "accessory": {
    "type": "datepicker",
    "action_id": "datepicker123",
    "initial_date": "1990-04-28",
    "placeholder": {
      "type": "plain_text",
      "text": "Select a date"
    }
  }
}

您可以使用原始构建器如下所示

use slack_blocks::{text::ToSlackMarkdown, blocks::Section, elems::DatePicker};

let section = Section::builder()
                      .text("*Sally* has requested you set the deadline for the Nano launch project".markdown())
                      .accessory(DatePicker::builder()
                                            .action_id("datepicker123")
                                            .initial_date((28, 4, 1990))
                                            .placeholder("Select a date")
                                            .build()
                      )
                      .build();

或启用 unstable 功能并使用 xml 宏

use slack_blocks::blox::*;

let pick_date = blox! {
  <date_picker action_id="datepicker123"
               placeholder="Select a date"
               initial_date=(28, 4, 1990) />
};

let section = blox! {
  <section_block accessory=pick_date>
    <text kind=plain>"*Sally* has requested you set the deadline for the Nano launch project"</text>
  </section_block>
};

许可协议

根据您的选择,许可协议为以下之一

贡献

除非您明确声明,否则任何提交给作品以供包含的故意贡献,根据 Apache-2.0 许可证定义,均应按上述方式双许可,不附加任何额外条款或条件。

依赖项

~0.4–1.8MB
~40K SLoC