forked from souravkl11/raganork-md
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.js
More file actions
87 lines (72 loc) · 2.23 KB
/
main.js
File metadata and controls
87 lines (72 loc) · 2.23 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
const config = require("./config");
const Commands = [];
let commandPrefix;
let handlerPrefix;
function escapeRegex(str) {
return String(str).replace(/[\\^$.*+?()[\]{}|]/g, "\\$&");
}
function buildHandlerPrefix(rawHandlers, allowNoPrefix) {
if (rawHandlers === "^" || rawHandlers === "" || rawHandlers == null) {
return "^";
}
const handlersStr = String(rawHandlers);
if (handlersStr.length > 1 && handlersStr[0] === handlersStr[1]) {
const literal = `^${escapeRegex(handlersStr)}`;
return allowNoPrefix ? `${literal}?` : literal;
}
const parts = Array.from(handlersStr)
.map((h) => escapeRegex(h))
.filter(Boolean);
if (parts.length === 0) {
return "^";
}
const group = `^(?:${parts.join("|")})`;
return allowNoPrefix ? `${group}?` : group;
}
if (config.HANDLERS === "false") {
commandPrefix = "^";
} else {
commandPrefix = config.HANDLERS;
}
handlerPrefix = buildHandlerPrefix(commandPrefix, Boolean(config.MULTI_HANDLERS));
function Module(info, func) {
const validEventTypes = [
"photo",
"image",
"text",
"button",
"group-update",
"message",
"start",
];
const commandInfo = {
fromMe: info.fromMe ?? config.isPrivate,
desc: info.desc ?? "",
usage: info.usage ?? "",
excludeFromCommands: info.excludeFromCommands ?? false,
warn: info.warn ?? "",
use: info.use ?? "",
function: func,
};
if (info.on === undefined && info.pattern === undefined) {
commandInfo.on = "message";
commandInfo.fromMe = false;
} else if (info.on !== undefined && validEventTypes.includes(info.on)) {
commandInfo.on = info.on;
if (info.pattern !== undefined) {
const prefix = (info.handler ?? true) ? handlerPrefix : "";
const patternStr = `${prefix}${info.pattern}`;
commandInfo.pattern = new RegExp(patternStr, "s");
}
} else if (info.pattern !== undefined) {
const prefix = (info.handler ?? true) ? handlerPrefix : "";
const patternStr = `${prefix}${info.pattern}`;
commandInfo.pattern = new RegExp(patternStr, "s");
}
Commands.push(commandInfo);
return commandInfo;
}
module.exports = {
Module,
commands: Commands,
};