Files
blog/bot/_apply_fixes.js
T
2026-06-01 17:57:22 +08:00

106 lines
4.4 KiB
JavaScript

const fs = require("fs");
const path = "E:/GitHub/blog/bot/index.js";
let c = fs.readFileSync(path, "utf8");
function findBlock(name) {
var idx = c.indexOf("CMD_HANDLERS." + name);
if (idx === -1) return null;
var depth = 0;
var i = idx;
for (; i < c.length; i++) {
if (c[i] === "{") depth++;
else if (c[i] === "}") {
depth--;
if (depth === 0) break;
}
}
return { start: idx, end: i + 2 };
}
// Fix 2: link_toggle
var b = findBlock("link_toggle");
if (!b) { console.log("ERR: link_toggle not found"); process.exit(1); }
var nb =
"CMD_HANDLERS.link_toggle = async function (chatId, url) {\n" +
" if (!url) return sendMessage(chatId, \"Usage: /link_toggle <url>\\nToggle visibility of a link.\");\n" +
" try {\n" +
" // Fetch all links to find current hidden state\n" +
" const listRes = await fetch(\"http://127.0.0.1:\" + WRITE_PORT + \"/api/rss/links?all=1\");\n" +
" const listData = await listRes.json();\n" +
" var link = (listData.links || []).find(function(l) { return l.url === url; });\n" +
" if (!link) return sendMessage(chatId, \"\u274c Link not found: \" + url);\n" +
" var newHidden = !link.hidden;\n" +
" const res = await fetch(\"http://127.0.0.1:\" + WRITE_PORT + \"/api/rss/links\", {\n" +
" method: \"PUT\",\n" +
" headers: { \"Content-Type\": \"application/json\" },\n" +
" body: JSON.stringify({ oldUrl: url, hidden: newHidden }),\n" +
" });\n" +
" if (!res.ok) throw new Error((await res.json()).error || \"Toggle failed\");\n" +
" var label = newHidden ? \"\uD83D\uDD12 Hidden\" : \"\uD83C\uDF10 Visible\";\n" +
" return sendMessage(chatId, label + \": \" + url);\n" +
" } catch (e) {\n" +
" return sendMessage(chatId, \"\u274c \" + e.message);\n" +
" }\n" +
"};\n";
c = c.substring(0, b.start) + nb + c.substring(b.end);
console.log("2/4: link_toggle fixed");
// Fix 3: feed_check
b = findBlock("feed_check");
if (!b) { console.log("ERR: feed_check not found"); process.exit(1); }
nb =
"CMD_HANDLERS.feed_check = async function (chatId) {\n" +
" try {\n" +
" // First get all feeds\n" +
" const feedsRes = await fetch(\"http://127.0.0.1:\" + WRITE_PORT + \"/api/rss/feeds\");\n" +
" const feedsData = await feedsRes.json();\n" +
" var feeds = feedsData.feeds || [];\n" +
" if (feeds.length === 0) return sendMessage(chatId, \"No feeds to check.\");\n" +
" var results = [];\n" +
" for (var i = 0; i < feeds.length; i++) {\n" +
" var f = feeds[i];\n" +
" try {\n" +
" var hRes = await fetch(\"http://127.0.0.1:\" + WRITE_PORT + \"/api/rss/feeds?health=\" + encodeURIComponent(f.url));\n" +
" var hData = await hRes.json();\n" +
" results.push({ feedTitle: f.feedTitle, url: f.url, ok: hData.ok, status: hData.status, latency: hData.latency, error: hData.error });\n" +
" } catch (e2) {\n" +
" results.push({ feedTitle: f.feedTitle, url: f.url, ok: false, error: e2.message });\n" +
" }\n" +
" }\n" +
" var lines = [\"\uD83D\uDCE1 <b>Feed Health</b>\\n\"];\n" +
" results.forEach(function(r) {\n" +
" var icon = r.ok ? \"\u2705\" : \"\u274c\";\n" +
" var label = (r.feedTitle || r.url).slice(0, 40);\n" +
" var info = r.ok ? (r.latency || 0) + \"ms\" : (r.error || \"error\");\n" +
" lines.push(icon + \" \" + label + \" (\" + info + \")\");\n" +
" });\n" +
" return sendMessage(chatId, lines.join(\"\\n\"));\n" +
" } catch (e) {\n" +
" return sendMessage(chatId, \"Please /start Write first.\");\n" +
" }\n" +
"};\n";
c = c.substring(0, b.start) + nb + c.substring(b.end);
console.log("3/4: feed_check fixed");
// Fix 4: feed_del
b = findBlock("feed_del");
if (!b) { console.log("ERR: feed_del not found"); process.exit(1); }
nb =
"CMD_HANDLERS.feed_del = async function (chatId, url) {\n" +
" if (!url) return sendMessage(chatId, \"Usage: /feed_del <url>\\nUse /feeds to find the URL.\");\n" +
" try {\n" +
" const res = await fetch(\"http://127.0.0.1:\" + WRITE_PORT + \"/api/rss/feeds?url=\" + encodeURIComponent(url), {\n" +
" method: \"DELETE\",\n" +
" });\n" +
" if (!res.ok) throw new Error((await res.json()).error || \"Delete failed\");\n" +
" return sendMessage(chatId, \"\u2702 Feed deleted: \" + url);\n" +
" } catch (e) {\n" +
" return sendMessage(chatId, \"\u274c \" + e.message);\n" +
" }\n" +
"};\n";
c = c.substring(0, b.start) + nb + c.substring(b.end);
console.log("4/4: feed_del fixed");
fs.writeFileSync(path, c, "utf8");
console.log("All fixes applied successfully!");