Java教程

程序员恋爱神器 - 史上最稳开源微信消息推送工具

本文主要是介绍程序员恋爱神器 - 史上最稳开源微信消息推送工具,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

程序员的恋爱

在我们程序员的世界里,比起找男/女朋友,更习惯于电脑打交道。这是因为程序不会撒谎且能够及时给予结果反馈,而人类的感情基本是没有什么规律可循的。具体有多不规律呢?举个恐怖的例子,想象一下,你在实现接口时引入 random.choice() 随机调用执行函数 | 接口返回随机的数据结构…

这导致在大多数人眼中程序员自带害羞 & 木纳的 attribute,认为我们不擅长与异性同类打交道。但事实是,我们一旦锁定了目标,在我们缜密的 (编程) 表白逻辑与 23 种 (设计) 套路模式下,对方大概率会缴械投降。并且我相信,在一起过不了多久,他/她就会陷进我们层出不穷的恋爱黑科技中,无法自拔…

我的恋爱故事

来听一听我的恋爱经历。

不久前我认识了一个女生,可能是被狮子座女生强烈且独特的个性所吸引,在完成了上线(表白)前最后的预发布测试后,我向她表白了。正好她也喜欢我(测试通过),于是我们很快就在一起了。

不知不觉间,已经一起度过了半年的时光。这期间经历了很多很多事情,有好有坏。但不得不承认她确实丰富了我的日常生活(除电脑外的生活),并且我们都在变得越来越好,这让我更坚定了跟她走下去的决心。

我的恋爱神器

一直想让她亲身体验一下程序员男友的技术实力,于是趁着这次五一小长假,我终于实现了藏在心中已久的黑科技:

恋爱版微信消息推送机器人。

先给大家展示一下具体效果。

测试环境效果展示:

图片描述

线上环境效果展示:

图片描述

项目灵感来源于日常生活中的一些小插曲:

回家路上:

她: 今天是我们在一起的多少天了 ?
我: em.... 好像是 120 天了 ?
她: 错了!是 121 天了!
我: 呜呜呜 我错了...

上班的时候:(下午 5 点 20 分)

她: 打卡!
....
她: 你都不打卡了!是不是不爱我了!
....
我: 呜呜呜 我错了...

开源项目介绍

Relationship-Maintenance

最稳定的(恋爱版)微信消息推送机器人。

开源地址: github.com/amazingTest/Relationship-Maintenance

技术栈

  • Python 3.6
    • requests
    • APScheduler

主要功能

  • 微信消息推送

    • cron 定时推送

    • 多任务并行推送

    • 自定义标题 & 内容

    • 随机内容配置(内置恋爱话术库)

程序架构

整个项目代码架构比较简单,核心代码共分为三个大模块:

  • info_bot: 主要用于获取消息,分为内部消息(不需要网络请求)和外部消息;
  • messenger:主要用于实现消息推送(如企业微信消息推送)
  • cron:主要用于定时任务管理,结合 info_bot 与 messenger 达到程序最终的目的:自定义消息定时推送

图片描述

使用

安装依赖

pip install -r requirements.txt  

消息推送配置

本项目采用了企业微信推送消息到微信(个人微信也能注册,无需认证,消息能直接在微信看到)

图片描述

消息配置步骤:

  1. 首先需要 [用电脑打开企业微信官网,注册一个企业]

  2. 注册成功后,点「管理企业」进入管理界面,选择「应用管理」 → 「自建」 → 「创建应用」

  3. 创建完成后进入应用详情页,可以得到应用ID ( agentid ),应用Secret ( secret )

  4. 进入「我的企业」页面,拉到最下边, 获取企业ID (corpid)

  5. 进入「我的企业」 → 「微信插件」,拉到下边扫描二维码,关注以后即可收到推送的消息。

最后一步,将上面获得的 agentid,secret,corpid 写入 config/messenger.json 中就大功告成了。

例子

 examples/config/messenger.json
 
 [{
	"channel": "enterprise_we_chat_app",
	"payload": {
		"agentid": "1000001",
		"corpid": "wweb6a6b9523f30fa4",
		"secret": "JF1BC4UvyEW8ZepkVfsg_AlAgjqFpNIslA_hUD78Dso"
	}
}]

定时任务配置

用于创建定时任务,定时向微信推送消息。

在 config/cron.json 中进行配置

例子

examples/config/cron.json
 
[{
	"mission": {
		"name": "lover_greeting",
		"payload": {
			"title": "宝贝~ 起床啦~",
			"begin_date": "2021-11-10",
			"greeting_type": "morning"
		}
	},
	"cron": "00 08 * * *",
	"messenger": "enterprise_we_chat_app"
}, {
	"mission": {
		"name": "lover_greeting",
		"payload": {
			"title": "宝贝~ 中午啦~",
			"greeting_type": "normal"
		}
	},
	"cron": "00 12 * * *",
	"messenger": "enterprise_we_chat_app"
}, {
	"mission": {
		"name": "lover_greeting",
		"payload": {
			"title": "520 !准时打卡!",
			"content": "准时不!",
		}
	},
	"cron": "20 17 * * *",
	"messenger": "enterprise_we_chat_app"
}]

例子中共有 3 个定时消息推送任务:

  1. 早上 8 点推送一条消息:

     宝贝~ 起床啦~ 今天我们在一起 184 天了~
     
     早安!当你睁开双眼,祝福已飞到你面前,带着快乐的旋律,愉悦的心态,滚滚的财源,甜蜜的浪漫和美妙的生活伴你度过美好的一天!   
    
  2. 中午 12 点推送一条消息:

     宝贝~ 中午啦~
     
     my baby,...爱你!
    
  3. 下午 5 点 20 推送一条消息:

    520 !准时打卡!
    
    准时不!  
    

参数解释

  1. payload 中的 begin_date(opt) 代表的是开始在一起的时间,用于计算在一起的时长;

  2. payload 中 title(opt) 表示推送的标题;

  3. payload 中 greeting_type(opt) 表示 lover_greeting 推送的类型(会随机在 config/builtin_sentences.json 中选择一条作为 content);

  4. 若在 payload 设置 content(opt) 值则会覆盖 greeting_type(opt) 参数产生的效果

运行程序

 python3 main.py  
  • 支持 docker 容器化部署哦!

最后的总结 & 回顾

整个项目从 整理思路 -> 完成实现 -> 成功部署 -> 通过测试 大概耗时 2 天。

写了不少的开源项目了,感觉每次写新项目都是打破旧我,重新架构的过程(代表了当下的巅峰代码实力…)。非常建议大家有灵感或想法的时候不要犹豫,马上去实现!(这真的是个好习惯,强烈推荐!)

最后祝愿世间有情人天长地久!

单身的朋友也无需气馁, 先把此项目安排上,早日拿下心上人哦~ :)

这篇关于程序员恋爱神器 - 史上最稳开源微信消息推送工具的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!