forked from dev-coco/WhatsApp-Batch-Unbanned-Tool
-
Notifications
You must be signed in to change notification settings - Fork 0
/
code.gs
136 lines (126 loc) · 3.57 KB
/
code.gs
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
function doGet () {
return HtmlService.createTemplateFromFile('index').evaluate().setTitle('WhatsApp 解封提交工具').setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL)
}
function include (filename) {
return HtmlService.createHtmlOutputFromFile(filename).getContent()
}
/**
* 设置存储数据的表格
* TODO: 需要放入表格 ID
*/
const sheet = SpreadsheetApp.openById('Input Sheet ID')
// 存放剩余次数,表格默认命名为 Data
const getSheetData = sheet.getSheetByName('Data').getRange('A1')
// 存放解封结果,表格默认命名为 Result
const getResultSheet = sheet.getSheetByName('Result')
// 剩余使用量
function getUsage () {
return getSheetData.getValue()
}
// 解封数量
function unblockCount () {
return getResultSheet.getRange('A:A').getValues().length
}
// 更新使用量
function resetData () {
getSheetData.setValue(MailApp.getRemainingDailyQuota())
successfulUnblock()
}
// 获取成功解封的号码
function successfulUnblock () {
const thread = GmailApp.getInboxThreads()
const result = []
for (const mail of thread) {
const content = mail.getMessages()[0].getBody()
// 成功解封的字样
if (content.indexOf('removed the ban') > -1) {
// 筛选出号码
const phoneNumber = content.replace(/\n|request #.+|<.*?>|. days|[^0-9]/g, '')
result.push([phoneNumber])
} // End if
}
// 排除重复
const newArray = unique(result)
getResultSheet.getRange(1, 1, newArray.length, 1).setValues(newArray)
}
/**
* @description 查询解封状态
* @param {Array} phoneNumArray - 查询的号码
* @returns {Array} 查询结果
*/
function queryState (phoneNumArray) {
const value = getResultSheet.getRange('A:A').getValues()
// 设置新数组
const newValue = []
for (let i = 0; i < value.length; i++) {
newValue.push(value[i].toString())
}
const result = []
for (const phoneNumber of phoneNumArray) {
if (newValue.indexOf(phoneNumber.replace(/[^0-9]/g, '')) > -1) {
// unbaned
result.push([phoneNumber, '已解封'])
} else {
// still banned
result.push([phoneNumber, '未解封'])
} // End if
} // End for of
return result
}
/**
* @description 数组排除重复和空值
* @param {Array} arr - 数组
* @returns {Array} 新数组
*/
function unique (arr) {
const map = {}
const newArray = []
for (let i = 0; i < arr.length; i++) {
const value = arr[i]
if (value[0]) {
if (map[value]) continue
else {
map[value] = 1
newArray.push(arr[i])
} // End if
} // End if
}
return newArray
}
/**
* @description 随机生成写信的模板
* @param {string} phone - 写信模版
* @returns {string} 生成好的模板
*/
function unBlockTemplate (phone) {
// TODO: 需要设置写信的模版,并且放入 phone 变量
const template = [
]
// 生成随机数
const index = Math.floor((Math.random() * template.length))
return template[index]
}
/**
* @description 发送邮件
* @param {string} phoneNumber - 手机号码
* @returns {string} 完成
*/
function sendEmail (phoneNumber) {
// 获取剩余次数
let usage = getUsage()
phoneNumber.forEach(function (phone) {
usage--
// 检测是否达到上限
if (usage === 0) {
return '剩余次数已用完'
}
/**
* 发送邮件
* TODO: 需要设置发送邮件的标题
*/
MailApp.sendEmail('[email protected]', 'Input Email Title', unBlockTemplate(phone))
// 记录剩余次数
getSheetData.setValue(usage)
})
return '提交完成!请耐心等待,请勿重复提交!'
}