-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtgTomBot.js
More file actions
422 lines (362 loc) · 17.5 KB
/
Copy pathtgTomBot.js
File metadata and controls
422 lines (362 loc) · 17.5 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
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
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
// 真是对不起呀, 发布代码的时候我把doGet 给删除了,导致和视频里不一样, 现在加回去。。。
function doGet(e){
return HtmlService.createHtmlOutput("Hello World!! No, this link should be hidden!!!");
}
function doPost(e){
var dataFromTelegram = {
"method": "post",
"payload": e.postData.contents
};
var body = JSON.parse(e.postData.contents);
var payload = preparePayload(body);
postTelegram(payload);
var dataToTelegram = {
"method": "post",
"payload": payload
};
}
function postTelegram(payload) { //出来做成了函数,
var data = {
"method": "post",
"contentType":'application/json',
"payload": JSON.stringify(payload)
};
UrlFetchApp.fetch("https://api.telegram.org/bot902868194:AAGm8NzaoB8EPKP8wNsRdGK-meHH2nPbV4o/", data);
}
//获取名字,不管有没有last name,总返回正确值
function getName(user) {
var name = user.first_name;
if (user.last_name) {
var nameArray = user.last_name.split('');
for (var i = 0, len = nameArray.length; i <len ; i++) {
if (nameArray[i] >= 0x4E00 && nameArray[i] <= 0x29FA5){//lastname中是否有中文
return user.last_name+user.first_name;
}
}
name += " " + user.last_name;
}
return name;
}
function getMentionName(user) {
var mentionName = '';
var userName = getName(user);
if (!userName) {
userName = '无名氏';
}
mentionName = getMarkDownUserUrl(userName, user.id);
return mentionName;
}
function getMarkDownUserUrl(userName, userId) {
//return "["+userName+"](tg://user:id)=" + userId +")";
//var name1 = "<a href='tg://user?id=userId'>+userName+</a>";
//return name1;
return "<a href="+"'tg://user?id="+userId+"'>"+userName+"</a>";
}
/*function escapeMarkDown(toEscapeMsg) {//去除名字里的*或者下划线等Markdown语法
var escapedMsg = toEscapeMsg
.replace(/_/g,"\\_")
.replace(/\*!/g,"\\*")
.replace(/\[/g,"\\[")
.replace(/`/g,"\\`");
return escapedMsg;
}*/
function preparePayload(body){
var payload;
if (body.message) {
body.message.chat.id = body.message.chat.id + ''; //如果有“发送的”(不是callback的)消息,就取出id,变为字符串
if (body.message.new_chat_member) {//这是进群代码
//这是机器人要发送的东西
payload = {
"method" : "sendMessage",
"chat_id" : body.message.chat.id,
"text" : "你好,欢迎进群,互联网非法外之地,言辞有度",
"parse_mode" : "HTML",
"disable_web_page_preview": true
};
//最好还能加入进群那个人的名字
payload.text =" 互联网非法外之地,言辞需有度\n"+ "你好," + getMentionName(body.message.new_chat_member);//去OneNote可以看到每个人入群的代码,里面可以找到名字
return payload
}
if (body.message.left_chat_member) {//这是退群代码,差别就是left与new
//这是机器人要发送的东西
payload = {
"method" : "sendMessage",
"chat_id" : body.message.chat.id,
"text" : "你好,欢迎进群,互联网非法外之地,言辞有度",
"parse_mode" : "HTML",
"disable_web_page_preview": true
};
//最好还能加入进群那个人的名字
payload.text =" 很遗憾"+ getMentionName(body.message.left_chat_member) + "退出了本群";
return payload
}
if (body.message.pinned_message) {
payload = {
"method" : "sendMessage",
"chat_id" : body.message.chat.id,
"text" : "你好,欢迎进群,互联网非法外之地,言辞有度",
"parse_mode" : "HTML",
"disable_web_page_preview": true
};
var whoPinned = getName(body.message.from);//把置顶消息的那个人定义一下
var whoOwned = getName(body.message.pinned_message.from);//把谁发的消息置顶了
payload.text = "<b>"+ whoPinned +"</b>"+ "置顶了"+ "<b>"+ whoOwned +"</b>" + "一则消息:\n"+body.message.pinned_message.text
+ "\n \n"
+"请注意查收";
return payload;
}
if (body.message.text){
body.message.text = body.message.text.toLowerCase();
body.message.text = body.message.text.replace(/@fileTans_bot/g);
var paras = body.message.text.trim().split(' ');
//移除多余空格
paras = paras.filter(function (para) {
if (para){
return true;
}
});
payload = {
"method": "sendMessage",
"chat_id": body.message.chat.id,
"text": "说的啥?",
"parse_mode":"HTML"//这样就告诉tg,这个text是个HTML的文本
//"disable_web_page_preview": true //不显示预览
};
if(body.message.text.indexOf('/help') === 0) {
//回复类型的键盘
var replyKeyboardMarkup1 = {};
replyKeyboardMarkup1.keyboard = [];
replyKeyboardMarkup1.resize_keyboard = false;
replyKeyboardMarkup1.one_time_keyboard = true;
replyKeyboardMarkup1.selective = true;
//删除按钮,这里采用二级菜单的形式
if (paras[1]){
if ('remove'.indexOf(paras[1]) >= 0) {
var replyKeyboardRemove ={
remove_keyboard : true,
selective : false
};
payload.reply_markup = replyKeyboardRemove;
payload.text = "已删除按钮";
}
return payload;
}
else {
var mentionName = getMentionName(body.message.from);
payload.text = "您好 " + mentionName+"!";
payload.text += '你好欢迎使用本机器人,本机器人现在可以说这句话,你也可以试试“/color”\n';
payload.text += '若要移除按钮,可以在/help后空格输入remove';
var command9 =[
"/colors",
"/list"
];
var count = 0;
for (var i = 0; i < command9.length / 3; i++) {
var keyboardRow =[];
for (var j = 0; j < 3; j++) {
var keyboardButton ={
text: command9[i*3+j]
};
count++;
keyboardRow.push(keyboardButton);
if (count >= command9.length) {
break;
}
}
replyKeyboardMarkup1.keyboard.push(keyboardRow);
}
payload.reply_markup = replyKeyboardMarkup1;
}
return payload;
}
if(body.message.text.indexOf('/color') === 0){
payload.text="欢迎尝试color,其实并没有什么卵用\n 我认识的颜色有:\n红\n黄\n蓝";
return payload;
}
if(body.message.text.indexOf('/list') === 0){
//定义按钮
var inlineKeyboardMarkup = {};
inlineKeyboardMarkup.inline_keyboard = [];
//inlineKeyboardMarkup.resize_keyboard = [];
//inlineKeyboardMarkup.one_time_keyboard =true;
var keyboardRow = [];
var keyboardButton = [];
/* for (var i = 0; i < 3; i++) {
keyboardButton[i] = {
text:'按钮'+(i+1),
url:'http://www.google.com'
};
keyboardRow.push(keyboardButton[i]);
}*/
if (paras[1]) {
switch (paras[1].toLowerCase()) {
case "people":
if (paras[2]) {
//if (paras[2]=== 'Roy这名咋又不行'.toLowerCase()) {//这样要输入的太多了,使用体验极差,换种方式,有关键字就行
if ('Roy这名咋又不行'.toLowerCase().indexOf(paras[2]) >= 0) {
//payload.text = "Roy这名咋又不行 - https://space.bilibili.com/35906765/video";
payload.text = "Roy这名咋又不行";
keyboardButton[0] = {
text:'Roy这名咋又不行',
url:'https://space.bilibili.com/35906765/video'
};
keyboardRow.push(keyboardButton[0]);
}
if ('8k8k'.toLowerCase().indexOf(paras[2]) >= 0) {
//payload.text = "8k8k - https://space.bilibili.com/4345670?from=search&seid=17766778979352595086";
payload.text = "8k8k";
keyboardButton[0] = {
text:'8k8k',
url:'https://space.bilibili.com/4345670?from=search&seid=17766778979352595086'
};
keyboardRow.push(keyboardButton[0]);
}
if ('YuFeng Deng'.toLowerCase().indexOf(paras[2])>=0) {
//payload.text = "YuFeng Deng - https://www.youtube.com/channel/UCG6xoef2xU86hnrCsS5m5Cw?view_as=subscriber";
payload.text = "YuFeng Deng";
keyboardButton[0] = {
text:'YuFeng Deng',
url:'https://www.youtube.com/channel/UCG6xoef2xU86hnrCsS5m5Cw?view_as=subscriber'
};
keyboardRow.push(keyboardButton[0]);
}
inlineKeyboardMarkup.inline_keyboard.push(keyboardRow);
payload.reply_markup = inlineKeyboardMarkup;
//return payload;
}
else{
payload.text = "我喜欢的自媒体有:Roy这名咋又不行、YuFeng Deng、8k8k\n其中最喜欢YuFeng Deng - https://www.youtube.com/channel/UCG6xoef2xU86hnrCsS5m5Cw?view_as=subscriber";
keyboardButton[0] = {
text:'Roy这名咋又不行',
url:'https://space.bilibili.com/35906765/video'
};
keyboardButton[1] = {
text:'8k8k',
url:'https://space.bilibili.com/4345670?from=search&seid=17766778979352595086'
};
keyboardButton[2] = {
text:'YuFeng Deng',
url:'https://www.youtube.com/channel/UCG6xoef2xU86hnrCsS5m5Cw?view_as=subscriber'
};
keyboardRow.push(keyboardButton[0]);
keyboardRow.push(keyboardButton[1]);
keyboardRow.push(keyboardButton[2]);
inlineKeyboardMarkup.inline_keyboard.push(keyboardRow);
payload.reply_markup = inlineKeyboardMarkup;
}
break;
case "color":
payload.text = "颜色有:\n红\n黄\n蓝\n";
break;
default:
payload.text = "在/list之后空格一下,输入people或者color,其他不支持,其中people还可继续空格,继续输入列表";
break;
//payload.text="Roy这名咋又不行\nYuFeng Deng\n8k8k\n";
//return payload;
/*case "roy这名咋又不行":
payload.text = "Roy这名咋又不行 - https://space.bilibili.com/35906765/video";
break;
case "8k8k":
payload.text = "8k8k - https://space.bilibili.com/4345670?from=search&seid=17766778979352595086";
break;
default:
payload.text = "YuFeng Deng - https://www.youtube.com/channel/UCG6xoef2xU86hnrCsS5m5Cw?view_as=subscriber";
break;*/
}
//payload.text = '你的命令带参数:' + paras[1];
//return payload;
}
else {
payload.text="<b>people</b>\n<b>color</b>\n<i>在/list之后空格一下,输入people或者color</i>" + "还可以关注roy的b站:<a href='https://space.bilibili.com/35906765/video/'>Roy这名咋又不行</a>";
keyboardButton[0] = {
text:'help',
//url:'https://space.bilibili.com/35906765/video'
//不用url了,url只是个链接,这次我用callback_data来召回help和color
callback_data:"/help"
};
keyboardButton[1] = {
text:'升级原消息',
//url:'https://space.bilibili.com/35906765/video'
//不用url了,url只是个链接,这次我用callback_data来召回help和color
callback_data:"update"
};
keyboardRow.push(keyboardButton[0]);
keyboardRow.push(keyboardButton[1]);
inlineKeyboardMarkup.inline_keyboard.push(keyboardRow);
payload.reply_markup = inlineKeyboardMarkup;
/*var keyboardButton[1] = {
text:'按钮1',
url:'http://www.google.com'
};
var keyboardButton2 = {
text:'按钮2',
url:'http://www.google.com'
};*/
/*for (var i = 0; i < 3; i++) {
keyboardRow.push(keyboardButton[i]);
}*/
//keyboardRow.push(keyboardButton1);
//keyboardRow.push(keyboardButton2);
// return payload;
}
return payload;
}
payload = {
"method": "sendMessage",
"chat_id": body.message.chat.id,
"text": body.message.text
}
}
else if (body.message.sticker){
payload = {
"method": "sendSticker",
"chat_id": body.message.chat.id,
"sticker": body.message.sticker.file_id
}
}
else if (body.message.photo){
array = body.message.photo;
text = array[1];
payload = {
"method": "sendPhoto",
"chat_id": body.message.chat.id,
"photo": text.file_id
}
}
else {
payload = {
"method": "sendMessage",
"chat_id": body.message.chat.id,
"text": "Try other stuff"
}
}
return payload
}
if (body.callback_query){
if ("/help".indexOf(body.callback_query.data>=0)){
payload = {
"method": "sendMessage",
"chat_id": body.callback_query.message.chat.id,
"text": "这是一个callback\n",
"parse_mode":"HTML"//这样就告诉tg,这个text是个HTML的文本
//"disable_web_page_preview": true //不显示预览
};
payload.text = body.callback_query.data;
}
if ("update".indexOf(body.callback_query.data)>=0){
payload = {
"method": "editMessageText",
"chat_id": body.callback_query.message.chat.id,
"message_id": body.callback_query.message.message_id,
"text": "",
//"parse_mode": "markdown",
"parse_mode":"HTML",
"disable_web_page_preview": false
};
payload.text += "原消息被更新了,更新成了这句话";
//payload.text += "\ncolor没有任何作用,只是为了演示我自己加的";
return payload;
}
return payload;
}
}