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错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
Aug 22 Python
python操作mysql数据库
Mar 05 Python
python实现图书馆研习室自动预约功能
Apr 27 Python
python接口自动化(十六)--参数关联接口后传(详解)
Apr 16 Python
django框架防止XSS注入的方法分析
Jun 21 Python
python3中eval函数用法使用简介
Aug 02 Python
python中用logging实现日志滚动和过期日志删除功能
Aug 20 Python
Python操作注册表详细步骤介绍
Feb 05 Python
Pycharm生成可执行文件.exe的实现方法
Jun 02 Python
Python如何读取、写入CSV数据
Jul 28 Python
Python可视化学习之matplotlib内置单颜色
Feb 24 Python
PyCharm 配置SSH和SFTP连接远程服务器
May 11 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
给海燕B411配件机起死回生配上件
2021/03/02 无线电
PHP 上传文件的方法(类)
2009/07/30 PHP
PHP+Ajax验证码验证用户登录
2016/07/20 PHP
优化javascript的执行速度
2010/01/23 Javascript
转换json格式的日期为Javascript对象的函数
2010/07/13 Javascript
Extjs中TabPane如何嵌套在其他网页中实现思路及代码
2013/01/27 Javascript
jquerymobile局部渲染的各种刷新方法小结
2014/03/05 Javascript
基于Css3和JQuery实现打字机效果
2015/08/11 Javascript
详解Angular.js的$q.defer()服务异步处理
2016/11/06 Javascript
Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
2017/09/18 Javascript
Angular实现下拉框模糊查询功能示例
2018/01/03 Javascript
如何利用@angular/cli V6.0直接开发PWA应用详解
2018/05/06 Javascript
js使用formData实现批量上传
2020/03/27 Javascript
使用puppeteer爬取网站并抓出404无效链接
2018/12/20 Javascript
ES6函数和数组用法实例分析
2020/05/23 Javascript
vue2和vue3的v-if与v-for优先级对比学习
2020/10/10 Javascript
python正则表达式去掉数字中的逗号(python正则匹配逗号)
2013/12/25 Python
python中偏函数partial用法实例分析
2015/07/08 Python
Python中内置数据类型list,tuple,dict,set的区别和用法
2015/12/14 Python
python获取本机所有IP地址的方法
2018/12/26 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
2020/06/03 Python
python 实现&quot;神经衰弱&quot;翻牌游戏
2020/11/09 Python
Django URL参数Template反向解析
2020/11/24 Python
美国婚戒购物网站:Anjays Designs
2017/06/28 全球购物
英国和爱尔兰的自炊式豪华度假小屋:Rural Retreats
2018/06/08 全球购物
毕业生毕业总结的自我评价范文
2013/11/02 职场文书
大学军训自我鉴定
2013/12/15 职场文书
会计系个人求职信范文分享
2013/12/20 职场文书
火车来了教学反思
2014/02/11 职场文书
大学生推广普通话演讲稿
2014/09/21 职场文书
公安四风对照检查材料思想汇报
2014/10/11 职场文书
2015年酒店工作总结范文
2015/04/07 职场文书
同学聚会感言一句话
2015/07/30 职场文书
教你怎么用PyCharm为同一服务器配置多个python解释器
2021/05/31 Python
MySQL优化常用的19种有效方法(推荐!)
2022/03/17 MySQL
MYSQL常用函数介绍
2022/05/05 MySQL