chaonet / wxBot_ext

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

微信机器人

基于 wxBot ,一个用 Python 包装 Web微信协议 实现的微信机器人框架。

文件介绍

  • wxbot.py是框架文件
  • bot.py是框架作者开发的图灵机器人
  • test.py是框架作者的测脚本
  • emotion.py是自己开发的基于微软表情识别 API的微信机器人

环境与依赖

此版本只能运行于Python 2环境 。

# 下载源码
git clone git@github.com:chaonet/wxBot_ext.git
# 或者通过 HTTPS 下载:
git clone https://github.com/chaonet/wxBot_ext.git

cd wxBot_ext

# 安装依赖
pip install -r requirements.txt

登录微信

程序运行之后,会在当前目录下生成二维码图片文件 qr.png 并自动打开,用微信扫描此二维码并按操作指示确认登录网页微信。

如果运行在Linux下,还可以通过设置 WXBot 对象的 conf['qr']tty 的方式直接在终端打印二维码(此方法只能在Linux终端下使用),效果如下:

login_on_ubuntu

效果展示

测试代码 test.py 的运行效果:

向机器人发送消息

后台

图灵机器人示例

bot.py图灵机器人 API 以及 wxBot 实现了一个自动回复机器人.

此机器人会回复来自联系人的消息,以及群里@此账号的消息。

并且本帐号可以通过发送 退下走开关闭关掉休息滚开 来关闭机器人的自动回复。

也可以通过发送 出来启动工作 来再次开启机器人的自动回复。

群聊时需要将对应的群保存到联系人列表。

群聊实现效果:

群聊

群聊后台

bot.py 的运行方法:

  • 要接入图灵机器人API时:

    1. 图灵机器人官网注册账号,申请图灵key: 图灵key申请地址

    2. bot.py 文件所在目录下新建 conf.ini 文件,内容为:(key字段内容为申请到的图灵key)

    [main]    
    key=1d2678900f734aa0a23734ace8aec5b1
    1. 运行 bot.py
    python bot.py
  • 不接入图灵机器人API时(此时机器人对联系人消息以及群里@自己的消息统一回复 知道了 ):

    1. 运行 bot.py
    python bot.py

表情识别

基于微软的Emotion APIwxBot 实现的一个表情识别机器人。

此机器人开启后,会对来自联系人以及群里发来的图片中,人的表情进行识别。

联系人使用:

可以通过发送 退下走开关闭关掉休息滚开 来关闭机器人的表情识别。

也可以通过发送 出来启动工作 来开启机器人的表情识别。

微信群:

@ 运行的账号,文字内容同上

emotion.py 的使用方法:

  1. Microsoft 帐户注册账号,申请 API key。

  2. emotion.py 文件所在目录下新建 conf.ini 文件,内容为:(emotion_key字段内容为申请到的 微软emotion API 的key)

    [main]
    emotion_key=1d2678900f734aa0a23734ace8aec5b1
    
  3. 运行 emotion.py

    python emotion.py

折腾历史

  • 申请 emotion API 的 key

只需注册一个 Microsoft 帐户

  • 传送图片的格式 emotion API可以通过两种方式接收图片文件。
    • 一种是application/JSON格式,原始内容为字典{ "url": "http://example.com/picture.jpg" },在发送前需要通过json.dumps(data)编码为字符串,然后才能成功发送给emotion API,接收时需要json.loads(data)解码。但微信框架获取到的图片链接,格式:https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetmsgimg?MsgID=5763688365154314773&skey=@crypt_115bea6f_2a9e4bb833ca9c156ebb3d71dd48f4bb无法直接打开图片。
    • 第二种是application/octet-stream格式,也就是二进制的图片数据,因为框架自动在本地保存了接收到的图片,所以通过open(fn, 'rb'),以二进制方式打开,接收回复时同样需要json.loads(data)解码。

Python - unhashable type error in urllib2

About

License:Apache License 2.0


Languages

Language:Python 100.0%