本帖最后由 Fujj 于 2022-4-1 09:05 编辑
封装了一些企业微信机器人的调用方法:发送文字、发送图片、发送文件
[Python] 纯文本查看 复制代码 import requests
import hashlib
import base64
class WeChatBot:
def __init__(self,key):
self.key = key
self.wxurl = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=' + key
def send_file(self,name,filepath):
"""
:param name: 发送的文件名字,用于在企业微信上展示的
:param filepath: 本地实际文件路径
"""
fl = open(filepath, 'rb')
files = {'files': (name, fl, 'application/octet-stream', {'Expires': '0'})}
url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key='+self.key+'&type=file'
req = requests.post(url, files=files).json()
# 把文件上送至企业微信服务器,生成media_id
if req['media_id'] is not None:
send_json = {
"msgtype": "file",
"file": {
"media_id": req['media_id']
}
}
requests.post(send_url=self.wxurl, json=send_json)
def send_message(self,content='',mentioned_list=[],mentioned_mobile_list=[] ):
"""
此方法用于发送文字消息
:param content: 文字内容
:param mentioned_list: (不是必填项)userid的列表,提醒群中的指定成员(@某个成员),@all表示提醒所有人,如果开发者获取不到userid,可以使用mentioned_mobile_list
:param mentioned_mobile_list:(不是必填项)手机号列表,提醒手机号对应的群成员(@某个成员),@all表示提醒所有人
"""
data = {
"msgtype": "text",
"text": {
"content": content,
"mentioned_list":mentioned_list,
"mentioned_mobile_list":mentioned_mobile_list
}
}
res = requests.post(self.wxurl,json=data).json()
print(res)
def send_img(self,filename):
"""
此方法用于发送图片
:param filename: 图片文件的路径
"""
png = filename
with open(png, "rb") as f:
md = hashlib.md5(f.read())
res1 = md.hexdigest()
with open(png, "rb") as f:
base64_data = base64.b64encode(f.read())
im_json = {
"msgtype": "image",
"image": {
"base64": str(base64_data, 'utf-8'),
"md5": res1
}
}
requests.post(self.wxurl, json=im_json)
使用方法:
[Python] 纯文本查看 复制代码
if __name__ == '__main__':
bot = WeChatBot('3ee1db5e-3b11113-41d2-81f0-8243224fa5133d')
bot.send_file(name='测试.xlsx',filepath='./world.xlsx')
bot.send_message(content='1111',mentioned_list=['@all'])
bot.send_img(filename='./world/img.png')
|