在我们程序员的世界里,比起找男/女朋友,更习惯于电脑打交道。这是因为程序不会撒谎且能够及时给予结果反馈,而人类的感情基本是没有什么规律可循的。具体有多不规律呢?举个恐怖的例子,想象一下,你在实现接口时引入 random.choice() 随机调用执行函数 | 接口返回随机的数据结构…
这导致在大多数人眼中程序员自带害羞 & 木纳的 attribute,认为我们不擅长与异性同类打交道。但事实是,我们一旦锁定了目标,在我们缜密的 (编程) 表白逻辑与 23 种 (设计) 套路模式下,对方大概率会缴械投降。并且我相信,在一起过不了多久,他/她就会陷进我们层出不穷的恋爱黑科技中,无法自拔…
来听一听我的恋爱经历。
不久前我认识了一个女生,可能是被狮子座女生强烈且独特的个性所吸引,在完成了上线(表白)前最后的预发布测试后,我向她表白了。正好她也喜欢我(测试通过),于是我们很快就在一起了。
不知不觉间,已经一起度过了半年的时光。这期间经历了很多很多事情,有好有坏。但不得不承认她确实丰富了我的日常生活(除电脑外的生活),并且我们都在变得越来越好,这让我更坚定了跟她走下去的决心。
一直想让她亲身体验一下程序员男友的技术实力,于是趁着这次五一小长假,我终于实现了藏在心中已久的黑科技:
恋爱版微信消息推送机器人。
先给大家展示一下具体效果。
测试环境效果展示:
线上环境效果展示:
项目灵感来源于日常生活中的一些小插曲:
回家路上:
她: 今天是我们在一起的多少天了 ? 我: em.... 好像是 120 天了 ? 她: 错了!是 121 天了! 我: 呜呜呜 我错了...
上班的时候:(下午 5 点 20 分)
她: 打卡! .... 她: 你都不打卡了!是不是不爱我了! .... 我: 呜呜呜 我错了...
Relationship-Maintenance 最稳定的(恋爱版)微信消息推送机器人。
开源地址: github.com/amazingTest/Relationship-Maintenance
微信消息推送
cron 定时推送
多任务并行推送
自定义标题 & 内容
随机内容配置(内置恋爱话术库)
整个项目代码架构比较简单,核心代码共分为三个大模块:
pip install -r requirements.txt
本项目采用了企业微信推送消息到微信(个人微信也能注册,无需认证,消息能直接在微信看到)
消息配置步骤:
首先需要 [用电脑打开企业微信官网,注册一个企业]
注册成功后,点「管理企业」进入管理界面,选择「应用管理」 → 「自建」 → 「创建应用」
创建完成后进入应用详情页,可以得到应用ID ( agentid ),应用Secret ( secret )
进入「我的企业」页面,拉到最下边, 获取企业ID (corpid)
进入「我的企业」 → 「微信插件」,拉到下边扫描二维码,关注以后即可收到推送的消息。
最后一步,将上面获得的 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 个定时消息推送任务:
早上 8 点推送一条消息:
宝贝~ 起床啦~ 今天我们在一起 184 天了~ 早安!当你睁开双眼,祝福已飞到你面前,带着快乐的旋律,愉悦的心态,滚滚的财源,甜蜜的浪漫和美妙的生活伴你度过美好的一天!
中午 12 点推送一条消息:
宝贝~ 中午啦~ my baby,...爱你!
下午 5 点 20 推送一条消息:
520 !准时打卡! 准时不!
payload 中的 begin_date(opt) 代表的是开始在一起的时间,用于计算在一起的时长;
payload 中 title(opt) 表示推送的标题;
payload 中 greeting_type(opt) 表示 lover_greeting 推送的类型(会随机在 config/builtin_sentences.json 中选择一条作为 content);
若在 payload 设置 content(opt) 值则会覆盖 greeting_type(opt) 参数产生的效果
python3 main.py
整个项目从 整理思路 -> 完成实现 -> 成功部署 -> 通过测试 大概耗时 2 天。
写了不少的开源项目了,感觉每次写新项目都是打破旧我,重新架构的过程(代表了当下的巅峰代码实力…)。非常建议大家有灵感或想法的时候不要犹豫,马上去实现!(这真的是个好习惯,强烈推荐!)
最后祝愿世间有情人天长地久!
单身的朋友也无需气馁, 先把此项目安排上,早日拿下心上人哦~ :)