python实现微信机器人: 登录微信、消息接收、自动回复功能


Posted in Python onApril 29, 2019

安装wxpy

pip install -U wxpy

登录微信

# 导入模块
from wxpy import *
# 初始化机器人,扫码登陆
bot = Bot()

运行以上代码,会生成一个二维码,通过图片扫描二维码即可登录微信。

如果是在服务器上运行代码,无法显示图片的时候, 可以选择通过终端显示二维码图片, 只需要将代码改成:

from wxpy import *
bot = Bot(console_qr=True)

运行的效果如下:

python实现微信机器人: 登录微信、消息接收、自动回复功能

当然,为了安全,这个二维码做了模糊处理

如果你认为每次都需要扫描二维码很麻烦,可以启用缓存,来保存自己的登录状态:

bot = Bot(console_qr=True, cache_path=True)

 发送消息

首先我们尝试给自己和文件传输助手发消息:

# 给机器人自己发送消息
bot.self.send('Hello World!')
# 给文件传输助手发送消息
bot.file_helper.send('Hello World!')

自动回复

可通过 预先注册 的方式,实现消息的自动处理。

“预先注册” 是指

预先将特定聊天对象的特定类型消息,注册到对应的处理函数,以实现自动回复等功能。

注册消息

提示

每当收到新消息时,将根据注册规则找到匹配条件的执行函数。
并将 消息对象 作为唯一参数传入该函数。

将 Bot.register() 作为函数的装饰器,即可完成注册。

# 获取所有类型的消息(好友消息、群聊、公众号,不包括任何自己发送的消息)
# 并将获得的消息打印到控制台
@bot.register()
def print_others(msg):
  print(msg)

同时wxpy也可以给注册消息的类型加上限制,

# 回复 my_friend 发送的消息
@bot.register(my_friend)
def reply_my_friend(msg):
  return 'received: {} ({})'.format(msg.text, msg.type)
 
# 回复发送给自己的消息,可以使用这个方法来进行测试机器人而不影响到他人
@bot.register(bot.self, except_self=False)
def reply_self(msg):
  return 'received: {} ({})'.format(msg.text, msg.type)
 
# 打印出所有群聊中@自己的文本消息,并自动回复相同内容
# 这条注册消息是我们构建群聊机器人的基础
@bot.register(Group, TEXT)
def print_group_msg(msg):
  if msg.is_at:
    print(msg)
    msg.reply(meg.text)

我们设置一个自动回复所有消息的功能:

@bot.register()
def reply_self(msg):
  # return 'received: {} ({})'.format(msg.text, msg.type)
  msg.reply(u'好的呀')

效果如下:

python实现微信机器人: 登录微信、消息接收、自动回复功能

以上所述是小编给大家介绍的python实现微信机器人: 登录微信、消息接收、自动回复功能详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python开发WebService系列教程之REST,web.py,eurasia,Django
Jun 30 Python
Python实现简单的四则运算计算器
Nov 02 Python
python定时利用QQ邮件发送天气预报的实例
Nov 17 Python
python使用xpath中遇到:到底是什么?
Jan 04 Python
Python调用C++,通过Pybind11制作Python接口
Oct 16 Python
python+mysql实现教务管理系统
Feb 20 Python
Python进程间通信Queue消息队列用法分析
May 22 Python
python利用7z批量解压rar的实现
Aug 07 Python
Python实现名片管理系统
Feb 14 Python
如何在mac版pycharm选择python版本
Jul 21 Python
通过实例解析python and和or使用方法
Nov 14 Python
python 定义函数 返回值只取其中一个的实现
May 21 Python
Python opencv实现人眼/人脸识别以及实时打码处理
Apr 29 #Python
python实现微信每日一句自动发送给喜欢的人
Apr 29 #Python
详解【python】str与json类型转换
Apr 29 #Python
python实现给微信指定好友定时发送消息
Apr 29 #Python
python使用wxpy实现微信消息防撤回脚本
Apr 29 #Python
Django Sitemap 站点地图的实现方法
Apr 29 #Python
python中报错"json.decoder.JSONDecodeError: Expecting value:"的解决
Apr 29 #Python
You might like
如何在PHP中使用Oracle数据库(3)
2006/10/09 PHP
YII模块实现绑定二级域名的方法
2014/07/09 PHP
基于php数组中的索引数组和关联数组详解
2018/03/12 PHP
解决Laravel 不能创建 migration 的问题
2019/10/09 PHP
JavaScript 中的replace方法说明
2007/04/13 Javascript
Web开发之JavaScript
2012/03/29 Javascript
Bootstrap每天必学之标签与徽章
2015/11/27 Javascript
AngularJS辅助库browserTrigger用法示例
2016/11/03 Javascript
jQuery 插件封装的方法
2016/11/16 Javascript
解决URL地址中的中文乱码问题的办法
2017/02/10 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
2017/02/20 Javascript
Bootstrap组合上、下拉框简单实现代码
2017/03/06 Javascript
利用jquery去掉时光轴头尾部线条的方法实例
2017/06/16 jQuery
通俗解释JavaScript正则表达式快速记忆
2017/08/23 Javascript
JavaScript图片处理与合成总结
2018/03/04 Javascript
jQuery 实现倒计时天,时,分,秒功能
2018/07/31 jQuery
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
2019/08/16 Javascript
JavaScript 实现轮播图特效的示例
2020/11/05 Javascript
vue 实现element-ui中的加载中状态
2020/11/11 Javascript
在Vue中使用CSS3实现内容无缝滚动的示例代码
2020/11/27 Vue.js
[46:43]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第三局
2016/02/28 DOTA
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
2013/11/28 Python
Python flask框架post接口调用示例
2019/07/03 Python
Python队列RabbitMQ 使用方法实例记录
2019/08/05 Python
Python字符串的修改方法实例
2019/12/19 Python
python如何提升爬虫效率
2020/09/27 Python
15个Pythonic的代码示例(值得收藏)
2020/10/29 Python
python中pyqtgraph知识点总结
2021/01/26 Python
pip install命令安装扩展库整理
2021/03/02 Python
浅谈amaze-ui中datepicker和datetimepicker注意的几点
2020/08/21 HTML / CSS
如何提高MySql的安全性
2014/06/19 面试题
《奇妙的国际互联网》 教学反思
2014/02/25 职场文书
《数星星的孩子》教学反思
2014/04/11 职场文书
2014年医院个人工作总结
2014/12/09 职场文书
vue中 this.$set的使用详解
2021/11/17 Vue.js
mysql 获取时间方式
2022/03/20 MySQL