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,一经查实,立即删除!

相关文章

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

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

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

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

实验一作业

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

php7引用计数,PHP7 引用计数 读书笔记

PHP7 引用计数 读书笔记每个 PHP 变量存在一个加 "zval" 的变量容器中. 一个 zval 变量容器, 除了包含变量的类型和值, 还包括两个字节的额外信息.1.is_ref : 是一个 bool 值, 用来标识这个变量是否属于引用集合. 通过这个字节, PHP 引擎才能把普通变量和引用变量区分…

焦呼?焦矣!

焦了。做了个香蕉蛋糕。总觉得它还没熟,就让它没完没了地烤着。于是焦了。可里面居然还是湿润的。是蛋糕的问题,还是6寸模的问题,还只是人的问题?烤一半时,爹临出门时,过来往上头按了一大拇指。很好&#x…

AJAX(2),我的第一个AJAX程序

首先&#xff0c;在VS2005中新建一个网站&#xff0c;拖入一个Button和Text,设置Button的客户端事件为userCheck(),<asp:TextBox ID"username"runat"server"></asp:TextBox><input type"button"name"check"value"…

[导入]ASP.NET 2.0中Page事件的执行顺序

文章来源:http://blog.csdn.net/21aspnet/archive/2007/03/20/1535517.aspx 转载于:https://www.cnblogs.com/zhaoxiaoyang2/archive/2007/03/21/816354.html

[导入]C#中TextBox只能输入数字的代码

文章来源:http://blog.csdn.net/21aspnet/archive/2007/03/20/1535640.aspx 转载于:https://www.cnblogs.com/zhaoxiaoyang2/archive/2007/03/21/816242.html

实验1c语言开发环境使用和数据类型、运算符和表达式

实验结论 由于这一次是第一次做实验有很多东西不熟悉 比如忘记加分号&#xff0c;用中文输入法打不对符号等等。总之经过这实验我学到了很多。#include <stdio.h> int main() {int x;printf("输入一个整数: \n");scanf("%d",&x);// 在处填写相应…

Nhibernate学习起步之many-to-one篇(转)

1. 学习目的: 通过进一步学习nhibernate基础知识&#xff0c;在实现单表CRUD的基础上&#xff0c;实现两表之间one-to-many的关系. 2. 开发环境必要准备 开发环境: windows 2003,Visual studio .Net 2005,Sql server 2005 developer edition 必要准备: 学习上篇文章单…

关于如何清除某个特定网站的缓存---基于Chrome浏览器

1、清除浏览器缓存 直接在浏览器设置里面清除浏览器的缓存会清除所有网站的缓存信息&#xff0c;这在某些时候是非常不方便的&#xff0c;毕竟不只有测试网站&#xff0c;还会有一些我们不想清除的信息也会被清除掉&#xff1b; 2、通过F12功能去清除浏览器缓存 转载于:https:/…

php中for循环流程图,PHP for循环

PHP for循环可以用来遍历一组指定的次数的代码。如果迭代次数已知&#xff0c;则应优先考虑使用for循环&#xff0c;否则使用while循环。for循环的语法for(initialization; condition; increment/decrement){ //code to be executed }for循环流程图示例代码-<?php for($n1;…

Spring中AOP切面编程学习笔记

注解方式实现aop我们主要分为如下几个步骤&#xff1a;  1.在切面类&#xff08;为切点服务的类&#xff09;前用Aspect注释修饰&#xff0c;声明为一个切面类。  2.用Pointcut注释声明一个切点&#xff0c;目的是为了告诉切面&#xff0c;谁是它的服务对象。&#xff08;此…

SpringCloud的学习记录(1)

最近一段时间重新学习一边SpringCloud&#xff0c;这里简单记录一下。 我用的是IntelliJ IDEA开发工具, SpringBoot的版本是2.1.3.RELEASE。 1. 构建Maven项目 整个的SpringCloud的项目是在Maven项目中的&#xff0c;这个Maven只做容纳其他项目使用, 比如后面Fegin/Config/Zipk…

html5 拖拽上传文件时,屏蔽浏览器默认打开文件

参考&#xff1a; https://www.cnblogs.com/kingsm/p/9849339.html 转载于:https://www.cnblogs.com/cwxwdm/p/10605529.html

php求数组交集的自定义函数,php数组交集函数

在数学中的交集运算&#xff0c;大家在学习的时候还是比较轻松的。我们在php数组里&#xff0c;可以借助array_intersect()函数对两个数组求交集&#xff0c;最后得到一个想要的交集数据。在正式开始array_intersect()使用前&#xff0c;我们需要先对函数的概念、语法、参数、返…

2016 hctf fheap 题解

题目链接 https://github.com/zh-explorer/hctf2016-fheap 题目分析 题目功能只有 malloc 和 free 的功能&#xff0c;查看堆的布局&#xff1a; 全局指针没有置空&#xff0c;导致 uaf 和 double free 漏洞&#xff0c;两种都可以做&#xff0c;但是这题的重点是绕过 PIE。 do…

Docker: Jenkins里的pipeline编写基本技巧

Jenkins里&#xff0c;先新建一个pipeline项目 Pipeline Syntax 在Sample Step里选择需要的插件&#xff0c;如果不存在&#xff0c;就去系统管理&#xff0c;插件管理里&#xff0c;进行安装。 如果源码管理工具用的是git,就在下拉里选择git 如果源码管理用的是svn&#xff0c…

《解剖PetShop》系列之三

《解剖PetShop》系列之三 三、PetShop数据访问层之消息处理 在进行系统设计时&#xff0c;除了对安全、事务等问题给与足够的重视外&#xff0c;性能也是一个不可避免的问题所在&#xff0c;尤其是一个B/S结构的软件系统&#xff0c;必须充分地考虑访问量、数据流量、服务器负荷…

简单理解bash和常规操作

1. 什么是bash&#xff1f; Bash shell是一个命令解释器&#xff0c;它是操作系统的外壳程序&#xff0c;负责处理用户命令与操作系统内核之间的交互&#xff0c;当用户输入一个命令并执行时&#xff0c;shell会把命令解释并传递给内核&#xff0c;然后再把内核输出返回给用户&…