用python怎么设计一个微信的接口

Python031

用python怎么设计一个微信的接口,第1张

最近一段时间想看看能不能用万能的python来对微信进行一些操作(比如自动抢红包之类的...hahahaha),所以就在此记录一下啦~~

1、安装

sudo pip install itchat

2、登录

itchat.auto_login()

注:itchat.auto_login()这种方法将会通过微信扫描二维码登录,但是这种登录的方式确实短时间的登录,并不会保留登录的状态,也就是下次登录时还是需要扫描二维码,如果加上hotReload==True,那么就会保留登录的状态,至少在后面的几次登录过程中不会再次扫描二维码,该参数生成一个静态文件itchat.pkl用于存储登录状态

itchat.auto_login(hotReload=True)

3、退出登录

主要使用的是回调函数的方法,登录完成后的方法需要赋值在 loginCallback中退出后的方法,需要赋值在 exitCallback中.若不设置 loginCallback的值, 将会自动删除二维码图片并清空命令行显示.

import itchat,time

def lcb():

print("登录完成!")

def ecb():

print("退出成功!")

itchat.auto_login(loginCallback=lcb,exitCallback=ecb) #源码中规定需要用回调函数。

time.sleep(10)

itchat.logout()  #强制退出登录

4、发送消息

send()

itchat.send(msg="WANGPC的微信消息!",toUserName="filehelper") #返回值为True或Flase

实例

或者:

send_msg

send_msg(msg='Text Message', toUserName=None),其中的的msg是要发送的文本,toUserName是发送对象, 如果留空, 将发送给自己,返回值为True或者False

实例代码

send_file

send_file(fileDir, toUserName=None) fileDir是文件路径, 当文件不存在时, 将打印无此文件的提醒,返回值为True或者False

实例代码

send_image

send_image(fileDir, toUserName=None) 参数同上

实例代码

send_video

send_video(fileDir, toUserName=None) 参数同上

实例代码

# coding=utf-8

from django.http import HttpResponse

import hashlib, time, re

from xml.etree import ElementTree as ET

def weixin(request):

token = "your token here"

params = request.GET

args = [token, params['timestamp'], params['nonce']]

args.sort()

if hashlib.sha1("".join(args)).hexdigest() == params['signature']:

if params.has_key('echostr'):

return HttpResponse(params['echostr'])

else:

reply = """<xml>

<ToUserName><![CDATA[%s]]></ToUserName>

<FromUserName><![CDATA[%s]]></FromUserName>

<CreateTime>%s</CreateTime>

<MsgType><![CDATA[text]]></MsgType>

<Content><![CDATA[%s]]></Content>

<FuncFlag>0</FuncFlag>

</xml>"""

if request.raw_post_data:

xml = ET.fromstring(request.raw_post_data)

content = xml.find("Content").text

fromUserName = xml.find("ToUserName").text

toUserName = xml.find("FromUserName").text

postTime = str(int(time.time()))

if not content:

return HttpResponse(reply % (toUserName, fromUserName, postTime, "输入点命令吧..."))

if content == "Hello2BizUser":

return HttpResponse(reply % (toUserName, fromUserName, postTime, "查询成绩绩点请到http://chajidian.sinaapp.com/ 本微信更多功能开发中..."))

else:

return HttpResponse(reply % (toUserName, fromUserName, postTime, "暂不支持任何命令交互哦,功能开发中..."))

else:

return HttpResponse("Invalid Request")

else:

return HttpResponse("Invalid Request")