企业微信群机器人发送消息通知

news/2024/12/19 20:14:02/文章来源:https://www.cnblogs.com/hanyanling/p/18617370

开发文档

官方开发文档

文本类型

直接发送消息及通知人即可

def send_text_msg(bot_key, msg, mentioned_list=None, mentioned_mobile_list=None, at_all=False):'''向指定机器人发送文本消息:param bot_key: 企微机器人 key:param msg: 文本消息:param mentioned_list: 通知人:param mentioned_mobile_list::param at_all::return:'''if mentioned_list is None:mentioned_list = []if mentioned_mobile_list is None:mentioned_mobile_list = []if at_all:mentioned_mobile_list.append('@all')url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send'params = {'key': bot_key}data = {'msgtype': 'text','text': {'content': msg,'mentioned_list': mentioned_list,'mentioned_mobile_list': mentioned_mobile_list}}resp = requests.post(url, params=params, json=data)return resp.json()

markdown类型

看了一下和文本类型没啥区别,除了 msgtype, 其他参数基本一致,完全可以复用之前的文本消息,这里对文本消息简单处理一下,以便可以发送 markdown类型 消息

# 添加一个 msg_type 表示消息类型
def send_msg(bot_key, msg_type, msg=None, mentioned_list=None, mentioned_mobile_list=None, at_all=False):'''向指定机器人发送文本消息:param bot_key: 企微机器人 key:param msg: 消息内容:param mentioned_list: 通知人:param mentioned_mobile_list::param at_all::return:'''if not bot_key:raise ValueError('bot_key must be provided')if msg_type not in ['text', 'markdown']:raise ValueError('msg_type must be text or markdown')if not msg:raise ValueError('msg must be provided')if mentioned_list is None:mentioned_list = []if mentioned_mobile_list is None:mentioned_mobile_list = []if at_all:mentioned_mobile_list.append('@all')url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send'params = {'key': bot_key}data = {'msgtype': msg_type,msg_type: {'content': msg,'mentioned_list': mentioned_list,'mentioned_mobile_list': mentioned_mobile_list}}resp = requests.post(url, params=params, json=data)return resp.json()

图片类型

直接获取图片字节流,然后进行base64编码和md5加密即可

def send_image_msg(bot_key, file_path):url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send'params = {'key': bot_key}with open(file_path, 'rb') as f:f_read = f.read()img_md5 = hashlib.md5(f_read).hexdigest()img_base64 = base64.b64encode(f_read).decode('utf-8')data = {"msgtype": "image","image": {"base64": img_base64,"md5": img_md5}}resp = requests.post(url, params=params, json=data)return resp.json()

文件类型

文件类型需要先把文件上传到服务器上才能发送

def send_file_msg(bot_key, file_path, show_name=None):'''上传并发送文件消息:param bot_key: 机器人 key:param file_path: 文件路径:param show_name: 上传后在消息中的显示名称'''if not os.path.isfile(file_path):raise ValueError('File does not exist')if show_name is None:show_name = os.path.basename(file_path)wx_upload_url = f'https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media'wx_upload_params = {'key': bot_key,'type': 'file'}response = requests.post(wx_upload_url,params=wx_upload_params,files={'file': (show_name, open(file_path, 'rb'))})upload_response = response.json()if upload_response['errcode'] != 0:return upload_responseelse:media_id = upload_response.get('media_id')url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send'params = {'key': bot_key}response = requests.post(url, params=params, json={'msgtype': 'file', 'file': {'media_id': media_id}})return response.json()

语音类型

语音和文件类似,简单修改下就好了,修改的方式和上面的一致

pypi 包

pip install ics-utils

调用方法极其简单

from ics_utils import WxWorkwx_work = WxWork(bot_key='')
wx_work.send_text_msg(msg='hello, world!')
wx_work.send_markdown_msg(msg='# 大标题 \n## 小标题\n* 列表项1\n* 列表项2')
wx_work.send_image_msg(file_path='image.jpg')
wx_work.send_file_msg(file_path='file.pdf', show_name='示例.pdf')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/855571.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生物医学信息

生物信息学基础 生物医学信息学的概念的掌握生物信息学很大一部分工作体现在生物数据的收集、存储、管理与提供 利用多组学数据(基因组,转录组,表观遗传组、蛋白组等)和机器学习、数据挖掘的方法 ,挖掘潜在的生物学、医学的知识和模式,用于解决诊断和治疗。中心法则是什么…

5、导出表

5、导出表 typedef struct _IMAGE_EXPORT_DIRECTORY {DWORD Characteristics;DWORD TimeDateStamp;WORD MajorVersion;WORD MinorVersion;DWORD Name; // 指向 导出表的文件名DWORD Base; // 导出函数的起始序号DWORD NumberOfFunctions; // 所有导…

4、文件与内存转换相关

4、文件与内存转换相关 FileBufferToImageBuffer 也是一样的长话短说。这里涉及了一点,就是内存对齐 PE头与节区之间 节区与节区时间会发生内存对齐。在文件中有一个文件对齐 ​​ 在可选PE头中有这两个进行标识,之前也写过这个内存对齐的博客,这里就不多说了 下面贴几个代…

1、PE 初识

1、PE 初识 概论 首先 PE头部分主要是学习PE结构的前半部分,每一个是做什么的,以及重点是什么,每一个是做什么用的。并使用Cpp代码来解析该PE头 注意这里用了一个Windows.h的头文件,后面再说。 PE是Windows系统 PE结构(Portable Executable),即可移植可执行文件格式,是…

交换空间swap

交换空间: 交换空间是硬盘上的一部分,被用作虚拟内存,当系统的物理内存(RAM)不足时,系统会使用交换空间来存储暂时不用的数据。1.关闭交换空间 1)关闭所有交换空间 swapoff -a2)关闭特定的交换空间 swapoff /dev/sdb12.开启交换空间 1)开启所有交换空间 swapon -a2…

2024 IDEA 2024.3 安装使用教程(附激活至2099年,以及常见问题处理)

IntelliJ IDEA简介 IntelliJ IDEA是一款非常强大的Java集成开发环境(IDE),由JetBrains公司开发。它提供了丰富的功能和工具,帮助开发者更高效地编写、调试和部署代码。 下面这种方式仅供交流学习,如果有能力还请支持正版 下载安装 下载 IDEA 2024.3 版本的安装包 为了方便,也…

第十六次作业

1、通过华为云沃土云创计划免费薅云服务器 打开链接:https://developer.huaweicloud.com/programs/dev-program.html 使能⽅向选择个⼈在这个 计划权益中申请优惠券免费购买成功2、复现windows、linux权限维持技巧 windows权限维持: 隐藏⽂件:利⽤⽂件属性 ⽂件右键属性,勾…

OpenCL 编程步骤 2. 获取设备

clGetDeviceIDs 查询支持OpenCL设备列表: cl_int clGetDeviceIDs(cl_platform_id platform ,cl_device_type device_type ,cl_uint num_entries ,cl_device_id *devices ,cl_uint *num_devices )与clGetPlatformIDs函数类似,第一次调用时,devic…

记录一下:小华半导体HC32F448建立MDK工程

1.先到官网上下载文件 a>下载驱动库:HC32F448_DDL_Rev1.1.0.zip 驱动库中是包括了例程的。 b>下载样例:HC32F448_Template_Rev1.0.1.zip 可以直接复制官方的样例,就不用自己创建工程了。 c>下载芯片支持包:HC32F448_IDE_Rev1.0.1.zip 下载后双击安装即可。否则KEI…

4大应用场景揭秘:AI视频监控在养老院中的智能化管理与安全保障

随着人口老龄化的加剧,养老院的管理面临着越来越多的挑战。传统的人工巡查方式不仅难以做到全天候监控,而且存在响应迟缓、效率低下等问题。为了解决这些问题,思通数科推出的AI视频监控系统,利用人工智能技术提供了一种高效、智能化的解决方案。尤其在养老院的老人体征监控…

考勤管理系统

实现对用户信息的添加,查看,删除 实现对部门信息的添加,查看 实现用户登录功能,修改密码功能。 页面与之前的大相径庭。 还是一样的框架总体感觉换汤不换药,目前就是熟练度问题