我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python实现飞书机器人定时发送文本、图片等群消息

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python实现飞书机器人定时发送文本、图片等群消息

工作中会经常遇到监控告警相关问题,监控和告警的目的是要在事中及时发现问题并定位系统问题,那么当系统或平台出现问题了,如何及时暴露这些问题给对应的项目开发人员呢?

本文记录了在Python项目中利用飞书的自定义机器人webhook向飞书群推送文本及图片消息~

飞书机器人自动发送群消息

  • 飞书群-设置-群机器人-添加机器人-自定义机器人;

  • 复制webhook地址,webhook地址就是用来发送消息的接口;

参考:飞书官方开发文档

2.1 发送文本消息

注:如想要@具体成员,则需要获取对方的user_id,可参考:获取user_id

class FeishuTalk:    # 机器人webhook    chatGPT_url = 'https://open.feishu.cn/open-apis/bot/v2/hook/XXX'    # 发送文本消息    def sendTextmessage(self, content):        url = self.chatGPT_url        headers = {            "Content-Type": "application/json; charset=utf-8",        }        payload_message = {            "msg_type": "text",            "content": {            # @ 单个用户 名字                "text": content + "test"                  # @ 所有人 所有人                # "text": content + "test"            }        }        response = requests.post(url=url, data=json.dumps(payload_message), headers=headers)        return response.json     # 执行发送文本消息 content = "生活不止眼前的苟且,还有诗和远方!" FeishuTalk().sendTextmessage(content)

在这里插入图片描述

2.2 发送富文本消息

  • 富文本可以在一条消息中同时支持文字、At、图片、超链接等元素,可参考:富文本消息

  • 对于需要换行展示的消息,可通过发送 富文本消息 进行实现,比如发送一个榜单消息

    # 发送富文本消息    def sendFuTextmessage(self, content):        url = self.chatGPT_url        headers = {            "Content-Type": "application/json; charset=utf-8",        }        payload_message = {            "msg_type": "post",            "content": {                "post": {                    "zh_cn": {                        "title": "微博头条热榜",                        "content": content                    }                }            }        }        response = requests.post(url=url, data=json.dumps(payload_message), headers=headers)        return response# 微博头条榜单    def getHotBand(self):        url = "https://www.weibo.com/ajax/statuses/hot_band"        headers = {            "cookie": "XSRF-TOKEN=iuIb9M_gQ8D4FjMwUthqcink; SUB=_2AkMUpJdaf8NxqwJRmPEVz2Pib4V_zwrEieKi-GaBJRMxHRl-yT92qhALtRB6PyS5tbPLRbsCo0gfSwhlb8PLq3CnqnuA; SUBP=0033WrSXqPxfM72-Ws9jqgMF55529P9D9WFyRDSrne6a4e.bkQHJzd-.; WBPSESS=IawIaCISeX-46VmeRocrJ40RrQZ7YTNxKt6pB9xuTQ-WP-uhwIvsoHpBEQfU2CGlyGf32loDQLI6ykRbGvzNf_mvmCuvfYLwUPDbYHJizUdUKfKplkCi6sPas7wrz6ACVGt8HOr-w8hjNGpZtkeUtLcl0-BFnXMuSPDMToH7QlI=",            "x-xsrf-token": "iuIb9M_gQ8D4FjMwUthqcink"        }        response = requests.get(url=url, headers=headers).json()        bandList_all = []        index = 1        for item in response['data']['band_list']:            bandDict = {"tag": "text"}            bandList = []            bandDict.update({"text": "No." + str(index) + ":" + item['word']})            bandList.append(bandDict)            index += 1            bandList_all.append(bandList)        return bandList_all# 发送富文本消息content = FeishuTalk().getHotBand()FeishuTalk().sendFuTextmessage(content)
# 注:富文本消息的content消息体格式如下   [  [    {      "tag": "text",      "text": "第一行 :"    }  ],  [    {      "tag": "text",      "text": "第二行:"    }  ]]

在这里插入图片描述

2.3 发送图片消息

发送图片要分为两步:第一步通过上传图片接口获取image_key,第二步将上传的图片发送到群。可参考:发送图片

  1. 登录【飞书开放平台-开发者后台】,查看app_id与app_secret,通过接口拿到 tenant_access_token,供上传图片接口使用。可参考:自建应用获取 tenant_access_token
    在这里插入图片描述
    注:需要开通上传图片权限,入口:开发者后台-权限管理-检索【获取与上传图片或文件资源】;
    在这里插入图片描述

  2. 上传图片获取 image_key ,可参考:上传图片获取image_key

class FeishuTalk:    # 应用凭证,获取方式查看上面的步骤    app_id = "cli_a37c6ffbdxxxxxxx"    app_secret = "mLstZkv0C4d1sxxxxxxxxxxxxxxx"    # 机器人webhook    chatGPT_url = 'https://open.feishu.cn/open-apis/bot/v2/hook/XXX'    def __init__(self): # 获取tenant_access_token,供上传图片接口使用        url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal"        headers = {            "Content-Type": "application/json; charset=utf-8",        }        payload_data = {            "app_id": self.app_id,            "app_secret": self.app_secret        }        response = requests.post(url=url, data=json.dumps(payload_data), headers=headers).json()        self.token = response['tenant_access_token']        # 发送图片    def uploadImage(self, picturePath):        image_key_headers = {            'Authorization': 'Bearer ' + self.token,        }        # 上传图片获取image_key        get_image_key_url = "https://open.feishu.cn/open-apis/im/v1/images"        form = {'image_type': 'message',                'image': (open(picturePath, 'rb'))}  # 需要替换具体的path        multi_form = MultipartEncoder(form)        image_key_headers['Content-Type'] = multi_form.content_type        response = requests.request("POST", get_image_key_url, headers=image_key_headers, data=multi_form).json()        # print(response.headers['X-Tt-Logid'])  # for debug or oncall        image_key = response['data']['image_key']        print("image_key:", image_key)        # 发送图片        url = self.chatGPT_url        form = {'msg_type': 'image',                'content':                    {"image_key": image_key}                }        headers = {            'Authorization': 'Bearer ' + self.token        }        response = requests.post(url=url, data=json.dumps(form), headers=headers)        return response.json()# 发送图片消息picturePath = "E:\PythonCodes\FeishuTalk\picLibs\1.jpg"FeishuTalk().uploadImage(picturePath)

在这里插入图片描述

来源地址:https://blog.csdn.net/tyh_keephunger/article/details/129346297

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python实现飞书机器人定时发送文本、图片等群消息

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录