4 Commits
2.3.3 ... 2.4.0

Author SHA1 Message Date
synt-xerror
92e2ea2337 support for comments on config file 2026-03-16 22:27:07 -03:00
synt-xerror
438e674eff Bump version to 2.3.4 2026-03-16 22:27:01 -03:00
synt-xerror
5b74cf2dc5 new sticker limit 2026-03-16 22:23:35 -03:00
synt-xerror
4f5d937265 Bump version to 2.3.3 2026-03-16 22:23:32 -03:00
4 changed files with 55 additions and 25 deletions

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{ {
"name": "whatsapp-bot", "name": "whatsapp-bot",
"version": "2.3.2", "version": "2.3.4",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "whatsapp-bot", "name": "whatsapp-bot",
"version": "2.3.2", "version": "2.3.4",
"dependencies": { "dependencies": {
"node-addon-api": "^7", "node-addon-api": "^7",
"node-gyp": "^12.2.0", "node-gyp": "^12.2.0",

View File

@@ -1,6 +1,6 @@
{ {
"name": "manybot", "name": "manybot",
"version": "2.3.2", "version": "2.3.4",
"type": "module", "type": "module",
"dependencies": { "dependencies": {
"node-addon-api": "^7", "node-addon-api": "^7",

View File

@@ -21,7 +21,7 @@ const DOWNLOADS_DIR = path.resolve("downloads");
const FFMPEG = os.platform() === "win32" ? ".\\bin\\ffmpeg.exe" : "./bin/ffmpeg"; const FFMPEG = os.platform() === "win32" ? ".\\bin\\ffmpeg.exe" : "./bin/ffmpeg";
const MAX_STICKER_SIZE = 900 * 1024; const MAX_STICKER_SIZE = 900 * 1024;
const SESSION_TIMEOUT = 2 * 60 * 1000; const SESSION_TIMEOUT = 2 * 60 * 1000;
const MAX_MEDIA = 10; const MAX_MEDIA = 30;
// ── Helpers ─────────────────────────────────────────────────── // ── Helpers ───────────────────────────────────────────────────
function ensureDownloadsDir() { function ensureDownloadsDir() {

View File

@@ -1,32 +1,62 @@
import fs from "fs"; import fs from "fs";
function parseValue(v) { function parseConf(raw) {
v = v.trim(); // Remove comentários inline e de linha inteira, preservando estrutura
const lines = raw.split("\n");
// lista: [a, b, c] const cleaned = [];
if (v.startsWith("[") && v.endsWith("]")) { let insideList = false;
return v let buffer = "";
.slice(1, -1)
.split(",") for (let line of lines) {
.map(x => x.trim()) // Remove comentário inline (# ...) — mas só fora de strings
.filter(Boolean); line = line.replace(/#.*$/, "").trim();
if (!line) continue;
if (!insideList) {
if (line.includes("=[") && !line.includes("]")) {
// Início de lista multilinha
insideList = true;
buffer = line;
} else {
cleaned.push(line);
}
} else {
buffer += line;
if (line.includes("]")) {
// Fim da lista
insideList = false;
cleaned.push(buffer);
buffer = "";
}
}
} }
return v; // Parseia cada linha chave=valor
const result = {};
for (const line of cleaned) {
const eqIdx = line.indexOf("=");
if (eqIdx === -1) continue;
const key = line.slice(0, eqIdx).trim();
const raw = line.slice(eqIdx + 1).trim();
if (raw.startsWith("[") && raw.endsWith("]")) {
result[key] = raw
.slice(1, -1)
.split(",")
.map(x => x.trim())
.filter(Boolean);
} else {
result[key] = raw;
}
}
return result;
} }
const raw = fs.readFileSync("manybot.conf", "utf8"); const raw = fs.readFileSync("manybot.conf", "utf8");
const config = parseConf(raw);
const config = Object.fromEntries(
raw
.split("\n")
.map(l => l.trim())
.filter(l => l && !l.startsWith("#"))
.map(l => {
const [k, ...v] = l.split("=");
return [k.trim(), parseValue(v.join("="))];
})
);
export const CLIENT_ID = config.CLIENT_ID ?? "bot_permanente"; export const CLIENT_ID = config.CLIENT_ID ?? "bot_permanente";
export const BOT_PREFIX = config.BOT_PREFIX ?? "🤖 *ManyBot:* "; export const BOT_PREFIX = config.BOT_PREFIX ?? "🤖 *ManyBot:* ";