Python实现微信自动好友验证,自动回复,发送群聊链接方法


Posted in Python onFebruary 21, 2019

引言:

一开始二维码加群,但是呢,这个东西隔一段时间会过期,我需要 每隔一段时间去更新二维码,然后当群人数超过100人了,只能邀请进群, 这个时候就需要别人添加我为好友,然后我通过,打开交流群,添加成员, 然后滚列表,一个个翻,找到那个人,然而我通讯录几百个人...后来我学会 了用标签,虽然可以过滤一部分人,但是还是要翻;还有一个问题就是, 加我的人时间的随机性,早上,下午,或者晚上,甚至还有深夜3,4点 加我的,最尴尬的是,刚拉完一个人,又有一个人加我,我又得拉一次... 还有一点就是不想陌生人窥探自己的朋友圈...

作为一个Pyer,肯定要想办法解决上述这些问题,解放自己的双手啊, 让机器人来帮我做这些事,说干就干,立马分析一波实现流程。

流程分析

大概流程如下:

Step 1.被添加好友,过滤关键词,看是否包含Py,Python 字(pi)眼,如果包含, 通过请求,并说一句欢迎词的骚话;

Step 2.过滤用户发送的关键词,响应相关信息:

1.加群:发送加群链接

2.博客:返回我的掘金主页链接

3.公众号:返回公众号二维码图片

4.打赏:返回一个动图,感谢词,微信付款二维码

5.其他:返回一个黑人问号图片

流程是挺简单的,然而实际实现的时候一堆问题,大部分时间都在试错, 翻issues,谷歌

代码实现

好友验证通过

实现代码如下:

Python实现微信自动好友验证,自动回复,发送群聊链接方法

运行截图:

(要出现验证信息的话,需要双方互删!!!,另外如果你自己做机器人的话, 记得去设置 -> 隐私 -> 加我为朋友需要验证,把这个给勾选!!!)

Python实现微信自动好友验证,自动回复,发送群聊链接方法

关键词回复

@itchat.msg_register([TEXT]) :监测信息的,里面那个列表代表监测的类型, 这里目前只需要对文本进行过滤,除此之外还可以监听下面这些类型: PICTURE, RECORDING, ATTACHMENT, VIDEO,这个自己翻文档和issues去。 另外,这个方法,可以直接return一个字符串,会直接发送一个文本 给发送这个信息的人。

如果是其他类型的,就需要调用**send_msg和send_image这类方法 去发送信息了,参数都是两个(字符串/附件文件名,UserName),这个UserName 可不是直接的 '十二' 这样的东西,是类似于@abcdefg1234567 这样的东西, 这个东西你需要去获取,这里接手别人的信息就很好拿:msg['FromUserName'])** 如果是你主动发的话,就需要通过get_friends获得好友列表,或者通过search_friends, 得到一个列表,接着遍历,name等于好友名字的值,然后在拿到UserName。

接着说下发送群聊的

这个可把我坑惨了,试了N久都不发不了,没任何提示, 官方issues也是,看到一个什么超过40人无效之类的,要调用另外一个方法, 然而那个方法根本没有,后来折腾了好久才知道是name参数不对,第一个参数 不是直接传群名,而是和上面那个UserName一样是一个@xxx这样的东西,同样 需要通过get_chatrooms或者search_chatrooms拿到群聊列表,然后遍历列表 拿到你的这个群聊,才是正确的,然后呢**add_member_into_chatroom**() 这个函数的第二个参数,不是直接UserName,而是需要自己另外拼接成字典: [{'UserName': msg['FromUserName']}],还有一个参数是:useInvitation=True, 是否以发送邀请链接的形式拉人,群聊满100人的话需要把这个属性设置为True。

大概细节的东西就这样,接下来写代码实现下,先是定义一个获取群聊ID的函数:

Python实现微信自动好友验证,自动回复,发送群聊链接方法

接着就是编写自动处理函数了,细节那里弄懂了,基本没什么问题:

Python实现微信自动好友验证,自动回复,发送群聊链接方法

Python实现微信自动好友验证,自动回复,发送群聊链接方法

# 微信小宇宙助手
import datetime
import re
from threading import Timer
import itchat
from itchat.content import *
# 小宇宙今天新闻匹配正则
xyz_compile = re.compile(r'.*?小宇宙整理.*?%d月%d日.*'
       % (datetime.datetime.now().month, datetime.datetime.now().day), re.S)
# 验证好友信息正则,关键词中有Python,Py和加群的关键字就可以了
add_friend_compile = re.compile(r'Python|Py|加群')
# 获取用户昵称的正则的
nickname_compile = re.compile(r'NickName\':\'(.*)\'', re.S)
# 小宇宙日报抓取
@itchat.msg_register([TEXT], isGroupChat=True)
def xyz_reply(msg):
 group_list = [u'我是渣渣辉', u'我是轱天乐', u'探挽懒月']
 group_name = []
 for group in group_list:
  chat = itchat.search_chatrooms(name=group)
  if len(chat) > 0:
   group_name.append(chat[0]['UserName'])
 # 过滤小宇宙新闻
 result = xyz_compile.search(msg['Content'])
 print(msg['ActualNickName'] + " : " + msg['Content'])
 if result is not None:
  if result.group() is not None and msg['ActualNickName'] == u'小宇宙':
   for group in group_name:
    itchat.send('%s' % (msg['Content']), toUserName=group)
# 每个半个小时发依次信息貌似能防止掉线
def loop_send():
 global count
 itchat.send('大扎好,我系轱天乐,我四渣嘎辉,探挽懒月,介四里没有挽过的船新版本,'
    '挤需体验三番钟,里造会干我一样,爱像借款游戏。'
    , toUserName=itchat.search_chatrooms(name=u'探挽懒月')[0]['UserName'])
 count += 1
 if count < 10000:
  Timer(1800, loop_send).start()
# 自动通过加好友
@itchat.msg_register(itchat.content.FRIENDS)
def deal_with_friend(msg):
 if add_friend_compile.search(msg['Content']) is not None:
  itchat.add_friend(**msg['Text']) # 自动将新好友的消息录入,不需要重载通讯录
  itchat.send_msg('嘤嘤嘤,我是智障机器人小Pig,\n很高兴认识你,回复关键字:\n\n 加群,博客,公众号,打赏 \n\n 来继续我们的摔跤♂故事!',
      msg['RecommendInfo']['UserName'])
  itchat.send_image('welcome.png', msg['RecommendInfo']['UserName'])
# 自动处理信息
# 1.加好友后发送加群信息
# 2.过滤加群信息
# 3.公众号推荐
# 4.打赏
@itchat.msg_register([TEXT])
def deal_with_msg(msg):
 text = msg['Content']
 if text == u'加群':
  itchat.add_member_into_chatroom(get_group_id("小猪的Python学习交流群"),
          [{'UserName': msg['FromUserName']}], useInvitation=True)
 elif text == u'博客':
  return 'coder-pig的个人主页-掘金:https://juejin.im/user/570afb741ea493005de84da3'
 elif text == u'公众号':
  itchat.send_image('gzh.jpg', msg['FromUserName'])
 elif text == u'打赏':
  itchat.send_image('ds.gif', msg['FromUserName'])
  itchat.send_msg('您的打赏,会让小猪更有动力肝出\n更Interesting的文章,谢谢支持~', msg['FromUserName'])
  itchat.send_image('wxpay.png', msg['FromUserName'])
 else:
  itchat.send_image('hrwh.png', msg['FromUserName'])
# 获得群聊id
def get_group_id(group_name):
 group_list = itchat.search_chatrooms(name=group_name)
 return group_list[0]['UserName']
if __name__ == '__main__':
 count = 0
 Timer(1800, loop_send).start()
 itchat.auto_login(enableCmdQR=2, hotReload=True)
 itchat.run()
作者:coder-pig

以上这篇Python实现微信自动好友验证,自动回复,发送群聊链接方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的语言类型(详解)
Jun 24 Python
Python爬虫实例_城市公交网络站点数据的爬取方法
Jan 10 Python
Python3之文件读写操作的实例讲解
Jan 23 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
Jun 04 Python
解决python3 HTMLTestRunner测试报告中文乱码的问题
Dec 17 Python
pycharm配置pyqt5-tools开发环境的方法步骤
Feb 11 Python
Django密码系统实现过程详解
Jul 19 Python
PyCharm无法引用自身项目解决方式
Feb 12 Python
Python如何将将模块分割成多个文件
Aug 04 Python
基于python实现复制文件并重命名
Sep 16 Python
Pandas中两个dataframe的交集和差集的示例代码
Dec 13 Python
Python实现简单的猜单词
Jun 15 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
Feb 21 #Python
对python借助百度云API对评论进行观点抽取的方法详解
Feb 21 #Python
用python实现刷点击率的示例代码
Feb 21 #Python
Python快速转换numpy数组中Nan和Inf的方法实例说明
Feb 21 #Python
python根据文章标题内容自动生成摘要的实例
Feb 21 #Python
python3.6实现学生信息管理系统
Feb 21 #Python
Python基于滑动平均思想实现缺失数据填充的方法
Feb 21 #Python
You might like
php代码收集表单内容并写入文件的代码
2012/01/29 PHP
smarty巧妙处理iframe中内容页的代码
2012/03/07 PHP
解析php中array_merge与array+array的区别
2013/06/21 PHP
php对数组排序的简单实例
2013/12/25 PHP
php的zip解压缩类pclzip使用示例
2014/03/14 PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
2014/11/18 PHP
PHP实现JS中escape与unescape的方法
2016/07/11 PHP
PHP文件下载实例代码浅析
2016/08/17 PHP
HTML IMG标签 onload 内存溢出导致浏览器CPU占用过高
2021/03/09 Javascript
javascript 常用功能总结
2012/03/18 Javascript
纯javascript代码实现计算器功能(三种方法)
2015/09/07 Javascript
jQuery之动画效果大全
2016/11/09 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
详解如何在Vue2中实现组件props双向绑定
2017/03/29 Javascript
react-router实现按需加载
2017/05/09 Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
2019/09/10 Javascript
layui使用form表单实现post请求页面跳转的方法
2019/09/14 Javascript
python 读取DICOM头文件的实例
2018/05/07 Python
python实现定时压缩指定文件夹发送邮件
2020/12/22 Python
django中SMTP发送邮件配置详解
2019/07/19 Python
pytorch 输出中间层特征的实例
2019/08/17 Python
python运用sklearn实现KNN分类算法
2019/10/16 Python
Python3基于plotly模块保存图片表格
2020/08/03 Python
属性与 @property 方法让你的python更高效
2020/09/21 Python
python+openCV对视频进行截取的实现
2020/11/27 Python
Python 用__new__方法实现单例的操作
2020/12/11 Python
Python实现石头剪刀布游戏
2021/01/20 Python
商务日语毕业生自荐信范文
2013/11/14 职场文书
服务中心夜班服务员岗位职责
2013/11/27 职场文书
优秀教导主任事迹材料
2014/05/09 职场文书
党员公开承诺书内容
2014/05/20 职场文书
政工例会汇报材料
2014/08/26 职场文书
2014年党风建设工作总结
2014/11/19 职场文书
先进基层党组织事迹材料2016
2016/02/29 职场文书
pytorch显存一直变大的解决方案
2021/04/08 Python
python解决12306登录验证码的实现
2021/04/18 Python