用Go写一个飞书机器人定时发送消息的程序
下面是一个每分钟调用飞书机器人 Webhook 地址发送消息的完整 Go 示例。
✅ 一、准备工作
你需要一个飞书机器人的 Webhook 地址,形如:
https://open.feishu.cn/open-apis/bot/v2/hook/xxxx-xxxx-xxxx-xxxx
确保你的机器人在群聊中,并已开启“加签验证”或“自定义关键词”等配置(视你配置而定)。
✅ 二、Go 示例代码(每分钟发一次消息)
package mainimport ("bytes""encoding/json""fmt""io""net/http""time""github.com/robfig/cron/v3"
)// 替换为你的机器人 Webhook 地址
const webhookURL = "https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxx"func main() {c := cron.New(cron.WithSeconds()) // 开启秒级支持_, err := c.AddFunc("0 * * * * *", func() {fmt.Println("每分钟触发任务,当前时间戳:", time.Now().Unix())formattedTime := time.Now().Format("2025/01/02 15:04:05")sendLarkBotMessage("无论在干什么,请记得及时喝水\n当前时间:" + formattedTime)})if err != nil {fmt.Println("添加定时任务失败:", err)return}c.Start()fmt.Println("飞书定时消息机器人启动成功...")select {} // 阻塞主线程
}// 发送消息到飞书机器人
func sendLarkBotMessage(content string) {message := map[string]interface{}{"msg_type": "text","content": map[string]string{"text": content,},}jsonData, err := json.Marshal(message)if err != nil {fmt.Println("消息序列化失败:", err)return}resp, err := http.Post(webhookURL, "application/json", bytes.NewBuffer(jsonData))if err != nil {fmt.Println("发送请求失败:", err)return}defer func(Body io.ReadCloser) {err := Body.Close()if err != nil {}}(resp.Body)fmt.Println("飞书响应状态码:", resp.StatusCode)
}
✅ 三、效果说明
-
每分钟的第 0 秒自动调用飞书 webhook。
-
消息内容包含当前 Unix 时间戳。
-
控制台会打印每次调用的日志与 HTTP 状态码。
参考:在群组中使用机器人