Wecom(A.K.A. WeChat Work) Group Bot python API.
Project description
pywgb
Wecom(A.K.A. WeChat Work) Group Bot python API.
Homepage
Github
ChowRex/pywgb: Wecom(A.K.A Wechat Work) Group Bot python API.
Pypi
How to use
Pre-conditions
-
Create a Wecom Group Bot.
-
Copy the webhook URL or just the
key. It MUST contains an UUID (8-4-4-4-12), like:Webhook: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=UUIDKey: UUID
-
Install this package:
# Normally use this if you won't send voice message pip install -U pywgb # You can install full version by this pip install -U "pywgb[all]"
Send messages
Create a instance of SmartBot
from pywgb import SmartBot
KEY = "PASTE_YOUR_KEY_OR_WEBHOOKURL_HERE"
bot = SmartBot(KEY)
Basic usage
Text
msg = "This is a test Text message."
bot.send(msg)
# If you want to send message and mention someone at the same time, refer this.
kwargs = {
"mentioned_list": [
# If you know the userid
"userid",
# Use below for ALL people
"@all",
],
"mentioned_mobile_list": [
# If you know the phone number
"13800001111",
# Use below for ALL people
"@all",
]
}
msg = "Alert, this is an important message."
bot.send(msg, **kwargs)
Markdown
col = [bot.markdown_feature.green, bot.markdown_feature.gray, bot.markdown_feature.orange]
markdown = ''.join(col[idx % 3](ltr) for idx, ltr in enumerate("colorful"))
markdown = f"""
# TESTING
> Author: **Rex**
This is a {markdown} Markdown message
"""
bot.send(markdown)
News
articles = [
{
"title": "This is a test news",
"description": "You can add description here",
"url": "www.tencent.com",
# Here is the link of picture
"picurl": "https://www.tencent.com/img/index/tencent_logo.png"
},
]
bot.send(articles=articles)
Image
image = "Path/To/Your/Image.png" or "Path/To/Your/Image.jpg"
bot.send(file_path=image)
Voice
📢 You must install FULL version to avoid warning prompt.
voice = "Path/To/Your/Voice.amr" # BE ADVISED: ONLY support amr file
bot.send(file_path=voice)
File
file = "Path/To/Your/File.suffix"
bot.send(file_path=file)
Advanced usage
Upload temporary media (Materials only available in 3 days)
file = "Path/To/Your/File.suffix"
media_id = bot.upload(file)
print(media_id)
TextTemplateCard (Need more detail? click here.)
kwargs = {
"main_title": {
"title": "Test message",
"desc": "This is a test template text card message"
},
"emphasis_content": {
"title": "100",
"desc": "No meaning"
},
"quote_area": {
"type": 1,
"url": "https://work.weixin.qq.com/?from=openApi",
"title": "Title reference",
"quote_text": "Hello\nWorld!"
},
"sub_title_text": "This is sub-title",
"horizontal_content_list": [{
"keyname": "Author",
"value": "Rex"
}, {
"keyname": "Google",
"value": "Click to go",
"type": 1,
"url": "https://google.com"
}],
"jump_list": [{
"type": 1,
"url": "https://bing.com",
"title": "Bing"
}],
"card_action": {
"type": 1,
"url": "https://work.weixin.qq.com/?from=openApi",
}
}
bot.send(**kwargs)
NewsTemplateCard (Need more detail? click here.)
kwargs = {
"source": {
"icon_url":
"https://wework.qpic.cn/wwpic/252813_jOfDHtcISzuodLa_1629280209/0",
"desc":
"This is for testing",
"desc_color":
0
},
"main_title": {
"title": "Test message",
"desc": "This is a test template news card message"
},
"card_image": {
"url":
"https://wework.qpic.cn/wwpic/354393_4zpkKXd7SrGMvfg_1629280616/0",
"aspect_ratio":
2.25
},
"image_text_area": {
"type":
1,
"url":
"https://work.weixin.qq.com",
"title":
"Welcom to use pywgb",
"desc":
"This is a test message",
"image_url":
"https://wework.qpic.cn/wwpic/354393_4zpkKXd7SrGMvfg_1629280616/0"
},
"quote_area": {
"type": 1,
"url": "https://work.weixin.qq.com/?from=openApi",
"title": "Title reference",
"quote_text": "Hello\nWorld!"
},
"vertical_content_list": [{
"title": "Hi, there",
"desc": "Welcome to use"
}],
"horizontal_content_list": [{
"keyname": "Author",
"value": "Rex"
}, {
"keyname": "Google",
"value": "Click to go",
"type": 1,
"url": "https://google.com"
}],
"jump_list": [{
"type": 1,
"url": "https://bing.com",
"title": "Bing"
}],
"card_action": {
"type": 1,
"url": "https://work.weixin.qq.com/?from=openApi",
}
}
bot.send(**kwargs)
Use the specified bot
You can refer below to use specify kind of bot.
from pywgb.bot import TextBot, MarkdownBot, ImageBot, NewsBot
from pywgb.bot import FileBot, VoiceBot, TextCardBot, NewsCardBot
KEY = "PASTE_YOUR_KEY_OR_WEBHOOKURL_HERE"
bot_type = TextBot
bot = bot_type(Key)
bot.send("Some thing here")
This might be useful when you want to send voiceor image as a file (SmartBot won't send image or voice as file).
from pywgb.bot import FileBot
KEY = "PASTE_YOUR_KEY_OR_WEBHOOKURL_HERE"
voice = "Path/To/Your/Voice.amr"
image = "Path/To/Your/Image.png" or "Path/To/Your/Image.jpg"
bot = FileBot(KEY)
bot.send(file_path=voice)
bot.send(file_path=image)
Official Docs
Only Chinese doc: 群机器人配置说明 - 文档 - 企业微信开发者中心
Roadmap
-
v0.0.1: 🎉 Initial project. Offering send
TextandMarkdowntype message. -
v0.0.2: 🖼️ Add
Imagetype message support;- Add overheat detect function and unified exception handling
-
v0.0.3: 📰 Add
Newstype message support;- Move bots into a new module:
bot
- Move bots into a new module:
-
v0.0.4: 📂 Add
Filetype message support;- Refactor
botmodule
- Refactor
-
v0.0.5: 🗣️ Add
Voicetype message support.- Refactor
decomodule - Add
verify_filedecorator - Introverted parameters check errors
- Add more content into README.md
- Refactor
-
v0.0.6: 🩹 Add
VoiceandFiletype size check. -
v0.0.7: 🗒️ Add
TextCardtype message support. -
v0.0.8: 🗃️ Add
NewsCardtype message support. -
v0.0.9: ♻️ Refactor code.
-
v0.1.0: 🔧 Fix color bug when use markdown type
-
v0.1.1: ⏺️ Refactor all code logic again, I don't like mess and complex.
-
v0.1.2: 💪 Add a SmartBot class
- Add a SmartBot class
- Enhanced
markdownbot class - Add a txt file for SmartBot testing
Filetype - Add empty message verify for Text and Markdown
- Add a new markdown test unit
- Fully test SmartBot class
-
v1.0.0: 👍 First FULL capacity stable version release.Fix bugs and so on.
-
v1.0.1: 🐛 Fix some bugs and fulfill coverage.
-
v1.0.2: 🆕 Add
Markdown_v2type support. -
v1.0.3: 🐛 Fix
Markdown_v2attributemarkdown_featureto class method.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pywgb-1.0.3.tar.gz.
File metadata
- Download URL: pywgb-1.0.3.tar.gz
- Upload date:
- Size: 22.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c14ac6626b61b1dd99de465d1595ebc66711f423afcbeee1d402de109e7f197
|
|
| MD5 |
f426f8623e46c520bfde2e7e89e5bfdd
|
|
| BLAKE2b-256 |
326a389df93ecdd93360ae1eab489bff8fef417886b697aa6eefca1a5df26bad
|
Provenance
The following attestation bundles were made for pywgb-1.0.3.tar.gz:
Publisher:
release.yml on ChowRex/pywgb
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pywgb-1.0.3.tar.gz -
Subject digest:
4c14ac6626b61b1dd99de465d1595ebc66711f423afcbeee1d402de109e7f197 - Sigstore transparency entry: 242878157
- Sigstore integration time:
-
Permalink:
ChowRex/pywgb@cd02a5994ebcfe660bc572555f7846121e590749 -
Branch / Tag:
refs/tags/v1.0.3 - Owner: https://github.com/ChowRex
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cd02a5994ebcfe660bc572555f7846121e590749 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pywgb-1.0.3-py3-none-any.whl.
File metadata
- Download URL: pywgb-1.0.3-py3-none-any.whl
- Upload date:
- Size: 24.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8aaea2342cf5c89c6287bd5abbb0498bdf1b7c46a551798c652fe1ef572154f1
|
|
| MD5 |
9037bbc2d802787cf74a8f285ca1325b
|
|
| BLAKE2b-256 |
b1ccfa75a2051729a8ae8564cf2811126558f25625a293ef767b0b286c2d42a9
|
Provenance
The following attestation bundles were made for pywgb-1.0.3-py3-none-any.whl:
Publisher:
release.yml on ChowRex/pywgb
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pywgb-1.0.3-py3-none-any.whl -
Subject digest:
8aaea2342cf5c89c6287bd5abbb0498bdf1b7c46a551798c652fe1ef572154f1 - Sigstore transparency entry: 242878158
- Sigstore integration time:
-
Permalink:
ChowRex/pywgb@cd02a5994ebcfe660bc572555f7846121e590749 -
Branch / Tag:
refs/tags/v1.0.3 - Owner: https://github.com/ChowRex
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cd02a5994ebcfe660bc572555f7846121e590749 -
Trigger Event:
push
-
Statement type: