Python接入企业微信推送信息到内部群里
前言 之前一篇文章提到了使用wechatpy库来实现企业微信应用登录:Django + Taro 前后端分离项目实现企业微信登录 其实这个库可以实现的功能非常多,基本微信开发涉及到的功能都能实现。 本文介绍一个很常用的场景:实时推送信息到企业微信群里。 安装 首先安装wechatpy库 pip install wechatpy 如果运行的时候提示需要安装其他库(比如加解密相关的)那就按照提示安装,
目录15 个章节
前言
之前一篇文章提到了使用wechatpy库来实现企业微信应用登录:Django + Taro 前后端分离项目实现企业微信登录
其实这个库可以实现的功能非常多,基本微信开发涉及到的功能都能实现。
本文介绍一个很常用的场景:实时推送信息到企业微信群里。
安装
首先安装wechatpy库
pip install wechatpy
如果运行的时候提示需要安装其他库(比如加解密相关的)那就按照提示安装,这里不啰嗦了哈
创建企业微信应用
首先去企业微信后台创建一个应用,把应用编号(app_id)记录下来
顺便去后台把企业编号(corp_id)和密匙(secret)也记录下来
开始代码了
没啥别的,开始写代码
创建应用对象
直接上代码
from wechatpy.work import WeChatClient
from wechatpy.work.client.api import WeChatAgent
client = WeChatClient('corp_id', 'secret')
agent: WeChatAgent = client.agent.get('app_id')
这里面要填的几个ID都是上面提到的
有了这个 agent 对象就可以操作这个企业微信应用了~
创建聊天对象
要发信息,首先得有个聊天对象,这不,我们来创建一个
from wechatpy.work.client.api import WeChatAppChat
chat = WeChatAppChat(client=client)
新建群
前面说到要发信息到群里,那还得建一个群
CHAT_ID = 'test'
result = chat.create(chat_id=CHAT_ID, name='群里名称', owner='群主ID',
user_list=['群主ID', '群员ID1', '群员ID2', '群员ID3'])
就是这样,简单易懂,建群的同时在 user_list 参数指定要邀请的群员ID
(这些群主ID、群员ID请自行在企业微信后台查询,就是成员的ID)
封装一下常用操作
发送文本信息
def send_text(content):
print(chat.send_text(CHAT_ID, content))
就是简单的发送文本信息,效果如下:

发送文本卡片
def send_text_card(title, description, url, btn_text):
print(chat.send(CHAT_ID, 'textcard',
title=title,
description=description,
url=url,
btntxt=btn_text))
这里我使用了官方的例子
send_text_card('中秋节礼品领取',
'<div class=\"gray\">2016年9月26日</div> <div class=\"normal\"> 恭喜你抽中iPhone 7一台,领奖码:520258</div><div class=\"highlight\">请于2016年10月10日前联系行 政同事领取</div>',
'https://work.weixin.qq.com/', '谨防上当')
效果如下:

发送图片
def send_image(image_file):
media = WeChatMedia(client)
with open(image_file, 'rb') as f:
result = media.upload('image', f)
print(result)
if 'media_id' in result:
print(chat.send(CHAT_ID, 'image', media_id=result['media_id']))
很简单,参数传入图片路径就行
效果如下

发送Markdown格式内容
这个我测试了发现支持的markdown格式很有限,不要抱太大期望
def send_markdown(md_file):
with open(md_file, 'r', encoding='utf-8') as f:
print(chat.send(CHAT_ID, 'markdown', content=f.read()))
随便找了一段来发,效果如下

可以看到连markdown的表格都不支持……
群聊重命名
没啥好说的
def rename_chat(new_name):
print(chat.update(CHAT_ID, name=new_name))
send_text(f'群聊名称已修改为:{new_name}')
邀请用户
def invite(user_id):
print(chat.update(CHAT_ID, add_user_list=[user_id]))
send_text(f'邀请用户:{user_id}')
OK
OK,写完了,就是这样,很简单
使用到企业微信推送的场景还是比较多的,比如在Sentry监控里加入一个webhook,监控到项目报错就把报错信息推送到群里,方便随时掌握项目报错信息~
我们目前的应用场景还有一个是推送一些报表到群里,可以看到这些表格都是图片格式(没办法,谁叫企业微信不支持完整的markdown格式……)
效果如下

对了,关于用Python生成表格图片的,我下次再写~~(水)~~一篇,溜了~
_EOF_
Python接入企业微信推送信息到内部群里
- 本文作者:
- 程序设计实验室
- 版权声明:
- 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
相关文章
后 Django 时代:SQLAlchemy 2.0、Tortoise 与 Piccolo 三大异步 ORM 选型指南
SQLAlchemy 2.0 才是工业级稳定,Alembic 迁移能力谁用谁知道。Tortoise ORM 是 Django 老玩家的舒适区,但灵活度有限。Piccolo 语法现代但生态太嫩,适合玩票。别再迷信 Stars,生产环境看的是谁扛造。
2026-04-10 · Python · 约 1 分钟
我用Qt和Python开发了一个视频合并工具
想合并视频,但是却找不到比较好用的工具,很多都要收费,我想着「这破功能还得收费?」,于是决定自己搞一个,一开始用Python做了一个,效果还不错,完美完成了我的视频合并任务,不过没有图形界面,想分享给朋友一起用也没办法,于是昨天用Qt写了个图形界面套上去,中间还是遇到一些问题的,通过这篇文章记录一下。 软件的界面就是这样啦,用Qt Designer随便拖出来的,和VS拖控件也差不了多少。 用起来挺
2021-12-18 · Python · 约 1 分钟
python实现解析markdown文档中的图片,并且保存到本地~
背景 前阵子简书好像说是凉了,搞得我有点小慌,毕竟我的大部分博客都是放在简书上面的,虽然简书提供了打包导出功能,但是只能导出文字,图片的话还是存在简书服务器上面,再加上我一直想要重新做一个个人博客,于是就有了这篇文章。 思路 首先是要解析markdown文档,然后获取到其中的所有图片,再把图片按md文件分好目录保存。 解析markdown文档 这里我用了misaka模块,据说是python的mar
2021-12-18 · Python · 约 1 分钟
Python-缓存机制与-functools-lru_cache
缓存是一种将定量数据加以保存以备迎合后续获取需求的处理方式,旨在加快数据获取的速度。数据的生成过程可能需要经过计算,规整,远程获取等操作,如果是同一份数据需要多次使用,每次都重新生成会大大浪费时间。所以,如果将计算或者远程请求等操作获得的数据缓存下来,会加快后续的数据获取需求。 先来一个简单的例子以了解缓存机制的概念: # -*- coding: utf-8 -*- import random
2022-05-27 · Python · 约 1 分钟
讨论
共 0 条加载评论中…