-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.js
More file actions
93 lines (73 loc) · 2.18 KB
/
app.js
File metadata and controls
93 lines (73 loc) · 2.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
'use strict';
const _ = require('lodash');
const { Wechaty, Room } = require('wechaty');
const Crawler = require('crawler');
const qrcode = require('qrcode-terminal');
const News = require('coin-news');
const Market = require('markets');
module.exports = app => {
app.beforeStart(async () => {
app.market = new Market();
app.coins = await app.market.coins();
app.crawler = new Crawler({
maxConnection: 10,
rateLimit: 1500
});
const news = new News(app.crawler);
news.on('data', async data => {
if (!data) {
return;
}
const content = '';
const topics = ['区块链研究技术群', '国际区块链韭菜俱乐部'];
for (let j = 0; j < topics.length; j++) {
const r = await Room.find({ topic: topics[j] });
if (!r) {
return;
}
for (let i = 0; i < data.length; i++) {
await r.say(data[i].title + '\n' + data[i].url);
}
}
});
// start get news
setTimeout(async () => {
setInterval(async () => {
await news.start();
}, 60000);
}, 120000);
});
Wechaty.instance()
.on('scan', async function(url, code) {
const loginUrl = url.replace(/\/qrcode\//, '/l/');
await qrcode.generate(loginUrl);
})
.on('login', user => {
app.logger.info(`WeChat: ${user.name()} logged in`);
})
.on('message', async function(message) {
const symbol = message.content().toLowerCase();
if (message.self() && (IS_PROD() || (!IS_PROD() && symbol.length >= 5)))
return;
const room = message.room();
if (!room) return;
const topic = room.topic();
if (!_.includes(topic, '区块链')) return;
const platforms = [];
_.each(app.coins, (v, k) => {
let suffix = app.market.platforms[k]['suffix'];
if (_.includes(v, `${symbol}${suffix}`)) {
platforms.push(k);
}
});
if (0 === platforms.length) return;
message.say(await app.market.ticker(symbol, platforms));
})
.on('error', error => {
app.logger.error(error.message);
})
.init();
};
function IS_PROD() {
return process.env.EGG_SERVER_ENV === 'prod';
}