-
2020-11-25 23:56:45
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 2017-07-25 编写
import json
import sys
import urllib, urllib2
"""
CorpID 企业ID
Secret 应用密钥
"""
CorpID = ‘‘
Secret = ‘‘
touser = ‘@all‘
content = ‘‘
#获取access_token
def getToken(CorpID, Secret):
url = ‘https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s‘ % (CorpID, Secret)
req = urllib2.Request(url)
result = urllib2.urlopen(req)
access_token = json.loads(result.read())
return access_token[‘access_token‘]
#发送消息
def tonews(access_token, content):
url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + access_token
"""
touser 成员 @all 就是所有
toparty 部门ID @all 就是所有
msgtype 文本类型
agentid 企业应用ID
content 内容
safe 是否保密 0是不保密
"""
values = {
"touser" : touser,
"toparty" : ‘2‘,
"msgtype" : "text",
"agentid" : 1,
"text" : {
"content" : content
},
"safe" :"0"
}
send_data = json.dumps(values)
send_request = urllib2.Request(url, send_data)
response = json.loads(urllib2.urlopen(send_request).read())
if response[‘errcode‘] == 0:
print ‘发送消息成功‘
if __name__ == ‘__main__‘:
access_token = getToken(CorpID, Secret)
print "获取token成功"
content = ‘\n‘.join(sys.argv[1:])
if not content:
content = "测试成功"
tonews(access_token, content)
[root@400ec7d4b418 /]# python wechat.py 456 678 //需要传递的数据
原文地址:http://xiaocuik.blog.51cto.com/12090846/1968648
更多相关内容 -
Python3调用微信企业号API发送文本消息代码示例
2020-12-23 14:31:32本文主要向大家分享了Python3调用微信企业号API发送文本消息示例的有关代码,具体如下: #!/usr/bin/env python # -*- coding:utf-8 -*- import urllib.request import json import sys import logging touser = '@... -
python调用企业微信api实现发送群机器人消息实例
2020-12-03 18:23:25importsysimportrequestsimportargparseimportre#映射关系user_info={}classSendMsg2QYRot():"""1、发送消息到企业微信机器人;2、因为@功能只能用text...3、企业微信api:https://work.weixin.qq.com/help?person_...importsysimportrequestsimportargparseimportre
#映射关系
user_info={}classSendMsg2QYRot():"""1、发送消息到企业微信机器人;
2、因为@功能只能用text消息,所有需要先发markdown格式的消息,再发一条msg@失败的人;
3、企业微信api:https://work.weixin.qq.com/help?person_id=1&doc_id=13376#markdown%E7%B1%BB%E5%9E%8B/markdown%E7%B1%BB%E5%9E%8B"""
def __init__(self, url=None):
self.url=url
self.session=requests.Session()def send_fail_msg(self, floder_name="wanghuiwu",duration=None,testcase=None,report_url=None):
notice_msg={"msgtype": "markdown","markdown": {"content": """{}的测试报告\n>测试结果:失败~\n>运行时长:{}\n>用例数(success/fail):{}({}/{})\n>[点击查看详情]({})""".format(user_info[floder_name][0],duration,self.split_str(testcase)[0] ,self.split_str(testcase)[1],self.split_str(testcase)[2],report_url),
}
}
at_msg={"msgtype": "text","text": {"content": "","mentioned_mobile_list": [user_info[floder_name][1]]}}
res= self.session.post(url=self.url, json=notice_msg, verify=False)
res1= self.session.post(url=self.url, json=at_msg, verify=False)if not (res.status_code == 200 and res1.status_code == 200):
sys.exit(1)defsend_report_msg(self,total,success,fail_count,durations):""":param durations: 运行总时长
:param testcases: 用例总数
:return:"""notice_msg={"msgtype": "markdown","markdown": {"content": """>用例总数为:{}({}/{})\n>运行总时长:{} senconds""".format(total,success,fail_count,durations)
}
}
at_msg= {"msgtype":"text","text":{"content":"","mentioned_list":["@all"]}}
r= self.session.post(url=self.url,json=notice_msg,verify=False)
r1= self.session.post(url=self.url, json=at_msg, verify=False)if not (r.status_code == 200 and r1.status_code == 200):
sys.exit(1)defsplit_str(self,testcase):"""获取单个报告的用例数并切割成一个list
:param str:
:return:"""self.new_str= re.split(r‘[ (/)]+‘, str(testcase))returnself.new_strif __name__ == ‘__main__‘:
parser= argparse.ArgumentParser(description="给企业微信推送消息")
parser.add_argument(‘-U‘, ‘--url‘, default="", help="企业机器人webhook")
parser.add_argument(‘-F‘, ‘--floder‘, default=‘common‘, help="用例目录")
parser.add_argument(‘-R‘, ‘--report‘, default=‘http://140.143.140.118:8000/22-20200514181951-wanghuiwu.html‘, help="测试报告路径")
parser.add_argument(‘-D‘,‘--duration‘,default=‘80s‘,help="运行时长")
parser.add_argument(‘-T‘,‘--testcase‘,help=‘用例数‘)
parser.add_argument(‘-t‘,‘--total‘,help=‘用例总数‘)
parser.add_argument(‘-s‘,‘--success‘,help=‘成功用例总数‘)
parser.add_argument(‘-f‘,‘--fail_count‘,help=‘失败用例总数‘)
parser.add_argument(‘-d‘,‘--durations‘,help=‘运行总时长‘)
args=parser.parse_args()#if len(sys.argv) == 1:
## no argument passed
#parser.print_help()
#sys.exit(0)
sm= SendMsg2QYRot(url=args.url)
#根据业务判断发哪那部分消息for i in sys.argv[3::2]:#print("**********",i)
if i in [‘-F‘]:
sm.send_fail_msg(report_url=args.report, duration=args.duration, testcase=args.testcase,floder_name=args.floder)elif i in [‘-t‘]:
sm.send_report_msg(total=args.total,success=args.success,fail_count=args.fail_count, durations=args.durations)else:#parser.print_help()
sys.exit(0)
-
企业微信api接口实现
2018-07-27 15:48:47企业微信api接口实现 企业微信api接口实现 企业微信api接口实现 -
python3调用企业微信api!开发一款属于自己的企业微信
2020-10-16 15:01:31python3调用企业微信api 最后更新时间:2020/5/11 前段时间,我将企业微信官方提供的python接口代码的部分功能修改成了python3的,并且自己也使用并测试过部分功能; 因为并没有将公司的敏感信息抹去,所以代码...python3调用企业微信api
最后更新时间:2020/5/11
前段时间,我将企业微信官方提供的python接口代码的部分功能修改成了python3的,并且自己也使用并测试过部分功能;
因为并没有将公司的敏感信息抹去,所以代码一直没有更新到github;
等度过了springboot的学习期并完成开发任务就来重新整理一版本;
项目地址: RandolphCYG/husky_weworkapi
注意: 目前还没提交修改的测试代码,2020/5/11 本周将整理
0.初期代码
这是自己写的发消息的测试代码(非接口),以测试一下调用企业微接口是不是需要很多东西,后来发现,完全没这个必要。
import json import sys import urllib import urllib.request from urllib import request, parse CORPID = '' # CorpID 企业ID CORPSECRET = '' # Secret 应用密钥 touser = '' # userid content = 'WECHAT2LDAP 测试' headers = { "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"} def getToken(corpid, corpsecret): """功能获取access_token corpid:企业ID corpsecret:应用密钥 """ url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s' % (corpid, corpsecret) req = urllib.request.Request(url, headers=headers) results = json.loads(urllib.request.urlopen(req).read()) print(results) return results['access_token'] def sendmsg(access_token, content): """功能:发送消息 """ url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + access_token """ touser 成员 @all 就是所有 toparty 部门ID @all 就是所有 msgtype 文本类型 agentid 企业应用ID content 内容 safe 是否保密 0是不保密 """ values = { "touser" : touser, "toparty" : '2', "msgtype" : "text", "agentid" : 1000005, # 新建企业微信应用 "text" : { "content" : content }, "safe" :"0" } send_data = json.dumps(values).encode() send_request = urllib.request.Request(url, send_data, headers=headers) response = json.loads(urllib.request.urlopen(send_request).read()) print(response) if response['errcode'] == 0: print('发送消息成功') if __name__ == '__main__': access_token = getToken(CORPID, CORPSECRET) content = "发送消息测试" sendmsg(access_token, content)
1.python3企业微信接口代码魔改(例子)
1.1企业微信准备
通讯录同步 应用开启API同步:
确定一个部门的ID: 测试部门ID:2 ,下面通过调API批量从AD域中将用户同步进企业微信
1.2【魔改企业微信api源码&使用】准备
文件位置 C:\Users\randolph\Desktop\wechatapi\api\examples\ADTest.py
1.2.1批量从AD域导入用户到企业微信
from ldap3 import Server, Connection, ALL from api.src.CorpApi import * from api.src.AbstractApi import * from api.examples.TestConf import * import logging # AD域 LDAP_IP = '192.168.255.222' # LDAP服务器IP LDAP_ADMIN_USER = 'CN=Administrator,CN=Users,DC=bilibili,DC=com' # LDAP服务器管理员账户 LDAP_ADMIN_PWD = 'QQqq#123' # LDAP服务器管理员密码 INF = (LDAP_IP, LDAP_ADMIN_USER, LDAP_ADMIN_PWD) # AD域信息汇总 SEARCH_BASE = "OU=B站,DC=bilibili,DC=com" # 搜索请求的基础,在这个OU下开始搜索 # 企业微信CorpApi接口 api = CorpApi(TestConf['CORP_ID'], TestConf['CONTACT_SYNC_SECRET']) # 日志设置 LOG_FORMAT = "%(asctime)s %(levelname)s %(filename)s %(lineno)d %(message)s" logging.basicConfig(filename='localAD.log', level=logging.INFO, format=LOG_FORMAT) def ad2wx(conn, search_base): """从AD域到企业微信导入用户(可邀请),修改了请求包体,测试通过; 代码质量需要再次检查优化; """ conn.search(search_base, '(objectclass=person)', attributes=['*']) # 从AD域搜用户并遍历 entry = conn.entries for i, user in enumerate(entry): # print(i+1, user) try: request_package = { "userid": str(user.sAMAccountName), # 由AD的必填字段登录名[sAMAccountName]到微信的[账号]字段 "name": re.sub("[A-Za-z0-9]", "", str(user.cn)), # 由AD的必填字段cn例[小明2314] 截取数字之外的文字[小明] "enable": 1, # 启用用户 "to_invite": False, # 默认邀请,测试时候不邀请 "department": [2], # 部门是[测试],还没有改成同步部门【todo】 } if hasattr(user, 'telephoneNumber') or hasattr(user, 'mail'): # 手机号/邮箱必须有一项(邀请需要) if hasattr(user, 'telephoneNumber'): request_package['mobile'] = str(user.telephoneNumber) if hasattr(user, 'mail'): request_package['email'] = str(user.mail) else: logging.error('【' + str(user.sAMAccountName) + '】 ' + "同步用户失败,用户未配置【手机号】与【邮箱】!") continue if hasattr(user, 'title'): request_package['position'] = str(user.title) request_package['external_position'] = str(user.title) response = api.httpCall(CORP_API_TYPE['USER_CREATE'], request_package) if response['errcode'] == 0: pass else: print("@@@@创建错误,已经存在或其他错误" + str(user.displayName)) except ApiException as e: logging.debug(e.errCode, e.errMsg) except Exception as e: logging.debug('【' + str(user.sAMAccountName) + '】 ' + str(e), exc_info=True) # ,stack_info=True if __name__ == '__main__': LDAP_CON = ldap_con_ssl(*INF) ad2wx(LDAP_CON, SEARCH_BASE)
导入的所有用户例子:
导入的单个用户示例:
1.2.2批量从AD域导入OU到企业微信
def ad_ou2wx(conn, search_base): """每一层OU下员工的同步思路:结合上一步代码,将search_base根据每一次生成的子OU变化即可 """ # TODO: 检查优化此部分代码,带上对应OU下员工的同步导入 conn.search(search_base, '(objectclass=organizationalUnit)', attributes=['distinguishedName']) entry = conn.entries for i, c in enumerate(entry): ou_list = [x.split('OU=')[1] for x in str(c.distinguishedName).split(',')[:-2][::-1]] ou_list.insert(0, '测试') print(i+3, ou_list) response = api.httpCall(CORP_API_TYPE['DEPARTMENT_LIST']) for m in response['department']: if m['name'] == ou_list[-2]: # m是查询出部门列表信息,根据部门名字name查询出父ID p_id = m['id'] # 父ID request_package = { "name": ou_list[-1], # 必须,中文名 "parentid": p_id, # 必须,父id "id": i+3, # 不必须,子id,为了方便下一层的创建,部门的ID为自然数 } try: response = api.httpCall(CORP_API_TYPE['DEPARTMENT_CREATE'], request_package) if response['errcode'] == 0: logging.info('创建【' + ou_list[-1] + '】成功') except Exception as e: logging.error(e) break # 找到父子对应信息,就可以创建完子的部门,然后中断内层循环即可 if __name__ == '__main__': LDAP_CON = ldap_con_ssl(*INF) # ad2wx(LDAP_CON) ad_ou2wx(LDAP_CON, SEARCH_BASE)
企业微信批量导入成功举例:
日志举例:
附带批量删除部门department的代码【注意部门下不能有OU或人员,没写删这些的,测试时候经常需要批量删除空的depart】:
for n in range(3, 8)[::-1]: print(n) req_pack = { 'id': str(n), } res = api.httpCall(CORP_API_TYPE['DEPARTMENT_DELETE'], req_pack)
1.2.3 【总结】批量从AD域导入OU以及OU下面的用户到企业微信
将上面的流程优化整合了一下,会在【测试】部门下面完整的 将AD域的多级OU及每一层OU下的用户导入企业微信 !
待优化点:错误处理、search搜索参数(保证内存占用尽量低)
from ldap3 import Server, Connection, ALL, ASYNC, BASE, LEVEL, SUBTREE from api.src.CorpApi import * from api.src.AbstractApi import * from api.examples.TestConf import * import logging # AD域 LDAP_IP = '192.168.255.222' # LDAP服务器IP LDAP_ADMIN_USER = 'CN=Administrator,CN=Users,DC=bilibili,DC=com' # LDAP服务器管理员账户 LDAP_ADMIN_PWD = 'QQqq#123' # LDAP服务器管理员密码 INF = (LDAP_IP, LDAP_ADMIN_USER, LDAP_ADMIN_PWD) # AD域信息汇总 SEARCH_BASE = "OU=B站,DC=bilibili,DC=com" # 搜索请求的基础,在这个OU下开始搜索 # 企业微信CorpApi接口 api = CorpApi(TestConf['CORP_ID'], TestConf['CONTACT_SYNC_SECRET']) # 日志设置 LOG_FORMAT = "%(asctime)s %(levelname)s %(filename)s %(lineno)d %(message)s" logging.basicConfig(filename='localAD.log', level=logging.INFO, format=LOG_FORMAT) def ad2wx(conn, search_base, ou_id): """从AD域到企业微信导入用户(可邀请),修改了请求包体,测试通过; 代码质量需要再次检查优化; """ conn.search(str(search_base), '(objectclass=person)', attributes=['*'], search_scope=LEVEL) # 从AD域搜用户并遍历,LEVEL代表只搜索此OU下的用户 entry = conn.entries for i, user in enumerate(entry): print(i+1, user.sAMAccountName) try: request_package = { "userid": str(user.sAMAccountName), # 由AD的必填字段登录名[sAMAccountName]到微信的[账号]字段 "name": re.sub("[A-Za-z0-9]", "", str(user.cn)), # 由AD的必填字段cn例[小明2314] 截取数字之外的文字[小明] "enable": 1, # 启用用户 "to_invite": False, # 默认邀请,测试时候不邀请 "department": [ou_id], # 部门是对应AD域中所在OU } if hasattr(user, 'telephoneNumber') or hasattr(user, 'mail'): # 手机号/邮箱必须有一项(邀请需要) if hasattr(user, 'telephoneNumber'): request_package['mobile'] = str(user.telephoneNumber) if hasattr(user, 'mail'): request_package['email'] = str(user.mail) else: logging.error('【' + str(user.sAMAccountName) + '】 ' + "同步用户失败,用户未配置【手机号】与【邮箱】!") continue if hasattr(user, 'title'): request_package['position'] = str(user.title) request_package['external_position'] = str(user.title) response = api.httpCall(CORP_API_TYPE['USER_CREATE'], request_package) if response['errcode'] == 0: pass else: print("@@@@创建错误,已经存在或其他错误" + str(user.displayName)) except ApiException as e: logging.debug(e.errCode, e.errMsg) except Exception as e: logging.debug('【' + str(user.sAMAccountName) + '】 ' + str(e), exc_info=True) # ,stack_info=True def ad_ou2wx(conn, search_base): """每一层OU下员工的同步思路:结合上一步代码,将search_base根据每一次生成的子OU变化即可,并将Ou_id带入 """ conn.search(search_base, '(objectclass=organizationalUnit)', attributes=['*']) entry = conn.entries for i, c in enumerate(entry): # print(c.distinguishedName) ou_list = [x.split('OU=')[1] for x in str(c.distinguishedName).split(',')[:-2][::-1]] ou_list.insert(0, '测试') print(i+3, ou_list) response = api.httpCall(CORP_API_TYPE['DEPARTMENT_LIST']) for m in response['department']: if m['name'] == ou_list[-2]: # m是查询出部门列表信息,根据部门名字name查询出父ID p_id = m['id'] # 父ID ou_id = i+3 request_package = { "name": ou_list[-1], # 必须,中文名 "parentid": p_id, # 必须,父id "id": ou_id, # 不必须,子id,为了方便下一层的创建,部门的ID为自然数 } try: response = api.httpCall(CORP_API_TYPE['DEPARTMENT_CREATE'], request_package) if response['errcode'] == 0: logging.info('创建【' + ou_list[-1] + '】成功') # 这里可以将OU下面的用户查询并导入 sear_base = c.distinguishedName ad2wx(conn, sear_base, ou_id) except Exception as e: logging.error(e) break
效果:
完整项目代码获取后台私信小编01
-
python调用企业微信接口
2019-07-31 18:40:02python调用企业微信接口实现关联添加用户 # --*-- coding: utf-8 --*-- import json import urllib2 coreID = secret = apisecret = def getToken(coreID, apisecret): url = '...python调用企业微信接口实现关联添加用户
# --*-- coding: utf-8 --*-- import json import urllib2 coreID = secret = apisecret = agent_id =
获取token:
def getToken(coreID, apisecret): url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s' % (coreID, apisecret) req = urllib2.Request(url) result = urllib2.urlopen(req) access_token = json.loads(result.read()) #print access_token['access_token'] return access_token['access_token']
添加用户:
def AddWechartUser(userid, name, mobile, email, groupid): token = getToken(coreID, apisecret) url = 'https://qyapi.weixin.qq.com/cgi-bin/user/create?access_token=%s' % token values = { "userid": userid, "name": name, "mobile": mobile, "email": email, "department": groupid, } add_user = json.dumps(values) request = urllib2.Request(url, add_user) response = json.loads(urllib2.urlopen(request).read()) #print response if response['errcode'] == 0: return "添加成功" return response['errmsg']
发送告警:
def SendMsg(msg, touser, toparty): #这里以text为例,touser和toparty不可同时为空 token = getToken(coreID, secret) msgtype = "text" url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s' % token values = { "touser": touser, "toparty": toparty, "msgtype": msgtype, "agentid": agent_id, "text": { "content": msg } } send = json.dumps(values) request = urllib2.Request(url, send) response = json.loads(urllib2.urlopen(request).read()) if response['errcode'] != 0: return response['errmsg'] return "发送成功"
-
python3调用企业微信api
2020-04-24 16:23:25python3调用企业微信api 前段时间,我将企业微信官方提供的python接口代码的部分功能修改成了python3的,并且自己也使用并测试过; 因为并没有将公司的敏感信息抹去,所以代码一直没有更新到github; 等度过了... -
python调用企业微信机器人API-自动发送文本、图片与CSV文件3种方式
2020-09-14 15:34:53前言:使用企业微信app端,在群里添加robot并命名;PC端点击robot可编辑相关资料。 正文 1.调用企业微信机器人API-自动发送文字。 1.1 -
Python实现企业微信应用管理API消息回调功能
2022-04-02 14:36:46企业微信开发中心关于回调配置说明:回调配置 - 接口文档 - 企业微信开发者中心 回调过程需要先实现验证回调接口URL的有效性,然后才是接受消息返回对应内容。详细步骤过程在上述企业微信开发中心有详细说明,接... -
python调用企业微信机器人发送通知消息
2020-12-03 18:24:25在终端某个群组添加机器人之后,可以获取到 webhook 地址,然后我们构造需要发送的... 通过企业微信机器人发送文本类型消息import requestsimport jsonclass WeWork_Send_Msg():# 文本类型消息def send_txt(self):he... -
python实现通过企业微信机器人api发送消息
2021-08-24 14:29:091、创建群机器人 2、 url中填入机器人的Webhook地址 -
python向企业微信发送文字和图片消息的示例
2020-12-16 21:28:25企业微信本来是有功能,可以直接把图片显示到正文的,但是那个api我调用一直出错,各种折腾也没解决。后来感觉就算了,没必要,用url拼接在文字中也行,这样的好处就是以后可以换图床,不局限在企业微信内部(好像... -
python调用企业微信接口发送群聊消息代码参考
2020-12-19 03:54:19# Author: sea 2019import requestsimport jsonimport timeclass WebchatUtil:corpid = '必须填写你自己申请的'secret = '固定填写你自己申请的'access_token = ''@staticmethoddef init_access_token():# 获取token... -
9行Python代码调用个人微信API创建一个微信机器人(Wechaty开源iPad协议)
2022-04-06 11:14:12WeChaty是Github的一个开源个人微信API项目,提供了Python、PHP、NodeJs等程序,便于我们使用API操作个人微信:https://github.com/wechaty/we... 目前WeChaty有多种渠道实现 在这之前,有著名的itChat和wxpy让... -
调用微信API发送微信消息python脚本
2021-03-06 22:14:18前阵子部署zabbix监控系统,做了个微信报警,下面分享下微信调API发消息的脚本。要用微信发消息,自己首先要有微信企业号,如果没有申请也容易准备工作:1.申请微信企业号2.在企业号后台创建应用3.关注微信企业号... -
使用Python发送企业微信消息
2021-04-27 05:07:31使用Python发送企业微信消息发布时间:2020-07-03 04:10:28来源:51CTO阅读:1015作者:猫猫maomao准备工作:到企业微信官网,注册一个企业;登录企业微信后台,创建一个“自建”应用, 获取企业ID、agentid、secret... -
shell或python调用企业微信发送消息(实现报警功能)
2021-01-27 05:37:05创建完成后,在管理端的应用列表里进入该应用,可以看到agentid、secret等信息,这些信息在使用企业微信API时会用到。创建完成后,该应用会自动出现在可见范围内的成员的企业微信终端上(包括手机端、pc端、微工作台)... -
python连接企业微信发送消息
2021-01-28 19:58:31准备工作:首先,到企业微信官网注册一个企业微信,注册过程我就不阐述了。然后登录企业微信后台,在应用管理-应用-自建中创建应用:如下图创建完成之后:展示如下获取企业...程序代码:企业微信提供API开发接口,通... -
【Jenkins学习 】如何编写Python脚本来调用企业微信的api通知企业微信成员关于Jenkins的编译结果?
2019-01-12 16:00:35一、需求描述 最近公司将RTX更新为了企业微信,并且准备将之前的OA邮箱之类的都废弃掉了。...和公司负责企业微信推广的同事聊了聊之后,发现可以通过企业微信提供的api来进行开发,然后实现将Je... -
python实现企业微信机器人
2021-06-15 10:16:13企业微信有很好的机器人api说明,我们只需要按照如下操作即可(调用三方 一定要熟读三方api,比网上乱搜来的实惠) 实战三部曲: 1.获取一个企业微信群(新建,或已存在) 2.手机端创建一个机器人(创建机器人... -
使用企业微信的API给指定用户发送消息
2020-12-15 13:47:58/*** 微信发送消息**@authorPC-MXF**/public classWeChatMsgSend {privateCloseableHttpClient httpClient;/*** 用于提交登录数据*/privateHttpPost httpPost;/*** 用于获得登陆后页面*/privateHttpGet httpGet;... -
9行Python代码调用个人微信API创建一个微信机器人
2021-09-24 17:51:50WeChaty是Github的一个开源个人微信API项目,提供了Python、PHP、NodeJs等程序,便于我们使用API操作个人微信:https://github.com/wechaty/wechaty 目前WeChaty有多种渠道实现 在这之前,有著名的itChat和wxpy让... -
Python调用微信公众平台接口操作示例
2020-11-25 23:56:49本文实例讲述了Python调用微信公众平台接口操作。分享给大家供大家参考,具体如下:这里使用的是Django,其他类似# coding=utf-8from django.http import HttpResponseimport hashlib, time, refrom xml.etree import... -
python 调用微信截图DLL加代码
2019-04-02 17:14:14python 调用微信截图DLL加代码