webfast 0.1.16 → 0.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/modules/bots/applications/telegram/que.js +96 -4
- package/modules/bots/applications/telegram/scripts/function.js +31 -0
- package/modules/bots/applications/telegram/scripts/test/script.json +37 -0
- package/modules/bots/applications/telegram/send.js +18 -1
- package/modules/bots/applications/telegram.js +126 -14
- package/modules/data/mongo/findOrCreate.js +1 -1
- package/modules/request/functions/post.js +6 -1
- package/package.json +1 -1
@@ -1,15 +1,107 @@
|
|
1
1
|
// Here we can collect something by when user enter collect state in telegram
|
2
2
|
module.exports = {
|
3
3
|
line : {},
|
4
|
-
set : function(id) {
|
4
|
+
set : function(id,data) {
|
5
5
|
// To set que
|
6
|
-
console.log(`Que Set Telegram`)
|
6
|
+
console.log(`Que Set Telegram`);
|
7
|
+
this.line[id] = data;
|
8
|
+
return this.line[id];
|
7
9
|
},
|
8
10
|
get : function(id) {
|
9
|
-
console.log(`Que Get Telegram`)
|
11
|
+
console.log(`Que Get Telegram`);
|
12
|
+
// Check if in que line
|
13
|
+
let indexPart = Object.keys(this.line).indexOf(id);
|
14
|
+
if (indexPart == -1) {
|
15
|
+
return false;
|
16
|
+
} else {
|
17
|
+
let lineData = this.line[indexPart];
|
18
|
+
return lineData;
|
19
|
+
}
|
10
20
|
},
|
11
21
|
timer : function() {
|
12
22
|
// Run timer
|
13
|
-
console.log(`Timer Run`);
|
23
|
+
console.log(`Timer Run To See if we need to send a message or not`);
|
24
|
+
},
|
25
|
+
run : async function(program,command,chatID,middleValue,data) {
|
26
|
+
// Run timer
|
27
|
+
console.log(`run que data to give back response`);
|
28
|
+
|
29
|
+
// Check if que
|
30
|
+
try {
|
31
|
+
|
32
|
+
let scriptStart = `start`;
|
33
|
+
// It's new
|
34
|
+
if (program.modules.telegram.script.int[command] == undefined) {
|
35
|
+
// Send message we don't know
|
36
|
+
|
37
|
+
return false;
|
38
|
+
}
|
39
|
+
|
40
|
+
// Create the que line command
|
41
|
+
const script = program.modules.telegram.script.int[command];
|
42
|
+
|
43
|
+
let current;
|
44
|
+
|
45
|
+
if (program.modules.telegram.functions.que.line[chatID] != undefined) {
|
46
|
+
// It's original que
|
47
|
+
// Process response
|
48
|
+
console.log(`It's a process`)
|
49
|
+
current = program.modules.telegram.functions.que.line[chatID];
|
50
|
+
} else {
|
51
|
+
// Create que line
|
52
|
+
let setData = {
|
53
|
+
ts : Date.now(),
|
54
|
+
action : command,
|
55
|
+
process : scriptStart,
|
56
|
+
script : script,
|
57
|
+
anwsers : {}
|
58
|
+
}
|
59
|
+
program.modules.telegram.functions.que.line[chatID] = setData;
|
60
|
+
current = setData;
|
61
|
+
}
|
62
|
+
|
63
|
+
// Get item
|
64
|
+
const theScript = script[scriptStart];
|
65
|
+
|
66
|
+
// Create replacelist
|
67
|
+
let replace = {
|
68
|
+
"{{URL}}" : process.env.url,
|
69
|
+
"{{TEST}}" : "TEST REPLACED"
|
70
|
+
}
|
71
|
+
|
72
|
+
// Check if text
|
73
|
+
let toSend = {}
|
74
|
+
if (theScript.object.text != undefined) {
|
75
|
+
toSend.text = theScript.object.text;
|
76
|
+
}
|
77
|
+
|
78
|
+
// Get object
|
79
|
+
if (theScript.object.image != undefined) {
|
80
|
+
console.log(`Send Image`);
|
81
|
+
toSend.image = theScript.object.image;
|
82
|
+
}
|
83
|
+
|
84
|
+
// Iterate through keys in toSend
|
85
|
+
for (let key in toSend) {
|
86
|
+
if (typeof toSend[key] === 'string') {
|
87
|
+
// Replace placeholders in the string globally
|
88
|
+
for (let placeholder in replace) {
|
89
|
+
toSend[key] = toSend[key].replace(new RegExp(placeholder, 'g'), replace[placeholder]);
|
90
|
+
}
|
91
|
+
}
|
92
|
+
}
|
93
|
+
|
94
|
+
// Check if text
|
95
|
+
await program.modules.telegram.functions.send(program,toSend,middleValue.chat.id);
|
96
|
+
|
97
|
+
program.modules.telegram.functions.que.line[chatID] = current;
|
98
|
+
console.log(`We have script data`);
|
99
|
+
} catch (err) {
|
100
|
+
console.error(err);
|
101
|
+
console.error(`Error with que something`);
|
102
|
+
}
|
103
|
+
|
104
|
+
// Do all the things that we need to do in the run
|
105
|
+
|
14
106
|
}
|
15
107
|
}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module.exports = {
|
2
|
+
check : async function (program,command,chatID,middleValue,received) {
|
3
|
+
// Checkif there is que
|
4
|
+
console.log(`Check if there is script`);
|
5
|
+
try {
|
6
|
+
const scriptData = program.modules.telegram.script.int[command];
|
7
|
+
if (scriptData.length == 0) {
|
8
|
+
await program.modules.telegram.functions.send(program,`${command}`,chatID,[
|
9
|
+
[
|
10
|
+
{ text: 'EventGO!', web_app : { url : 'https://cloud.eventgo.today/events/list'}},
|
11
|
+
{ text: 'Create Event', callback_data: 'create_event' },
|
12
|
+
]
|
13
|
+
]);
|
14
|
+
} else {
|
15
|
+
// We have some script so check if we have in que
|
16
|
+
const queData = await program.modules.telegram.functions.que.run(program,command,chatID,middleValue,received);
|
17
|
+
|
18
|
+
// Check if queData is empty otherwise we will run the script from "start", if que data is not empty we run it further
|
19
|
+
// unt o process script
|
20
|
+
|
21
|
+
console.log(`Went through que get`);
|
22
|
+
}
|
23
|
+
console.log(`Setted`);
|
24
|
+
|
25
|
+
return true;
|
26
|
+
} catch(err) {
|
27
|
+
console.error(err);
|
28
|
+
console.error(`Error Scripting`);
|
29
|
+
}
|
30
|
+
}
|
31
|
+
}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
{
|
2
|
+
"input" : "test input",
|
3
|
+
"start" : {
|
4
|
+
"object" : {
|
5
|
+
"text" : "Testing Title : {{TEST}}",
|
6
|
+
"image" : "{{URL}}app/content/images/block.png"
|
7
|
+
},
|
8
|
+
"match" : {
|
9
|
+
"data" : [{
|
10
|
+
"response" : "anwser text",
|
11
|
+
"function" : "program.modules.bots.scripts.function",
|
12
|
+
"reply_markup" : {
|
13
|
+
"inline_keyboard": [[
|
14
|
+
{
|
15
|
+
"text": "A",
|
16
|
+
"callback_data": "A1"
|
17
|
+
},
|
18
|
+
{
|
19
|
+
"text": "B",
|
20
|
+
"callback_data": "C1"
|
21
|
+
}]
|
22
|
+
]
|
23
|
+
},
|
24
|
+
"next" : "nextFunc"
|
25
|
+
},{
|
26
|
+
"response" : "other",
|
27
|
+
"function" : "program.modules.bots.scripts.function",
|
28
|
+
"next" : "nextFunc"
|
29
|
+
}]
|
30
|
+
},
|
31
|
+
"fail" : {
|
32
|
+
"response" : "start",
|
33
|
+
"function" : "program.modules.bots.scripts.function",
|
34
|
+
"next" : "failResponse"
|
35
|
+
}
|
36
|
+
}
|
37
|
+
}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module.exports = async function(program,message,id,buttons) {
|
2
2
|
console.log(`Telegram Send`);
|
3
3
|
// Create Request for send
|
4
|
-
|
4
|
+
let telegramURL = `https://api.telegram.org/bot${process.env.telegram}`;
|
5
5
|
|
6
6
|
// Check if buttons is send as []
|
7
7
|
let options;
|
@@ -29,6 +29,23 @@ module.exports = async function(program,message,id,buttons) {
|
|
29
29
|
parse_mode : 'HTML'
|
30
30
|
}
|
31
31
|
|
32
|
+
// Check if object
|
33
|
+
if (typeof message == `object`) {
|
34
|
+
if (message.text != undefined && message.image == undefined) {
|
35
|
+
body.text = message.text;
|
36
|
+
telegramURL = `${telegramURL}/sendMessage`;
|
37
|
+
}
|
38
|
+
|
39
|
+
// Check for image
|
40
|
+
if (message.image != undefined) {
|
41
|
+
body.photo = message.image;
|
42
|
+
body.caption = message.text;
|
43
|
+
delete body.text;
|
44
|
+
delete body.reply_to_message_id;
|
45
|
+
telegramURL = `${telegramURL}/sendPhoto`;
|
46
|
+
}
|
47
|
+
}
|
48
|
+
|
32
49
|
// If options is there add as
|
33
50
|
if (options != undefined) {
|
34
51
|
body.reply_markup = options.reply_markup;
|
@@ -53,6 +53,19 @@ module.exports = async function(program,folder) {
|
|
53
53
|
}
|
54
54
|
|
55
55
|
middleValue.chat.uuid = user.uuid;
|
56
|
+
|
57
|
+
// Find or create to add message to db
|
58
|
+
body.uuid = program.uuid.v4();
|
59
|
+
let received = await program.modules.data.findOrCreate(`eventgo`,`received`,{
|
60
|
+
update_id : body.update_id
|
61
|
+
},body);
|
62
|
+
|
63
|
+
// Set body from receivd
|
64
|
+
body.uuid = received.uuid;
|
65
|
+
|
66
|
+
|
67
|
+
console.log(`We have received message`,received);
|
68
|
+
|
56
69
|
try {
|
57
70
|
if (middleValue.text.startsWith('/')) {
|
58
71
|
// If it starts with a slash, it might be a command
|
@@ -69,18 +82,20 @@ module.exports = async function(program,folder) {
|
|
69
82
|
// Let's split up
|
70
83
|
let match = [];
|
71
84
|
|
72
|
-
|
85
|
+
if (variables != undefined) {
|
86
|
+
let splitVariables = variables.split(`-`);
|
73
87
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
88
|
+
if (splitVariables.length > 4) {
|
89
|
+
match[0] = splitVariables[0];
|
90
|
+
if (splitVariables.length >= 5) {
|
91
|
+
match[1] = splitVariables[splitVariables.length-1];
|
92
|
+
let uuid = variables.replace(`${match[0]}-`,``).replace(`-${match[1]}`,``);;
|
93
|
+
match[2] = uuid;
|
94
|
+
}
|
80
95
|
}
|
81
96
|
}
|
82
97
|
|
83
|
-
if (match) {
|
98
|
+
if (match.length > 0) {
|
84
99
|
// Extract the parts
|
85
100
|
const action = match[0];
|
86
101
|
const uuid = match[2];
|
@@ -93,10 +108,22 @@ module.exports = async function(program,folder) {
|
|
93
108
|
// It's something to do check if we can find this in applications
|
94
109
|
try {
|
95
110
|
console.log(`Run Sub Function`);
|
96
|
-
await program.modules.telegram.functions[action](program,key,action,uuid,subFunction,middleValue);
|
111
|
+
let resp = await program.modules.telegram.functions[action](program,key,action,uuid,subFunction,middleValue,received);
|
112
|
+
|
113
|
+
// Switch resp;
|
114
|
+
console.log(`Check if we send message`);
|
115
|
+
switch (resp.response) {
|
116
|
+
case `message`:
|
117
|
+
console.log(`We have response, check for response message`);
|
118
|
+
const message = respFunc[action];
|
119
|
+
await program.modules.telegram.functions.send(program,message,middleValue.chat.id);
|
120
|
+
break;
|
121
|
+
default:
|
122
|
+
console.error(`Missing Response Action Telegram: ${action}`);
|
123
|
+
}
|
97
124
|
} catch (err) {
|
98
125
|
console.error(err);
|
99
|
-
console.error(`Error Sub Function`);
|
126
|
+
console.error(`Error Sub Function ${key}, ${action}`);
|
100
127
|
}
|
101
128
|
|
102
129
|
} else {
|
@@ -104,7 +131,7 @@ module.exports = async function(program,folder) {
|
|
104
131
|
// So run the function
|
105
132
|
try {
|
106
133
|
// Run dynamic the type of middleware
|
107
|
-
const runFunc = await program.modules.telegram.middleware[key][command](req,res,body,params,command,middleValue);
|
134
|
+
const runFunc = await program.modules.telegram.middleware[key][command](req,res,body,params,command,middleValue,received);
|
108
135
|
const respFunc = runFunc.response;
|
109
136
|
// PRocess response for object
|
110
137
|
const action = Object.keys(respFunc)[0];
|
@@ -156,12 +183,16 @@ module.exports = async function(program,folder) {
|
|
156
183
|
} catch (err) {
|
157
184
|
//console.error(err);
|
158
185
|
//console.error(`Error For Telegram Function`);
|
186
|
+
console.log(`Checking for script`);
|
187
|
+
const scripting = await program.modules.telegram.script.function.check(program,command,middleValue.chat.id,middleValue,received);
|
188
|
+
/*
|
159
189
|
await program.modules.telegram.functions.send(program,`${command}`,middleValue.chat.id,[
|
160
190
|
[
|
161
191
|
{ text: 'EventGO!', web_app : { url : 'https://cloud.eventgo.today/events/list'}},
|
162
192
|
{ text: 'Create Event', callback_data: 'create_event' },
|
163
193
|
]
|
164
|
-
])
|
194
|
+
]);*/
|
195
|
+
console.log(scripting);
|
165
196
|
}
|
166
197
|
|
167
198
|
|
@@ -170,8 +201,6 @@ module.exports = async function(program,folder) {
|
|
170
201
|
}
|
171
202
|
} catch (message) {
|
172
203
|
// Process as other
|
173
|
-
res.send(`OK | ${command} | ${variables}`)
|
174
|
-
res.status(200);
|
175
204
|
console.log(`Process Different`);
|
176
205
|
let checkArray = [`location`];
|
177
206
|
// Loop through checkArray
|
@@ -209,6 +238,11 @@ module.exports = async function(program,folder) {
|
|
209
238
|
}
|
210
239
|
}
|
211
240
|
}
|
241
|
+
|
242
|
+
console.log(`We do something here`);
|
243
|
+
|
244
|
+
res.send(`OK `)
|
245
|
+
res.status(200);
|
212
246
|
}
|
213
247
|
} catch (err) {
|
214
248
|
console.error(err);
|
@@ -298,6 +332,84 @@ module.exports = async function(program,folder) {
|
|
298
332
|
// Add middleware
|
299
333
|
telegram.middleware = middleWarFuncs;
|
300
334
|
|
335
|
+
// Process scripts
|
336
|
+
const scriptsPath = program.path.join(__dirname,`telegram`,`scripts`);
|
337
|
+
|
338
|
+
// Loop Through scripts folder
|
339
|
+
let scriptsData = await program.modules.walkDirectory(scriptsPath);
|
340
|
+
|
341
|
+
// Let's loop througha and if no extension it's folder
|
342
|
+
let allScripts = {
|
343
|
+
int : {}
|
344
|
+
}
|
345
|
+
for (let scriptIndex in scriptsData) {
|
346
|
+
let script = scriptsData[scriptIndex];
|
347
|
+
// We now have the specific script check if folder
|
348
|
+
if (!script.extension) {
|
349
|
+
// It's folder create the function and read folder
|
350
|
+
console.log(`It's folder check for files as in .json or .js`);
|
351
|
+
const folderScriptScan = await program.modules.walkDirectory(script.path);
|
352
|
+
|
353
|
+
// Create now allScripts item interaction as we will check dynamic for the item
|
354
|
+
for (let fsi in folderScriptScan) {
|
355
|
+
// So now again we only do things when it's a file but check extension
|
356
|
+
const scriptItem = folderScriptScan[fsi];
|
357
|
+
// We have folder data
|
358
|
+
if (!scriptItem.extension) {
|
359
|
+
continue;
|
360
|
+
}
|
361
|
+
|
362
|
+
// We have script create
|
363
|
+
console.log(`Folder Script Scan`,scriptItem);
|
364
|
+
|
365
|
+
// Switch extension
|
366
|
+
const extCheck = scriptItem.extension.slice(1);
|
367
|
+
|
368
|
+
// We have the extension so swich between those
|
369
|
+
switch (extCheck){
|
370
|
+
case `json`:
|
371
|
+
console.log(`Read File`);
|
372
|
+
try {
|
373
|
+
const readFile = JSON.parse(await program.fs.readFileSync(scriptItem.path,`utf-8`));
|
374
|
+
|
375
|
+
// Create the command
|
376
|
+
const interact = readFile.input;
|
377
|
+
|
378
|
+
// For interaction
|
379
|
+
delete readFile.input;
|
380
|
+
allScripts.int[interact] = readFile;
|
381
|
+
|
382
|
+
console.log(`We have readed the file`);
|
383
|
+
} catch (err) {
|
384
|
+
console.error(err);
|
385
|
+
console.error(`Error Reading JSON file`);
|
386
|
+
}
|
387
|
+
break;
|
388
|
+
default:
|
389
|
+
// When it's not like json
|
390
|
+
console.log(`it's something else`);
|
391
|
+
}
|
392
|
+
}
|
393
|
+
|
394
|
+
console.log(`Walk Through folder and check for script.json`);
|
395
|
+
|
396
|
+
} else {
|
397
|
+
// It's main script functions
|
398
|
+
console.log(`Main Script Function In Specific folder`);
|
399
|
+
try {
|
400
|
+
// Add script to allscript
|
401
|
+
allScripts[script.name] = require(script.path);
|
402
|
+
console.log(`Script : ${script.name} - loaded`);
|
403
|
+
} catch (err) {
|
404
|
+
console.error(err);
|
405
|
+
console.error(`Error Loading script`,script);
|
406
|
+
}
|
407
|
+
}
|
408
|
+
}
|
409
|
+
|
410
|
+
// Set all script
|
411
|
+
telegram.script = allScripts;
|
412
|
+
|
301
413
|
program.modules.telegram = telegram;
|
302
414
|
return program;
|
303
415
|
}
|
@@ -44,7 +44,7 @@ module.exports = async function(db, collection, condition, dataToCreate) {
|
|
44
44
|
if (result.acknowledged === true) {
|
45
45
|
console.log('New document created:', result.insertedId);
|
46
46
|
const existingDocument = await collection.findOne(condition);
|
47
|
-
return
|
47
|
+
return dataToCreate;
|
48
48
|
} else {
|
49
49
|
console.error('Failed to create a new document.');
|
50
50
|
return null;
|
@@ -15,12 +15,17 @@ module.exports = async function(program, url, body) {
|
|
15
15
|
|
16
16
|
// Using standard fetch function
|
17
17
|
const response = await fetch(url, theOptions);
|
18
|
+
// Get response body
|
19
|
+
const respBody = await response.json(); // Assuming the response is JSON
|
20
|
+
|
21
|
+
// Get response headers
|
22
|
+
const respHeaders = response.headers;
|
18
23
|
|
19
24
|
if (!response.ok) {
|
20
25
|
throw new Error(`HTTP error! Status: ${response.status}`);
|
21
26
|
}
|
22
27
|
|
23
|
-
const responseData =
|
28
|
+
const responseData = respBody;
|
24
29
|
console.log('Response Data:', responseData);
|
25
30
|
|
26
31
|
// Return response data or true to indicate success
|