-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patheduask_script
More file actions
211 lines (191 loc) · 5.83 KB
/
Copy patheduask_script
File metadata and controls
211 lines (191 loc) · 5.83 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
var token = "YOUR_TOKEN_HERE";
var teleurl = "https://api.telegram.org/bot" + token;
var webappurl = "WEBAPP_URL HERE"
var spreadsheetid = "SPREADSHEET_ID"
var newline = "%0A"
function getMe(){
var url = teleurl + "/getMe";
var response = UrlFetchApp.fetch(url);
Logger.log(response.getContentText())
}
function setWebhook(){
var url = teleurl + "/setWebhook?url=" + webappurl;
var response = UrlFetchApp.fetch(url);
Logger.log(response.getContentText())
}
function sendText(id,text){
var url = teleurl + "/sendMessage?chat_id=" + id + "&text=" + text;
var response = UrlFetchApp.fetch(url);
Logger.log(response.getContentText())
}
function doGet(e){
return HtmlService.createHtmlOutput("Hello!")
}
function finder( sheet, value, id, name){
var data = sheet.getDataRange().getValues(); // count lines
var counter = false; //
for(var i = 0; i<data.length; i++){
if(data[i][3] == value){ //[3] because column D
if (data[i][4] != ''){
sendText(id, "A: " + data[i][4]);
}
else{
sendText(id, "Hi " + name + "," + " please be patient, the teacher is still answering the question!")
}
counter = true;
}
}
if (counter == false){
sheet.appendRow([new Date(),id, name, value]);
sendText(id, "Hi " + name + "," + "your question is received and currently being answered by a teacher!")
}
}
function regex( sheet, value, id, name){
var data = sheet.getDataRange().getValues();
for(var i = 0; i<data.length; i++){
var j = 0;
var questionsplt = data[i][3].split(" ")[j];
while (questionsplt) {
if(questionsplt == value){ //[1] because column B
if (data[i][4] != ''){
sendText(id, "Q: " + data[i][3]);
sendText(id, "A: " + data[i][4]);
}
else if (data[i][4] == ''){
sendText(id, "Q: " + data[i][3]);
sendText(id, "Hi " + name + "," + " question has been asked, no reply yet!");
}
}
j++;
questionsplt = data[i][3].split(" ")[j];
}
}
}
function help(id){
var txt = "Hello! I am EduAsk! I am here to help you get the answer to any of your subject questions!"
+ newline +
newline +
"Here are some of my commands!"
+ newline +
newline +
"To search for a question and see if theres an answer to it: " + "@(subject) (question)"
+ newline +
"eg @chemistry what is a solution?"
+ newline +
newline +
"To search for a question using a single word:" + " @(subject) findall (word)"
+ newline +
"eg @physics findall force?"
+ newline +
newline +
"To open this page: " + "/help"
+ newline +
newline +
"To see available teachers and their remedial slots: "
+ newline +
"@(subject) consultation (day) (hour)"
+ newline +
"eg @math consultation tuesday 16"
+ newline +
newline +
"Available subjects:"
+ newline +
newline +
"@physics"
+ newline +
"@chemistry"
+ newline +
"@math"
+ newline +
"@english"
+ newline +
"@geog"
+ newline +
"@literature"
+ newline +
"@history"
sendText(id, txt);
}
function consultation(id, sheet_name, day, time){
var sheetname = day + " consultation";
var consultsheet = SpreadsheetApp.openById(spreadsheetid).getSheetByName(sheetname) ? SpreadsheetApp.openById(spreadsheetid).getSheetByName(sheetname) : sendText("Day not found, please type in day in full and lower case (monday, tuesday, wednesday, etc)");
var sbjname = 0;
switch(sheet_name){
case "physics":
sbjname = 2;
break;
case "chemistry":
sbjname = 1;
break;
case "math":
sbjname = 3;
break;
case "english":
sbjname = 4;
break;
case "geog":
sbjname = 5;
break;
case "literature":
sbjname = 6;
break;
case "history":
sbjname = 7;
break;
}
var hour = parseInt(time);
var data = consultsheet.getDataRange().getValues();
var cher = data[hour+1][sbjname];
if (!cher){
sendText(id, "No teacher for the session! Please find another slot!");
}
var session = "";
for(var i = 1; i<25; i++){
if(data[i][9] == cher){ //[9] because column J
if (data[i][10] != ''){
session = data[i][10];
}
else{
sendText(id, "Hi " + name + "," + " teacher has yet to allocate a session! Please msg him/her or find another slot!");
}
break;
}
}
var text = "Teacher available: " + data[hour+1][sbjname]
+ newline +
"Tele group/zoom session available: " + session;
sendText(id,text);
}
function doPost(e){
var data = JSON.parse(e.postData.contents);
var text = data.message.text;
var id = data.message.chat.id;
var name = data.message.chat.first_name + " " + data.message.chat.last_name
//var answer = "Hi " + name + ", thanks for your question!" + "(" + text + ")";
//sendText(id,answer);
//SpreadsheetApp.openById(spreadsheetid).getSheets()[0].appendRow([new Date(),id, name, text,answer]); //this one sends to first sheet
//this one sends to specific sheets
if( /^@/.test(text)){
var sheetname = text.slice(1).split(" ")[0];
var sheet = SpreadsheetApp.openById(spreadsheetid).getSheetByName(sheetname) ? SpreadsheetApp.openById(spreadsheetid).getSheetByName(sheetname) : sendText(id, "Hi " + name + "," + "sorry,the subject is not avaliable");
if(text.split(" ")[1] == 'findall'){
var comment = text.split(" ").slice(2).join(" ");
regex(sheet, comment, id, name)
}
else if(text.split(" ")[1] == 'consultation'){
var day = text.split(" ")[2];
var time = text.split(" ")[3];
consultation(id, sheetname, day, time);
}
else{
var comment = text.split(" ").slice(1).join(" ");
finder(sheet, comment, id, name)
}
}
else if(text == '/help'){
help(id);
}
else {
sendText(id, "If you need further assistant type /help!");
}
}