Denua 博客

使用 itchat 登入微信收发消息

发布时间: 2017-11-09 18:08   分类 : Python    标签: PythonLib 浏览: 4048   

itchat 实现了登入网页版微信的功能, 使用扫描二维码的方式登入,可以处理收到的信息并实现自动回复,自动添加好友创建讨论组等功能.

安装

pip install itchat
easy_install itchat

如果出现itchat无法访问微信服务器的错误提示, 这时可能是 certifi 的问题, 需要安装版本为 2015.4.28

登入 登出

1. 登入
import
itchat.login()

的一种方法

login(self, enableCmdQR=False, picDir=None, qrCallback=None,
        loginCallback=None, exitCallback=None)

参数说明:

  • enableCmdQR: 如果不为False, 则在控制台打印登入所需二维码, 当 enableCmdQR 为 int 时,打印不同大小的二维码, 用于不同控制台输出不同字体时使用

  • picDir: 保存二维码的路径,

  • qrCallback: 登入相关的回调函数, 接收 uuid status qrcode

  • loginCallback: 登入成功后的回调函数

  • exitCallback: 注销后的回调函数

另一个方法

auto_login(self, hotReload=False, statusStorageDir='itchat.pkl', enableCmdQR=False,
        picDir=None, qrCallback=None, loginCallback=None, exitCallback=None)

参数说明:

  • hotReload: 默认False, 当为 True 时, 短时间内登入不需要扫描二维码验证
  • statusStorageDir: 验证文件的保存路径, 登入成功后悔生成一个验证文件用于下次登入使用
  • 剩余参数与 login() 用途一致

和登入相关的方法还有

load_login_status(self, fileDir, loginCallback=None, exitCallback=None)

get_QR(self, uuid=None, enableCmdQR=False, picDir=None, qrCallback=None)

check_login(self, uuid=None)
2. 登出
itchat.logout()
3. 保持登入状态
如果没有这句, 则登入成功后会直接退出

itchat.run()

发送消息

1. 发送普通消息
send_msg(self, msg='Test Message', toUserName=None)

参数说明

  • msg: 要发送的消息内容
  • toUserName: 收消息的用户名, 从获取的好友列表获取该值
2. 发送文件
send_file(self, fileDir, toUserName=None, mediaId=None, file_=None)

参数说明

  • fileDir: 文件路径
  • toUserName: 接收用户名
  • mediaId: 媒体id, 如果设置, 将不会发送两次, 而是直接从服务器发送
  • file_: 未知
3.发送特定格式文件
send_image(self, fileDir=None, toUserName=None, mediaId=None, file_=None)
send_video(self, fileDir=None, toUserName=None, mediaId=None, file_=None)
4.通用发送方法
send(self, msg, toUserName=None, mediaId=None)

参数说明:

  • msg: 要发送的内容, 这里不同于其他方法, 内容可以为图片,或者视频,文件.
    • '@fil@dir': 文件
    • '@img@dir': 图片
    • '@msg@txt': 普通文本
    • '@vid@dir': 视频
  • toUserName: 接收者
  • mediaId: 如果设置则不会重复上传, 直接从服务器发送该消息
5.撤回消息
revoke(self, msgId, toUserName, localId=None)

参数说明:

  • msgId: 消息服务器id
  • toUserName: 接收者
  • locaId: 消息本地id

接收消息

接收消息不同于发送, 当需要处理接收消息的时候则需要用到 装饰器

from itchat.content import *

@itchat.msg_registerr(self, msgType, isFriendChat=False, isGroupChat=False, isMpChat=False)
def msg_receiced(msg):

    '''
    return msg

参数说明:

  • 装饰器
    • msgType: 指定该方法用于处理的消息类型
      • TEXT: 文本
      • PICTURE: 图片
      • VIDEO: 视频
      • FRIENDS: 好友请求
      • VIOCE: 语音
      • CARD: 名片
    • isFriendChar: 处理好友消息
    • isGroupChat: 处理群消息
    • isMpChat: 位置
  • msg: 收到的消息dict, 其中几个重要的值:
    • FromUserName: 发送人
    • User: 发送人信息
    • MsgType: 消息类型
    • MsgId: 消息id
    • Content: 消息内容

一个简单的例子

# coding=utf-8
import itchat
from itchat.content import *

@itchat.msg_register(TEXT, isFriendChat = True)
def receive_text(msg):

    for m in msg:
        print m, msg[m]

    print msg['Text']
    return msg['Text']  # 返回的内容将发送给发送者

@itchat.msg_register(FRIENDS)
def auto_agree(msg):

    itchat.add_friend(**msg['Text'])
    itchat.send_msg('你好.'), msg['RecommendInfo']['UserName'])

if __name__ == "__main__":

    itchat.auto_login(enableCmdQR=1, hotReload=True)
    itchat.run(debug=True)
    itchat.logout()

(完)

评论    

Copyright denua denua.cn