Skip to content

Commit f531064

Browse files
authored
Merge pull request #143 from wangxinleo/feature/develop
closed #142 有些小伙伴不喜欢显示周岁,希望自由控制 closed #114 修复emoji表情与随机颜色不兼容的问题 bug closed #149 修复 festivals = [] 时无法触发计算FESTIVALS的提醒 closed #148 本地服务器运行教程
2 parents 1983dd4 + d1d4a8e commit f531064

File tree

6 files changed

+218
-69
lines changed

6 files changed

+218
-69
lines changed

README.md

Lines changed: 171 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ wechat-public-account-push
2222

2323
**wechat-public-account-push 是一个用于微信公众号/微信测试号给用户执行微信推送的脚本,改编自目前小红书/知乎突然火起来的【给女朋友的七夕浪漫,微信自动推送消息】,用Nodejs实现而成。**
2424

25+
**如果这个项目很有意思,帮忙右上角点个 star✨ 支持我们 ❤❤**
26+
2527
[>>> 点这里获取更新公告✨](https://github.com/wangxinleo/wechat-public-account-push/discussions/categories/announcements)
2628

2729
详细功能如下:
@@ -49,9 +51,9 @@ wechat-public-account-push
4951
- [1. 如何使用](#1-如何使用(以测试号为例))
5052
- [1.1. 第一步:注册一个微信公众测试号](#11-第一步:注册一个微信公众测试号)
5153
- [1.2. 第二步:进行模板配置](#12-第二步:进行模板配置)
52-
- [1.3. 第三步:fork仓库,填入相应配置](#13-第三步:fork仓库,填入相应配置)
53-
- [1.4. 第四步:启用workflow自动任务,定时执行](#14-第四步:启用workflow自动任务,定时执行)
54-
- [1.5. 第五步(选做):检查脚本是否可以正常执行](#15-第五步(选做):检查脚本是否可以正常执行)
54+
- [1.3. 第三步:完成配置文件,并运行 wechat-public-account-push](#13-第三步:完成配置文件,并运行wechat-public-account-push)
55+
- [1.3.1. 方式一:使用Github Action](#131-方式一:使用Github-Action)
56+
- [1.3.2. 方式二:下载程序包到本地或服务器运行](#132-方式二:下载程序包到本地或服务器运行)
5557
- [2. 参数说明](#2-参数说明)
5658
- [3. 模板样例](#3-模板样例)
5759
- [4. action脚本说明](#4-action脚本说明)
@@ -169,7 +171,15 @@ wechat-public-account-push 实现自消息推送的原理,是通过调用一
169171
![图片无法查看请移步顶部访问 国内备用仓库地址](img/wx-test-tmp.png)
170172

171173

172-
### 1.3. 第三步:fork仓库,填入相应配置
174+
### 1.3. 第三步:完成配置文件,并运行wechat-public-account-push
175+
176+
#### 1.3.1 方式一:使用Github-Action
177+
178+
👇👇👇👇点击展开
179+
180+
<details>
181+
182+
**1.3.1.1 fork仓库并修改相应配置**
173183

174184
- fork仓库
175185

@@ -190,7 +200,7 @@ wechat-public-account-push 实现自消息推送的原理,是通过调用一
190200

191201
![图片无法查看请移步顶部访问 国内备用仓库地址](img/edit-config-commit.png)
192202

193-
### 1.4. 第四步:在私人仓库中写入自己公众号的信息,启用workflow自动任务,定时执行
203+
**1.3.1.2 在私人仓库中写入自己公众号的信息,启用workflow自动任务,定时执行**
194204

195205
- 按下图添加两项保密信息`APP_ID``APP_SECRET`, 可以从测试号后台拿到这两项信息
196206

@@ -213,14 +223,12 @@ wechat-public-account-push 实现自消息推送的原理,是通过调用一
213223

214224
![图片无法查看请移步顶部访问 国内备用仓库地址](img/action.png)
215225

216-
### 1.5. 第五步(选做):检查脚本是否可以正常执行
226+
**1.3.1.3 (选做):检查脚本是否可以正常执行**
217227

218228
- 手动启动脚本
219229

220230
![图片无法查看请移步顶部访问 国内备用仓库地址](img/action-test.png)
221231

222-
### 1.5. 第五步(选做):检查脚本是否可以正常执行
223-
224232
- 查看执行结果
225233

226234
![图片无法查看请移步顶部访问 国内备用仓库地址](img/action-test-2.png)
@@ -231,6 +239,156 @@ wechat-public-account-push 实现自消息推送的原理,是通过调用一
231239

232240
![图片无法查看请移步顶部访问 国内备用仓库地址](img/action-test-4.png)
233241

242+
</details>
243+
244+
<br/>
245+
246+
#### 1.3.2 方式二:下载程序包到本地或服务器运行
247+
如果是 Nodejs 开发者,直接 Clone 源码,然后 VS 打开解决方案,配置 Cookie 后即可直接本地进行运行和调试。
248+
249+
对于不是开发者的朋友,可以通过以下命令到本地或任意服务器运行,步骤如下。
250+
251+
- Linux 系统
252+
253+
👇👇👇👇点击展开
254+
255+
<details>
256+
257+
Ⅰ. **安装运行环境**
258+
259+
- 如果本地已安装 `Nodejs``git` 环境, 请跳过这一步
260+
261+
如果您使用的是以 Debian 或 Ubuntu 为基础的 服务器系统
262+
263+
```shell
264+
265+
# Using Debian and Ubuntu based distributions
266+
cd ~
267+
268+
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
269+
270+
sudo apt-get install -y nodejs
271+
272+
sudo apt-get install git
273+
274+
```
275+
276+
如果您使用的是 centos 或 其他 服务器系统
277+
278+
```shell
279+
280+
# Using Enterprise Linux based distributions
281+
cd ~
282+
283+
curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -
284+
285+
yum install git
286+
287+
```
288+
289+
Ⅱ. **下载项目**
290+
291+
```shell
292+
293+
cd ~
294+
295+
git clone https://github.com/wangxinleo/wechat-public-account-push.git
296+
297+
# 二选一:中国内地执行这一步,速度更快
298+
npm install -g cnpm --registry=https://registry.npm.taobao.org
299+
300+
cnpm install
301+
302+
# 二选一:国外服务器执行这一步
303+
npm install
304+
305+
```
306+
307+
Ⅲ. **填写配置**
308+
309+
不会使用vim 命令的可以使用其他命令,或用图形化界面进行修改。
310+
311+
这是你的服务器,只要能改掉文件里的配置就可以了。
312+
313+
```shell
314+
315+
vim ~/wechat-public-account-push/config/index.js
316+
317+
```
318+
319+
Ⅳ. **运行**
320+
321+
```shell
322+
323+
node ~/wechat-public-account-push/main.js
324+
325+
```
326+
327+
</details>
328+
329+
<br/>
330+
331+
- Windows 系统
332+
333+
👇👇👇👇点击展开
334+
335+
<details>
336+
337+
Ⅰ. **安装运行环境**
338+
339+
- 如果本地已安装 `Nodejs``git` 环境, 请跳过这一步
340+
341+
[下载Nodejs16.x安装包](https://nodejs.org/dist/v16.17.0/node-v16.17.0-x64.msi)
342+
343+
[下载git安装包](https://github.com/git-for-windows/git/releases/download/v2.37.3.windows.1/Git-2.37.3-64-bit.exe)
344+
345+
安装说明:**无它,一路next**
346+
347+
Ⅱ. **下载项目**
348+
349+
在你的电脑里随便一个盘选择任意一个文件夹(最好自己创建,自己要知道在哪里),右键 --> git base
350+
351+
执行以下命令
352+
353+
```shell
354+
355+
git clone https://github.com/wangxinleo/wechat-public-account-push.git
356+
357+
# 二选一:中国内地执行这一步,速度更快
358+
npm install -g cnpm --registry=https://registry.npm.taobao.org
359+
360+
cnpm install
361+
362+
# 二选一:国外服务器执行这一步
363+
npm install
364+
365+
```
366+
367+
Ⅲ. **填写配置**
368+
369+
如果上一步执行成功了,你当前文件夹里面肯定会出现 `wechat-public-account-push` 文件夹
370+
371+
`wechat-public-account-push/config/index.js` 中修改配置。
372+
373+
如果显示无法打开,选中该文件 --> 右键 --> 打开方式 --> 记事本
374+
375+
按照提示修改配置
376+
377+
Ⅳ. **运行**
378+
379+
`wechat-public-account-push` 文件夹中,右键 --> git base
380+
381+
执行以下命令
382+
383+
```shell
384+
385+
node ./main.js
386+
387+
```
388+
389+
</details>
390+
391+
<br/>
234392

235393
## 2. 参数说明
236394
这里的**参数**是指能够被微信测试号模板接收的参数集合。启动后会根据我们的配置信息,组成相应的参数,如:
@@ -303,11 +461,11 @@ wechat-public-account-push 实现自消息推送的原理,是通过调用一
303461

304462
| 参数 | 详细 | 示例 |
305463
|-----------------------|---------------------------|-----------------------------|
306-
| comprehensive_horoscope.DATA | 综合运势 | 整体运势陷入低迷中,警惕破罐子破的行为。建议享受美好的假期,不要因为一些琐事而影响心情,更不要掉入小人的陷阱中。生活方面情绪低落,容易因为在与别人的比较中不断打击自信心,导致幸福感指数急速下降。 |
307-
| love_horoscope.DATA | 爱情运势 | 单身的考虑得太多,反而会犹豫不决。恋爱中的回应恋人的热情,利于加深感情的互动。 |
308-
| career_horoscope.DATA | 事业学业 | 可能会遇到小人的挑衅,建议保持理性的思考,以大局为主,稳住自己前进的步伐。 |
309-
| wealth_horoscope.DATA | 财富运势 | 偶尔会有零零散散的小财进账,但是到手就很快花出去了,基本上没存到多少钱。 |
310-
| healthy_horoscope.DATA | 健康运势 | 建议避开高峰期出门,容易因为堵车而破坏出门的心情,更要警惕不能有路怒行为。 |
464+
| comprehensive_horoscope.DATA | 综合运势 | 太多了,不示例了,自己调用查看效果 |
465+
| love_horoscope.DATA | 爱情运势 | 太多了,不示例了,自己调用查看效果 |
466+
| career_horoscope.DATA | 事业学业 | 太多了,不示例了,自己调用查看效果 |
467+
| wealth_horoscope.DATA | 财富运势 | 太多了,不示例了,自己调用查看效果 |
468+
| healthy_horoscope.DATA | 健康运势 | 太多了,不示例了,自己调用查看效果 |
311469

312470

313471
**计时类**

__tests__/services.spec.js

Lines changed: 6 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -219,9 +219,9 @@ describe('services', () => {
219219
})
220220
test('getBirthdayMessage', () => {
221221
config.FESTIVALS = [
222-
{ type: '*生日', name: '老婆', year: '1999', date: '09-19' },
222+
{ type: '*生日', name: '老婆', year: '1999', date: '09-19', isShowAge: true },
223223
{ type: '节日', name: '结婚纪念日', year: '2020', date: '09-03' },
224-
{ type: '生日', name: '李四', year: '1996', date: '09-31' },
224+
{ type: '生日', name: '李四', year: '1996', date: '09-31', isShowAge: true },
225225
{ type: '节日', name: '被搭讪纪念日', year: '2021', date: '09-01' }
226226
]
227227
config.FESTIVALS_LIMIT = 4
@@ -255,19 +255,19 @@ describe('services', () => {
255255
MockDate.reset()
256256
config.FESTIVALS_LIMIT = 4
257257
config.FESTIVALS = [
258-
{ type: '测试日', name: '老婆', year: '1996', date: '09-02' },
258+
{ type: '测试日', name: '老婆', year: '1996', date: '09-02', isShowAge: true },
259259
{ type: '测试日', name: '结婚纪念日', year: '2020', date: '09-03' },
260-
{ type: '测试日', name: '李四', year: '1996', date: '09-31' },
260+
{ type: '测试日', name: '李四', year: '1996', date: '09-31', isShowAge: true },
261261
{ type: '测试日', name: '被搭讪纪念日', year: '2021', date: '09-01' }
262262
]
263263
expect(getBirthdayMessage()).toEqual('')
264264
config.FESTIVALS = null
265265
expect(getBirthdayMessage()).toEqual('')
266266
MockDate.set('1999-10-28')
267267
config.FESTIVALS = [
268-
{ type: '*生日', name: '老婆', year: '1999', date: '09-19' },
268+
{ type: '*生日', name: '老婆', year: '1999', date: '09-19', isShowAge: true },
269269
{ type: '节日', name: '结婚纪念日', year: '2020', date: '09-03' },
270-
{ type: '生日', name: '李四', year: '1996', date: '09-31' },
270+
{ type: '生日', name: '李四', year: '1996', date: '09-31', isShowAge: true },
271271
{ type: '节日', name: '被搭讪纪念日', year: '2021', date: '09-01' }
272272
]
273273
expect(getBirthdayMessage()).toEqual(`
@@ -611,36 +611,5 @@ describe('services', () => {
611611
value: '今日爱情运势: 单身的遇到一些契机,打开彼此的心扉。恋爱中的得到恋人行动上的重视,也会收到承诺的兑现。',
612612
name: 'love_horoscope'
613613
}])
614-
// config.CONSTELLATION_FORTUNE = [{"date": "09-02", "name": "老婆0"}]
615-
// axios.get = async () => {
616-
// throw new Error
617-
// }
618-
// expect(getConstellationFortune()).rejects.toEqual(new Error)
619-
620-
// expect(getConstellationFortune()).resolves.toEqual([{
621-
// name: 'comprehensive_horoscope',
622-
// value: '今日综合运势: 运势正当旺,心心念着的事情或能得到回响。注意力集中,坚持的事很有毅力,能够摒除外界干扰,一心一意向着目标前行。生活方面容易接收到身边的各种正能量,也影响着你乐观的思考方式,能善于发现身边的美好。',
623-
// color: '#4d5446'
624-
// },
625-
// {
626-
// name: 'love_horoscope',
627-
// value: '今日爱情运势: 单身的遇到一些契机,打开彼此的心扉。恋爱中的得到恋人行动上的重视,也会收到承诺的兑现。',
628-
// color: '#22f6b2'
629-
// },
630-
// {
631-
// name: 'career_horoscope',
632-
// value: '今日事业学业: 福星高照! 去争取自己想要的一切吧!',
633-
// color: '#c933e8'
634-
// },
635-
// {
636-
// name: 'wealth_horoscope',
637-
// value: '今日财富运势: 求财方面陆续进账,简直就是四方来财的节奏,容易得到贵人的帮助,收入可观。',
638-
// color: '#83cdc0'
639-
// },
640-
// {
641-
// name: 'healthy_horoscope',
642-
// value: '今日健康运势: 玩手机要适度,不能过度沉迷,会容易带来烦躁的情绪,而且还会影响视力。',
643-
// color: '#829301'
644-
// }])
645614
})
646615
})

__tests__/utils.spec.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
import { toLowerLine, getColor, randomNum, sortBirthdayTime, getConstellation } from '../src/utils'
22
import MockDate from 'mockdate'
3+
import { config } from '../config'
4+
import { jest } from '@jest/globals'
5+
jest.mock('../config')
36

47
describe('utils', () => {
58
test.each([
@@ -12,6 +15,9 @@ describe('utils', () => {
1215
})
1316

1417
test('getColor', () => {
18+
config.isShowColor = false
19+
expect(getColor()).toBeUndefined()
20+
config.isShowColor = true
1521
expect(getColor()).toMatch(/#[\dA-Fa-f]{6}/)
1622
})
1723

0 commit comments

Comments
 (0)