Python脚本飞书消息推送怎么做

wen 实用脚本 1

Python脚本实现飞书消息推送的完整指南(附代码)

目录导读

  1. 飞书消息推送的核心原理
  2. 前置准备:获取Webhook与机器人配置
  3. Python脚本实战:三种推送模式详解
    • 1 文本消息推送
    • 2 富文本(Markdown)消息推送
    • 3 卡片消息推送
  4. 错误排查与常见问题Q&A
  5. 进阶技巧:定时任务与多机器人管理

飞书消息推送的核心原理

飞书开放平台提供了「自定义机器人」功能,用户只需获取一个Webhook地址,即可通过HTTP POST请求向指定群聊发送消息,Python作为最流行的脚本语言之一,可以轻松通过requests库实现消息推送。

Python脚本飞书消息推送怎么做

关键流程
Python脚本 → 构造JSON数据 → POST请求至Webhook URL → 飞书服务器解析 → 群聊显示消息

为什么选择飞书机器人?
无需复杂认证,零门槛接入;支持文本、富文本、卡片等丰富消息类型;配合Python的scheduleAPScheduler可实现自动化监控、告警、数据推送。


前置准备:获取Webhook与机器人配置

1 创建飞书机器人

  1. 打开飞书客户端,进入目标群聊 → 点击「设置」→「群机器人」→「添加机器人」→ 选择「自定义机器人」。
  2. 设置机器人名称、头像(可选),点击「完成」。
  3. 系统生成一个以https://open.feishu.cn/open-apis/bot/v2/hook/开头的Webhook地址,务必复制保存。

2 安全配置(重要)

  • IP白名单:在机器人配置页面,建议添加你服务器或本机的公网IP,防止地址泄露后被滥用。
  • 签名校验(可选):开启后,请求头需携带时间戳与签名,增强安全性。

3 确认Python环境

确保已安装Python 3.6+,以及requests库(pip install requests)。


Python脚本实战:三种推送模式详解

1 文本消息推送(最基础)

import requests
import json
def send_text(webhook_url, content):
    data = {
        "msg_type": "text",
        "content": {
            "text": content
        }
    }
    headers = {"Content-Type": "application/json"}
    response = requests.post(webhook_url, json=data, headers=headers)
    return response.json()
# 使用示例
webhook = "your_webhook_url_here"
result = send_text(webhook, "Python脚本推送测试:Hello 飞书!")
print(result)  # 正常返回 {"code":0,"msg":"success"}

注意:文本消息默认支持@某人,语法为<at user_id="all">所有人</at>all表示@所有人)。


2 富文本(Markdown)消息推送

飞书机器人支持部分Markdown语法(如标题、加粗、列表、链接等)。

def send_markdown(webhook_url, title, content):
    data = {
        "msg_type": "interactive",
        "card": {
            "header": {
                "title": {
                    "tag": "plain_text",
                    "content": title
                }
            },
            "elements": [
                {
                    "tag": "markdown",
                    "content": content
                }
            ]
        }
    }
    # 发送逻辑同上
**系统监控告警**  
- CPU使用率:**85%** (阈值>75%)  
- 内存使用:已用3.2GB/4GB  
- [查看详情](http://example.com/monitor)  

3 卡片消息推送(高颜值+交互)

卡片消息支持按钮、分割线、多列布局,适合复杂场景。

def send_card(webhook_url, title, body_list, button_url=None):
    elements = []
    for item in body_list:
        elements.append({
            "tag": "div",
            "text": {
                "tag": "lark_md",
                "content": f"**{item['label']}**:{item['value']}"
            }
        })
    if button_url:
        elements.append({
            "tag": "action",
            "actions": [{
                "tag": "button",
                "text": {"tag": "plain_text", "content": "查看详情"},
                "url": button_url,
                "type": "default"
            }]
        })
    # 构建完整card结构(含header)

错误排查与常见问题Q&A

Q1:推送后飞书群没有任何消息?

A:首先检查Webhook地址是否完整正确,然后看Python返回结果:

  • code: 0 表示成功。
  • code: 19021 表示消息内容含敏感词(如“测试”、“admin”)。
  • code: 19024 表示签名验证失败(若已开启签名校验)。

解决办法

  • 打印response.text查看详细错误。
  • 若提示IP未在白名单,登录飞书机器人后台添加IP。

Q2:如何@指定成员或所有人?

A:在文本消息的content.text中嵌入<at user_id="ou_xxx">张三</at>(需通过飞书开放API获取user_id)。@所有人直接写<at user_id="all">所有人</at>

Q3:推送内容包含中文乱码?

A:Python默认UTF-8编码,通常不会乱码,若出现,可在请求头添加"charset": "utf-8",或确保文本不包含非法Unicode字符。

Q4:能否推送图片或文件?

A:飞书自定义机器人不支持直接发送图片或文件,但可通过卡片消息的img标签展示图片URL,或先上传文件到服务端再发送链接。


进阶技巧:定时任务与多机器人管理

1 使用schedule库实现定时推送

import schedule
import time
def daily_report():
    webhook = "https://open.feishu.cn/open-apis/bot/v2/hook/xxx"
    send_markdown(webhook, "日报推送", "今日数据摘要...")
# 每天9:30推送
schedule.every().day.at("09:30").do(daily_report)
while True:
    schedule.run_pending()
    time.sleep(1)

2 多机器人统一管理

将Webhook地址存入配置文件(如config.json):

{
  "dev_team": "https://...hook1",
  "ops_monitor": "https://...hook2",
  "all_staff": "https://...hook3"
}

通过函数参数动态选择目标群聊。

3 安全加固:签名校验实现

开启签名后,需在请求头加入时间戳和签名:

import hmac
import hashlib
import base64
import time
timestamp = str(int(time.time()))
secret = "your_secret_key"
string_to_sign = f"{timestamp}\n{secret}"
sign = base64.b64encode(hmac.new(secret.encode(), string_to_sign.encode(), hashlib.sha256).digest())
headers["X-Lark-Signature"] = sign

通过Python脚本推送飞书消息,核心在于理解Webhook的JSON格式与请求方式,从简单文本到复杂卡片,再到定时任务与多机器人协作,这套方案适用于运维告警、数据报表、钉钉/企业微信互转等多种场景,建议先在测试群调试,再迁移至生产环境。

抱歉,评论功能暂时关闭!