https://github.com/tbbatbb/weworkbot
用于企业微信自建应用的机器人代码库,实现消息回复、消息推送等功能。
https://github.com/tbbatbb/weworkbot
chatbot pypi-package qiye-wechat qiyeweixin wechat wechat-bot wework wework-app wework-bot wxwork
Last synced: about 1 year ago
JSON representation
用于企业微信自建应用的机器人代码库,实现消息回复、消息推送等功能。
- Host: GitHub
- URL: https://github.com/tbbatbb/weworkbot
- Owner: tbbatbb
- Created: 2024-05-13T02:00:56.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2024-05-22T01:00:31.000Z (about 2 years ago)
- Last Synced: 2024-05-22T01:03:57.246Z (about 2 years ago)
- Topics: chatbot, pypi-package, qiye-wechat, qiyeweixin, wechat, wechat-bot, wework, wework-app, wework-bot, wxwork
- Language: Python
- Homepage:
- Size: 43.9 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# WeWorkBot
为企业微信自建应用构建的机器人,能够实现对各种类型消息的被动回复和主动发送。
现支持:
- 接收处理文本(`text`)、图片(`image`)、语音(`voice`)、视频(`video`)、位置(`location`)和链接(`link`)等消息类型;
- 以文本(`text`)、图片(`image`)、语音(`voice`)、视频(`video`)、图文(`news`)等消息类型进行被动回复;
- 以文本(`text`)、图片(`image`)、语音(`voice`)、视频(`video`)、Markdown(`markdown`)、图文(`mpnews`)、图文(`news`)、文本卡片(`textcard`)、文件(`file`)等消息类型主动发送应用消息;
- 文件素材管理,包括上传临时文件、上传图片、异步上传文件、下载文件等;
- 发起群聊、更改群聊信息、获取群聊会话、向群聊发送应用消息等功能(具体限制请参考[官方文档](https://developer.work.weixin.qq.com/document/path/90244));
## 依赖
依赖的库不多,可以参考`requirements.txt`。
## 安装
**目前支持`Python >= 3.9`,其余版本未经测试。**
Python库现已发布,可以通过`pip install wwbot`进行安装。
## 示例代码
如下示例代码展示`WeWorkBot`的简单使用。该示例展示了如何回复**文本类型**(`text`)的消息:
```python
from flask import Flask
from wwbot import WWBot
from wwbot.msg import Message, TextMessage
# 注册一个文本消息的事件监听
@WWBot.on(WWBot.TEXT)
def text_handler(msg:TextMessage) -> Message:
'''
msg参数代表接收到的消息被解析后的实例
'''
# 从消息中提取消息内容字段
# 关于接收到的消息格式具体定义,参考 https://developer.work.weixin.qq.com/document/path/90239
msg_content:str = msg.content
# 作为示例,直接使用接收到的消息作为回复,相当于一个 echo bot
return TextMessage(msg.from_username, msg.to_username, msg.agent_id, msg_content)
# WeWorkBot运行在Flask框架之上
app:Flask = Flask('WWBot')
# 企业ID
corp_id:str = 'corp_id'
# 企业自建应用的secret 可以创建自建应用后在应用详情页面查看
corp_secret:str = 'corp_secret'
# 自建应用启用API接收消息时,配置的“Token”参数
token:str = 'token'
# 自建应用启用API接收消息时,配置的“EncodingAESKey”参数
aes_key:bytes = base64.b64decode('aes_key')
# 接收消息回调时的url path部分
callback_path:str = '/wwbot'
# 配置机器人
WWBot.config(app, corp_id, corp_secret, token, aes_key, callback_path=callback_path)
if __name__ == '__main__':
app.run('0.0.0.0', 31221)
```
更加完整的例子请参考`exampls/echo_bot.py`。
## TODO List
- [x] 将“接口验证”和“消息接收”的url部分合并,不需要两次注册
- [x] 实现临时资源上传,从而能够发送任意语音或是视频等多媒体消息
- [x] 支持更多的应用消息类型
- [x] 将消息的定义和转换变得更加优雅
- [x] 创建成python库。现在这个方式,不够优雅
- [x] ~~完善Doc和Readme,包括获取corp_id等参数的方法~~(不写了,懒。总共也就几个接口,根本不够写)
## 说明
代码随缘更新,主要看有没有空。一般会在周末更新比较频繁。