Python自制微信机器人:群发消息、自动接收好友

程序员鼓励师

运营公众号也有半年了,今年5月份开始的,之前一直用一款windows工具来运营自动接受好友请求、群发文章、自动回复等操作,但颇有不便。

举几个场景:

  1. 突然在外面看到一篇文章很好,临时写了一篇,想群发一下。
  2. 好友加我微信后,每次都要手动备注。

这些使用客户端工具都无法解决,因为客户端工具的一个特点就是native,需要你直接操作电脑,不方便。

所以就想着自己写一个干脆,经过一周漫长的开发(主要是时间太零散了),把第一版定制化微信机器人给完成了,第一版里实现了几个功能:

  1. 自动添加好友,并同时根据附加信息打备注。
  2. 根据不同的分组,进行群发消息。因为有些群只允许你21:00~09:00,你中午发的时候就要屏蔽他,有的群是禁止发的,那你也要屏蔽。
  3. 根据关键字回复消息、图片等。

那先来看看效果:
python微信机器人
python微信机器人
python微信机器人

第一版的功能非常简陋,而且不易扩展,但解决了我的基本用途,之后这个项目我会持续根据维护。

那么接下来就来看一些核心代码:
python微信机器人
FileHelper类定义了所有的交互式指令集合,微信官方提供了文件传输助手这个功能,我们就要用好他嘛~

那这个_register_mass函数就在做一件事情:注册群发消息。

只要指令集和群发有关,就用这个函数去注册,因为群发包括很多指令集:群发消息,群发文章,群发图片,群发语音等等。所以有了这个注册器后,之后的函数就相对简单了:
在这里插入图片描述

另外,为了让匹配速度更快些,我特地开了一个子线程去同步本地的群组列表,把列表维护在内存里使得速度更快些。

整个项目目录还是比较复杂的,以上只是节选了部分关键代码:
在这里插入图片描述

之后的话,准备把代码健硕起来,使用说明、日志等,然后功能继续迭代,比如:识别公众号URL地址自动转换成文章转发格式,自动邀请入群等。

关注公众号「Python专栏」后台回复:wxRobot,获取完整微信机器人源码。

Python专栏二维码

转载于:https://www.cnblogs.com/moonhmily/p/10561773.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/412001.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

61条面向对象设计的经验原则

你不必严格遵守这些原则,违背它们也不会被处以宗教刑罚。但你应当把这些原则看成警铃,若违背了其中的一条,那么警铃就会响起。 -----Arthur J.Riel (1)所有数据都应该隐藏在所在的类的内部。p13 (2)类的使用者必须依赖类的共有接口&#xff0…

gesturedetector.java_我的flutter代码中的GestureDetector不起作用

我正在玩flip_card package(这个软件包会创建一张卡片,当你点击它时,它会翻转卡片并显示卡片的正面或背面) . 我想要做的是,每次点击卡片时显示不同的图像,并且卡片翻转到正面 .为此,我将flip_card example修改为有状态…

[vue] vue打包成最终的文件有哪些?

[vue] vue打包成最终的文件有哪些? vendor.js, app.js, app.css, 1.xxx.js 2.xxx.js如果有设置到单独提取css的话 还有 1.xxx.css ......个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 …

IronPython资料

Python文档:http://blog.csdn.net/ccat/category/9998.aspx A bit more on IronPython:http://blogs.msdn.com/aaronmar/archive/2006/02/16/a-bit-more-on-ironpython.aspx Python 2.5 中文Tutorial http://wiki.woodpecker.org.cn/moin/March_Liu/PyT…

记一次webpack4+react+antd项目优化打包文件体积的过程

背景 最近自己整了一个基于webpack4和react开发的博客demo项目,一路整下来磕磕碰碰但也实现了功能,就准备发到阿里云上面去看看,借用了同事的阿里云小水管服务器,配置完成之后首页加载花了十几秒,打开控制台network查看…

java hashedmap_Java基础 - Map接口的实现类 : HashedMap / LinkedHashMap /TreeMap 的构造/修改/遍历/ 集合视图方法/双向迭代输出...

import java.util.*;/**一:Collection接口的* Map接口: HashMap(主要实现类) : HashedMap / LinkedHashMap /TreeMap* Map接口:对, 重复的键会进行值得覆盖 ,输出顺序和放入顺序是不一定可以保持顺序的!* 修改查询操作: 1.put(key, value), 2.remove(key) 3.putAll(其他map), 复…

[vue] vue如何优化首页的加载速度?

[vue] vue如何优化首页的加载速度? 补充下2楼: ssr直出, webpack压缩HTML/CSS/JS, 首屏css单独提取内联, 关键资源Proload, 图片:不缩放,使用webp、小图片base64,iconfo…

25岁了

忙了一天,在下午收到kk的email才想起来今天是自己的生日,应该请大家吃蛋糕的。想想这一年过得真快,2006这几个数字我还没有写惯,就要开始写2007了。时光如梭,一点都不假。 25岁啰,转眼间自己怎么就这把年纪…

java同时满足语句_关于控制语句,下列哪些说法符合《阿里巴巴Java开发手册》:...

案例分析一:假定CPU的主频是500MHz。硬盘采用DMA方式进行数据传送,其数据传输率为4MB/s, 每次DMA传输的数据量为8KB, 要求没有任何数据传输被错过。如果CPU在DMA初始化设置和启动硬盘操作等方面用了1000个时钟周期,并且在DMA传送完成后的中断…

【java小知识】FileReader读取文件出现乱码的解决办法

转1:https://blog.csdn.net/a532672728/article/details/79432619 转2:https://www.cnblogs.com/qq78292959/p/3794993.html 小结: 1)注意txt文件,保存的格式,Windows的记事本默认保存的ANSI,我…

[vue] 说说你对vue组件的设计原则的理解

[vue] 说说你对vue组件的设计原则的理解 第一: 容错处理, 这个要做好, 极端场景要考虑到, 不能我传错了一个参数你就原地爆炸 第二: 缺省值(默认值)要有, 一般把应用较多的设为缺省值 第三: 颗粒化, 把组件拆分出来. 第四: 一切皆可配置, 如有必要, 组件里面使用中文标点符号,…

最高法院明确反向工程合法 腾讯诉PICA恐生变

原文: http://it.sohu.com/20070118/n247688457.shtml通过自行开发研制或者反向工程等方式获得的商业秘密,将不被认定为反不正当竞争法有关条款规定的侵犯商业秘密行为。 昨天,最高人民法院发布的第一个涉及不正当竞争案件审理的司法解释明确了以上规则。…

[19/03/16-星期六] 常用类_Date时间类DateFormat类

一、Date时间类 计算机中 以1970 年 1 月 1 日 00:00:00定为基准时间,每个度量单位是毫秒(1秒的千分之一) 用ong类型的变量来表示时间,如当前时刻数值:long now new System.currentTimeMillis(); 【常用方法】 1. Date() 分配一个Date对象&a…

php array第一张图片_PHP array_udiff() 函数

PHP array_udiff() 函数实例比较两个数组的键值(使用用户自定义函数比较键值)&#xff0c;并返回差集&#xff1a;<?php function myfunction($a,$b){if ($a$b){return 0;}return ($a>$b)?1:-1;}$a1array("a">"red","b">"gre…

在FF与IE中使用数据岛

在FF与IE中使用数据岛 <div style"display:none;"><xml id"XMLNode"><xmp><Root>...<III><![CDATA[***]]></III>...</Root></xmp></xml></div><script language"javascript>…

[vue] 怎么缓存当前打开的路由组件,缓存后想更新当前组件怎么办呢?

[vue] 怎么缓存当前打开的路由组件&#xff0c;缓存后想更新当前组件怎么办呢&#xff1f; 可以在路由meta中加入参数, 对打开的路由进行keep-alive的判断, 通过钩子active等个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很…

实验一作业

Part1&#xff1a;实验总结体会 1.实验过程对程序编码的使用不熟练&#xff0c;经常在书写代码过程中有停顿与疑惑&#xff0c;但熟能生巧&#xff0c;经过训练还是有不少收获&#xff1b; 2.实验内容不够严谨&#xff0c;容易犯小错误&#xff0c;还是需要勤加练习&#xff1b…

php 点击选择图片上传,php上传多张图片时,选择图片后即可预览的问题

这几天一直在解决一个问题&#xff0c;上传图片时选择成功后就能预览。需求&#xff1a;在点击上传图标的时候会在前面的input框中显示出文件名&#xff0c;然后点击后面的查看按钮就可以预览选择的这张图片了&#xff0c;要求不能刷新页面1.一开始的时候打算用ajax上传&#x…

[vue] prop是怎么做验证的?可以设置默认值吗?

[vue] prop是怎么做验证的&#xff1f;可以设置默认值吗&#xff1f; 单个类型就用Number等基础类型&#xff0c;多个类型用数组&#xff0c;必填的话设置require为true&#xff0c;默认值的话设置default&#xff0c;对象和数组设置默认用工厂函数&#xff0c;自定义验证函数…

python在函数外调用变量

def a&#xff08;&#xff09;&#xff1a; global phone phoneinput&#xff08;请输入手机号码&#xff09; def b (): idphone print(id) 在函数内用global定义变量&#xff0c;变量外就可使用该变量转载于:https://www.cnblogs.com/zhujunsheng/p/10570169.html