新增每 bot 回覆規範(promptRules)、可讀寫成員(writeUsers,其他人唯讀)、PDF/文字附件;cluemarket-tg-bot 搬入控制台

This commit is contained in:
2026-08-24 12:04:05 +08:00
parent b0cba06b0c
commit ce8ba3cd5a
12 changed files with 109 additions and 26 deletions
+8 -2
View File
@@ -6,7 +6,7 @@
const fs = require('fs');
const path = require('path');
const { TGBOT_HOME, BOT_SCRIPT, jlist, botConfigPathOf } = require('./pm2util');
const { loadConfig, SANDBOX_MODES, ENGINE_IDS, SESSION_MODES, CONFIG_BASENAME } = require('./config');
const { loadConfig, SANDBOX_MODES, ENGINE_IDS, SESSION_MODES, CONFIG_BASENAME, normalizeUsers } = require('./config');
const REG_FILE = path.join(TGBOT_HOME, 'registry.json');
const BOTS_DIR = path.join(TGBOT_HOME, 'bots');
@@ -80,6 +80,8 @@ async function listBots() {
sessionMode: cfg?.sessionMode || 'per-chat',
networkAccess: !!cfg?.networkAccess,
serviceTier: cfg?.serviceTier || '',
promptRules: cfg?.promptRules || '',
writeUsers: cfg?.writeUsers || [],
timeoutMinutes: cfg?.timeoutMinutes || null,
tokenMasked: maskToken(cfg?.telegramToken),
hasToken: !!cfg?.telegramToken,
@@ -116,7 +118,7 @@ function validateBotInput({ name, token, workDir, sandbox, engine }, { isCreate
}
}
async function createBot({ name, token, workDir, engine, sandbox, model, reasoningEffort, sessionMode, networkAccess, timeoutMinutes }) {
async function createBot({ name, token, workDir, engine, sandbox, model, reasoningEffort, sessionMode, networkAccess, promptRules, writeUsers, timeoutMinutes }) {
validateBotInput({ name, token, workDir, sandbox, engine }, { isCreate: true });
const reg = loadRegistry();
if (reg.bots[name]) throw new Error(`已有同名 bot${name}`);
@@ -135,6 +137,8 @@ async function createBot({ name, token, workDir, engine, sandbox, model, reasoni
reasoningEffort: reasoningEffort || '',
sessionMode: SESSION_MODES.includes(sessionMode) ? sessionMode : 'per-chat',
networkAccess: !!networkAccess,
promptRules: typeof promptRules === 'string' ? promptRules.trim() : '',
writeUsers: normalizeUsers(writeUsers),
serviceTier: 'priority', // codex 速度固定 Fast 1.5x
timeoutMinutes: Number(timeoutMinutes) || 30,
pm2Name: name,
@@ -172,6 +176,8 @@ async function updateBot(name, patch) {
if (patch.reasoningEffort !== undefined) raw.reasoningEffort = patch.reasoningEffort;
if (SESSION_MODES.includes(patch.sessionMode)) { raw.sessionMode = patch.sessionMode; delete raw.sharedSession; }
if (patch.networkAccess !== undefined) raw.networkAccess = !!patch.networkAccess;
if (patch.promptRules !== undefined) raw.promptRules = String(patch.promptRules || '').trim();
if (patch.writeUsers !== undefined) raw.writeUsers = normalizeUsers(patch.writeUsers);
if (patch.timeoutMinutes !== undefined && Number(patch.timeoutMinutes) > 0) {
raw.timeoutMinutes = Number(patch.timeoutMinutes);
}