fix(core): 🩹 修复验证逻辑并增加异常配置提示
优化 Telegram Bot 的验证逻辑判断流程,当验证功能由于配置问题不可用时,向用户发送明确的错误提示信息,提升系统的健壮性。 - 调整了 isQAOn 和 isCaptchaOn 的条件分支逻辑 - 增加配置异常时的兜底消息回复 - 确保验证流程在异常状态下能正确引导用户联系管理员
This commit is contained in:
@@ -522,13 +522,18 @@ async function sendStart(id, msg, env) {
|
|||||||
parse_mode: "HTML",
|
parse_mode: "HTML",
|
||||||
reply_markup: { inline_keyboard: [[{ text: "点击进行验证", web_app: { url: `${url}/verify?user_id=${encodeURIComponent(id)}&nonce=${encodeURIComponent(nonce)}` } }]] }
|
reply_markup: { inline_keyboard: [[{ text: "点击进行验证", web_app: { url: `${url}/verify?user_id=${encodeURIComponent(id)}&nonce=${encodeURIComponent(nonce)}` } }]] }
|
||||||
});
|
});
|
||||||
} else if (!isCaptchaOn && isQAOn) {
|
} else if (isQAOn) {
|
||||||
await updUser(id, { user_state: "pending_verification" }, env);
|
await updUser(id, { user_state: "pending_verification" }, env);
|
||||||
return api(env.BOT_TOKEN, "sendMessage", {
|
return api(env.BOT_TOKEN, "sendMessage", {
|
||||||
chat_id: id,
|
chat_id: id,
|
||||||
text: "❓ <b>安全提问</b>\n请回答:\n" + await getCfg('verif_q', env),
|
text: "❓ <b>安全提问</b>\n请回答:\n" + await getCfg('verif_q', env),
|
||||||
parse_mode: "HTML"
|
parse_mode: "HTML"
|
||||||
});
|
});
|
||||||
|
} else if (isCaptchaOn || isQAOn) {
|
||||||
|
return api(env.BOT_TOKEN, "sendMessage", {
|
||||||
|
chat_id: id,
|
||||||
|
text: "⚠️ 验证功能暂时不可用,请联系管理员检查配置"
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -723,7 +728,7 @@ async function relayToTopic(msg, u, env) {
|
|||||||
if (e.message && (e.message.includes("thread") || e.message.includes("not found") || e.message.includes("Bad Request"))) {
|
if (e.message && (e.message.includes("thread") || e.message.includes("not found") || e.message.includes("Bad Request"))) {
|
||||||
await updUser(uid, { topic_id: null }, env); u.topic_id = null; return relayToTopic(msg, u, env);
|
await updUser(uid, { topic_id: null }, env); u.topic_id = null; return relayToTopic(msg, u, env);
|
||||||
} else {
|
} else {
|
||||||
api(env.BOT_TOKEN, "sendMessage", { chat_id: uid, text: "❌ 发送失败,系统异常" });
|
await api(env.BOT_TOKEN, "sendMessage", { chat_id: uid, text: "❌ 发送失败,系统异常" });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -809,7 +814,7 @@ async function handleBackup(msg, meta, env) {
|
|||||||
if (!bid) return;
|
if (!bid) return;
|
||||||
try {
|
try {
|
||||||
const header = `<b>📨 备份</b> ${meta.name} (${meta.userId})`;
|
const header = `<b>📨 备份</b> ${meta.name} (${meta.userId})`;
|
||||||
if (msg.text) await api(env.BOT_TOKEN, "sendMessage", { chat_id: bid, text: header + "\n" + msg.text, parse_mode: "HTML" });
|
if (msg.text) await api(env.BOT_TOKEN, "sendMessage", { chat_id: bid, text: header + "\n" + escape(msg.text), parse_mode: "HTML" });
|
||||||
else {
|
else {
|
||||||
await api(env.BOT_TOKEN, "sendMessage", { chat_id: bid, text: header, parse_mode: "HTML" });
|
await api(env.BOT_TOKEN, "sendMessage", { chat_id: bid, text: header, parse_mode: "HTML" });
|
||||||
await api(env.BOT_TOKEN, "copyMessage", { chat_id: bid, from_chat_id: msg.chat.id, message_id: msg.message_id });
|
await api(env.BOT_TOKEN, "copyMessage", { chat_id: bid, from_chat_id: msg.chat.id, message_id: msg.message_id });
|
||||||
@@ -840,7 +845,7 @@ async function handleAdminReply(msg, env) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
await updUser(targetUid, { user_info: u.user_info }, env);
|
await updUser(targetUid, { user_info: u.user_info }, env);
|
||||||
await setCfg(`admin_state:${msg.from.id}`, "", env);
|
await deleteCfg(`admin_state:${msg.from.id}`, env);
|
||||||
return api(env.BOT_TOKEN, "sendMessage", { chat_id: msg.chat.id, message_thread_id: msg.message_thread_id, text: `✅ 备注已更新` });
|
return api(env.BOT_TOKEN, "sendMessage", { chat_id: msg.chat.id, message_thread_id: msg.message_thread_id, text: `✅ 备注已更新` });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -862,7 +867,7 @@ async function handleAdminReply(msg, env) {
|
|||||||
[uid, sent.message_id.toString(), storeText, msg.date || Math.floor(Date.now() / 1000), msg.message_id.toString()]);
|
[uid, sent.message_id.toString(), storeText, msg.date || Math.floor(Date.now() / 1000), msg.message_id.toString()]);
|
||||||
}
|
}
|
||||||
// 此处为管理员端给用户下发消息的主逻辑。根据之前的版本,管理员侧发送成功后的回执代码也已经去除
|
// 此处为管理员端给用户下发消息的主逻辑。根据之前的版本,管理员侧发送成功后的回执代码也已经去除
|
||||||
} catch (e) { api(env.BOT_TOKEN, "sendMessage", { chat_id: msg.chat.id, message_thread_id: msg.message_thread_id, text: "❌ 内部投递失败" }); }
|
} catch (e) { await api(env.BOT_TOKEN, "sendMessage", { chat_id: msg.chat.id, message_thread_id: msg.message_thread_id, text: "❌ 内部投递失败" }); }
|
||||||
}
|
}
|
||||||
|
|
||||||
async function handleEdit(msg, env) {
|
async function handleEdit(msg, env) {
|
||||||
@@ -982,7 +987,7 @@ async function handleCallback(cb, env) {
|
|||||||
return api(env.BOT_TOKEN, "answerCallbackQuery", { callback_query_id: cb.id, text: "无操作权限", show_alert: true });
|
return api(env.BOT_TOKEN, "answerCallbackQuery", { callback_query_id: cb.id, text: "无操作权限", show_alert: true });
|
||||||
}
|
}
|
||||||
await api(env.BOT_TOKEN, "answerCallbackQuery", { callback_query_id: cb.id });
|
await api(env.BOT_TOKEN, "answerCallbackQuery", { callback_query_id: cb.id });
|
||||||
if (act === 'pin_card') api(env.BOT_TOKEN, "pinChatMessage", { chat_id: msg.chat.id, message_id: msg.message_id, message_thread_id: msg.message_thread_id });
|
if (act === 'pin_card') await api(env.BOT_TOKEN, "pinChatMessage", { chat_id: msg.chat.id, message_id: msg.message_id, message_thread_id: msg.message_thread_id });
|
||||||
else if (['block','unblock'].includes(act)) {
|
else if (['block','unblock'].includes(act)) {
|
||||||
const isB = act === 'block'; const uid = p1; const u = await getUser(uid, env); const bid = await getCfg('blocked_topic_id', env);
|
const isB = act === 'block'; const uid = p1; const u = await getUser(uid, env); const bid = await getCfg('blocked_topic_id', env);
|
||||||
await updUser(uid, { is_blocked: isB, block_count: 0 }, env);
|
await updUser(uid, { is_blocked: isB, block_count: 0 }, env);
|
||||||
@@ -991,8 +996,8 @@ async function handleCallback(cb, env) {
|
|||||||
api(env.BOT_TOKEN, "editMessageReplyMarkup", { chat_id: env.ADMIN_GROUP_ID, message_id: u.user_info.card_msg_id, reply_markup: getBtns(uid, isB, u.user_info.username) }).catch(()=>{});
|
api(env.BOT_TOKEN, "editMessageReplyMarkup", { chat_id: env.ADMIN_GROUP_ID, message_id: u.user_info.card_msg_id, reply_markup: getBtns(uid, isB, u.user_info.username) }).catch(()=>{});
|
||||||
}
|
}
|
||||||
await manageBlacklist(env, u, { id: uid, username: u.user_info.username, first_name: u.user_info.name }, isB);
|
await manageBlacklist(env, u, { id: uid, username: u.user_info.username, first_name: u.user_info.name }, isB);
|
||||||
if (!isB && msg.message_thread_id && bid && msg.message_thread_id.toString() === bid) api(env.BOT_TOKEN, "answerCallbackQuery", { callback_query_id: cb.id, text: "✅ 已解除屏蔽" });
|
if (!isB && msg.message_thread_id && bid && msg.message_thread_id.toString() === bid) await api(env.BOT_TOKEN, "answerCallbackQuery", { callback_query_id: cb.id, text: "✅ 已解除屏蔽" });
|
||||||
else api(env.BOT_TOKEN, "sendMessage", { chat_id: msg.chat.id, message_thread_id: msg.message_thread_id, text: isB ? "❌ 已屏蔽" : "✅ 已解封" });
|
else await api(env.BOT_TOKEN, "sendMessage", { chat_id: msg.chat.id, message_thread_id: msg.message_thread_id, text: isB ? "❌ 已屏蔽" : "✅ 已解封" });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1079,7 +1084,7 @@ async function handleAdminInput(id, msg, state, env) {
|
|||||||
const displayVal = (val.startsWith('{') && k === 'welcome_msg') ? "[媒体配置组合]" : val.substring(0,100);
|
const displayVal = (val.startsWith('{') && k === 'welcome_msg') ? "[媒体配置组合]" : val.substring(0,100);
|
||||||
await api(env.BOT_TOKEN, "sendMessage", { chat_id: id, text: `✅ ${k} 规则已写入:\n${displayVal}` });
|
await api(env.BOT_TOKEN, "sendMessage", { chat_id: id, text: `✅ ${k} 规则已写入:\n${displayVal}` });
|
||||||
await handleAdminConfig(id, null, 'menu', null, null, env);
|
await handleAdminConfig(id, null, 'menu', null, null, env);
|
||||||
} catch (e) { api(env.BOT_TOKEN, "sendMessage", { chat_id: id, text: `❌ 指令提交受阻: ${e.message}` }); }
|
} catch (e) { await api(env.BOT_TOKEN, "sendMessage", { chat_id: id, text: `❌ 指令提交受阻: ${e.message}` }); }
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- 10. 工具函数池 (Pure Functions) ---
|
// --- 10. 工具函数池 (Pure Functions) ---
|
||||||
|
|||||||
Reference in New Issue
Block a user