https://github.com/crazykun/feishu-bot-markdown
飞书markdown消息模板 go-feishu-bot-markdown
https://github.com/crazykun/feishu-bot-markdown
Last synced: 5 months ago
JSON representation
飞书markdown消息模板 go-feishu-bot-markdown
- Host: GitHub
- URL: https://github.com/crazykun/feishu-bot-markdown
- Owner: crazykun
- License: mit
- Created: 2024-03-05T03:16:40.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-11-25T01:56:39.000Z (7 months ago)
- Last Synced: 2025-11-27T23:02:43.983Z (7 months ago)
- Language: Go
- Size: 158 KB
- Stars: 8
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Go飞书机器人Markdown消息工具
## 项目简介
一个基于Go语言封装的飞书群机器人消息发送工具,支持Markdown格式消息的快速构建与发送,提供简洁的API和丰富的消息格式支持。
---
## 安装
```bash
go get github.com/crazykun/feishu-bot-markdown
```
---
## 快速开始
### 1. 配置机器人Hook地址
```go
import (
bot "github.com/crazykun/feishu-bot-markdown"
)
var Hook = "https://open.feishu.cn/open-apis/bot/v2/hook/xxxx-xxxx-xxxx-xxxx"
```
### 2. 构建消息模板
#### 方式一:使用 Map(传统方式)
```go
msg := &bot.FeishuMsg{
Title: "任务完成通知",
Markdown: map[string]any{
"状态": "成功",
"进度": "已完成 100%",
"日志": "```日志内容```",
},
Note: "点击查看详细日志",
NoteEmoji: true,
Link: "http://example.com/logs",
}
```
#### 方式二:使用 MarkdownItems(灵活,保持顺序)
```go
msg := &bot.FeishuMsg{
Title: "任务完成通知",
MarkdownItems: []bot.Text{
{Tag: "状态", Content: "成功"},
{Tag: "进度", Content: "已完成 100%"},
{Tag: "日志", Content: "```日志内容```"},
},
Note: "点击查看详细日志",
NoteEmoji: true,
Link: "http://example.com/logs",
}
```
#### 方式三:使用 MarkdownArray(推荐,最简洁)
```go
msg := &bot.FeishuMsg{
Title: "任务完成通知",
MarkdownArray: [][2]string{
{"状态", "成功"},
{"进度", "已完成 100%"},
{"日志", "```日志内容```"},
},
Note: "点击查看详细日志",
NoteEmoji: true,
Link: "http://example.com/logs",
}
```
### 3. 发送消息
```go
bot.SendFeishuMsg(Hook, msg)
```
---
## 核心功能
- [x] 支持完整Markdown语法子集
- [x] 自定义消息卡片样式
- [x] 颜色配置(支持绿色/红色/灰色等)
- [x] 超链接与@用户功能
- [x] 代码块与列表渲染
- [x] 支持Note备注和随机Emoji
- [x] **新增**:MarkdownItems 切片支持,解决 map 转 JSON 无序问题
- [x] **新增**:MarkdownArray 键值对数组支持,提供最简洁的使用方式
- [x] **新增**:智能优先级机制,支持多种内容格式自动选择
---
## 使用示例

> 图1:消息发送效果示例(包含标题、内容、状态提示和操作链接)
---
## Markdown语法支持
| 功能 | 语法示例 | 展示效果 | 说明 |
|-------------|----------------------------------|----------------------------|-------------------------|
| 斜体 | *斜体文字* | *斜体文字* | 使用星号包裹 |
| 颜色 | 成功 | 成功 | 支持green/red/grey |
| 链接 | [飞书官网](https://feishu.cn) | [飞书官网](https://feishu.cn) | 需要完整URL |
| 代码块 | ```go\nfmt.Println("Hello")\n``` | ```go\nfmt.Println("Hello")\n``` | 支持语言高亮 |
---
## 高级用法
### 自定义卡片样式
```go
// 设置卡片头部颜色
msg.HeaderColor = bot.ColorWathet // 蓝色主题
msg.HeaderColor = bot.ColorGreen // 绿色主题
msg.HeaderColor = bot.ColorRed // 红色主题
msg.HeaderColor = bot.ColorGrey // 灰色主题
msg.HeaderColor = bot.ColorDefault // 默认主题
```
### @指定用户
```go
msg.Markdown["负责人"] = `张三`
```
### 解决 JSON 序列化顺序问题
提供三种解决方案来保证内容顺序:
```go
// 问题:map 在 JSON 序列化时顺序不固定
msg := &bot.FeishuMsg{
Markdown: map[string]any{
"第三步": "完成",
"第一步": "开始",
"第二步": "进行中",
},
}
// 解决方案1:使用 MarkdownItems(灵活)
msg := &bot.FeishuMsg{
MarkdownItems: []bot.Text{
{Tag: "第一步", Content: "开始"},
{Tag: "第二步", Content: "进行中"},
{Tag: "第三步", Content: "完成"},
},
}
// 解决方案2:使用 MarkdownArray(最简洁,推荐)
msg := &bot.FeishuMsg{
MarkdownArray: [][2]string{
{"第一步", "开始"},
{"第二步", "进行中"},
{"第三步", "完成"},
},
}
```
### 智能优先级机制
系统按以下优先级自动选择内容格式:**Markdown** > **MarkdownItems** > **MarkdownArray**
```go
msg := &bot.FeishuMsg{
Title: "智能选择示例",
Markdown: map[string]any{}, // 空的 map
MarkdownItems: []bot.Text{}, // 空的切片
MarkdownArray: [][2]string{
{"自动使用", "MarkdownArray 内容"},
},
}
// 系统会自动使用 MarkdownArray 的内容
```
### 使用场景推荐
- **MarkdownArray**: 简单键值对场景(推荐)
- **MarkdownItems**: 需要混合键值对和纯内容的复杂场景
- **Markdown**: 兼容现有代码,但顺序不固定
---
## 文档与资源
- [飞书机器人官方文档](https://open.feishu.cn/document/client-docs/bot-v3/add-custom-bot)
- [卡片搭建指南](https://open.feishu.cn/cardkit)
- [Markdown语法说明](https://open.feishu.cn/document/uAjLw4CM/ukzMukzMukzM/feishu-cards/card-components/content-components/rich-text)