-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
191 lines (176 loc) · 4.85 KB
/
index.js
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
/**
* Wechaty - WeChat Bot SDK for Personal Account, Powered by TypeScript, Docker, and 💖
* - https://github.com/chatie/wechaty
*/
const { Wechaty } = require('wechaty')
const readFile = require('./readfile');
const filename="poemall.txt";
const schedule = require('node-schedule');
var poemarr = new Array();
readFile.readFile(filename,readFileCallback);
var jobArr = new Array();
var groupArr = new Array();
function readFileCallback(arr){
poemarr=arr;
let length=poemarr.length;
let random=randomNum(1,length)
console.log(arr[random])
console.log(poemarr.length);
}
function onScan (qrcode, status) {
require('qrcode-terminal').generate(qrcode, { small: true }) // show qrcode on console
const qrcodeImageUrl = [
'https://api.qrserver.com/v1/create-qr-code/?data=',
encodeURIComponent(qrcode),
].join('')
console.log(qrcodeImageUrl)
}
function onLogin (user) {
console.log(`${user} login`)
}
function onLogout(user) {
console.log(`${user} logout`)
}
async function onMessage (msg) {
let room = msg.room()
let sender=msg.from()
let content=msg.text()
let to = msg.to()
if (msg.self()) {
console.log('msg sended by myself')
if(content&&content.indexOf('添加白名单')>-1){
console.log('添加一个白名单');
clearMsgJob(to.id);
}
if ('广告'===content) {
console.log('对面是广告,开始反击')
sendMsg(to)
}
return
}
if ( room) {
console.log('message is inside a room.')
return
}
let type = msg.type()
console.log('type==='+type);
if (type=== bot.Message.Type.Text) {
console.log('message is a txt',content)
//console.log(content)
//console.log(poemarr.length);
if ('我错了'===content) {
clearMsgJob(sender.id)
await sender.say('收到你的知错信息了,知道错了就行,停止了不发送了');
console.log('收到了你发的取消信息');
}
if (content.indexOf(',对方验证通过后,才能聊天')>-1){
clearMsgJob(sender.id);
}
}else if(type=== bot.Message.Type.Url ||type=== bot.Message.Type.Unknown ||type=== bot.Message.Type.Attachment
|| type=== bot.Message.Type.MiniProgram){
console.log('收到一个广告,开始反击')
//sendMsg(sender)
}
}
function clearMsgJob(id){
//schedule.cancelJob( id)
//并且移除jobarr对象
let index=jobArr.indexOf(id);
if (index > -1) {
jobArr.splice(index, 1);
}
removeAaary(groupArr,id);
}
async function sendMsg(sender){
if(isHaveJob(sender.id)){
console.log('已经存在定时任务了,暂时不用启动了');
return;
}
await sender.say('我收到了你的一个广告,比较讨厌广告,我将反击了,哼')
await sender.say('我将每隔两秒给你发一首唐诗喔,要多学习.0~0')
await sender.say('回复"我错了",我将停止发送,我要开始啦.')
//await sender.say(getRandomPoem())
addSendPoemArr(sender);
console.log(jobArr);
//schedule.scheduleJob(sender,'*/2 * * * * *', sendPoemMsg.bind(null,sender) );
}
function addSendPoemArr(sender){
jobArr.push(sender.id);
var obj={};
obj.id=sender.id;
obj.data=sender;
groupArr.push(obj);
}
function getIndex (_arr,_id) {
var len = _arr.length;
for(var i = 0; i < len; i++)
{
if(_arr[i].id == _obj)
{
return parseInt(i);
}
}
return -1;
}
/*删除数组中的某一个对象
_arr:数组
_obj:需删除的对象
*/
function removeAaary(_arr, id) {
var length = _arr.length;
for (var i = 0; i < length; i++) {
if (_arr[i].id == id) {
if (i == 0) {
_arr.shift(); //删除并返回数组的第一个元素
return _arr;
}
else if (i == length - 1) {
_arr.pop(); //删除并返回数组的最后一个元素
return _arr;
}
else {
_arr.splice(i, 1); //删除下标为i的元素
return _arr;
}
}
}
}
function isHaveJob(id){
return jobArr.indexOf(id)>-1;
}
function getRandomPoem(){
let length=poemarr.length;
let random=randomNum(1,length);
return poemarr[random];
}
function sendPoemMsg(e){
console.log('发送唐诗给用户');
//console.log(e);
e.say(getRandomPoem());
}
var randomNum=function (minNum,maxNum){
switch(arguments.length){
case 1:
return parseInt(Math.random()*minNum+1,10);
break;
case 2:
return parseInt(Math.random()*(maxNum-minNum+1)+minNum,10);
break;
default:
return 0;
break;
}
}
setInterval(function(){
for (var index in groupArr){
sendPoemMsg(groupArr[index].data);
}
},4000);
const bot = new Wechaty()
bot.on('scan', onScan)
bot.on('login', onLogin)
bot.on('logout', onLogout)
bot.on('message', onMessage)
bot.start()
.then(() => console.log('Starter Bot Started.'))
.catch(e => console.error(e))