Files
memind/wechat/morning-greeting-library.mjs
T
john e42417bd6e feat(wechat): add subscribe morning reminder, plaza welcome, and LLM fallback
Enable daily morning greeting on reply 1 (with custom time, modify, and cancel),
random greeting delivery, M发现 in subscribe welcome, and optional LLM parsing when
rules miss. Also fix WeChat MP draft/config error passthrough and add Tang E2E scripts.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-10 17:32:10 +08:00

80 lines
3.9 KiB
JavaScript

import { localDateKey, normalizeTimezone } from '../schedule-time.mjs';
/** 每日早安随机话术库:开心、轻松、心旷神怡风格。 */
export const MORNING_GREETING_LIBRARY = Object.freeze([
'早安!今天的阳光为你预留了,走出去吸一口新鲜空气吧 ☀️',
'新的一天,愿你像晨风一样轻盈,像晨光一样明亮。',
'早安~把烦恼留在昨夜,今天只带好心情出门。',
'早上好!愿你今天遇见的小确幸,比预期多一点点。',
'早安,愿你今日步履从容,心里装着一整片晴朗。',
'新的一天开始了,给自己一杯温水和一个微笑吧。',
'早安!世界还在慢慢醒来,你已经准备好发光了。',
'愿你今天的节奏刚刚好:不紧不慢,却足够精彩。',
'早上好~把「我可以」放在心里,今天会顺很多。',
'早安!愿你在忙碌里也能偷到片刻的心旷神怡。',
'今天也要记得:你已经很棒,接下来会更棒。',
'早安~愿你的努力都有回响,愿你的等待都有花开。',
'早上好!把期待调亮一点,生活就会温柔一点。',
'新的一天,愿你眼里有光,脚下有路,心里有暖。',
'早安!先深呼吸三次,把今天的从容装进口袋。',
'愿你今天被善意环绕,也被自己的勇气照亮。',
'早上好~小目标也好,大梦想也罢,今天都向前一步。',
'早安!愿你像清晨的湖面,平静里自有清亮与力量。',
'今天也请对自己好一点:你值得被温柔对待。',
'早安~愿你在平凡的一天里,也能遇见不平凡的惊喜。',
'早上好!把「试试看」当作今天的关键词吧。',
'新的一天,愿你收获顺利,也收获一份轻松好心情。',
'早安!愿你今日所遇皆温柔,所行皆坦途。',
'愿你带着轻盈的心出发,把美好一点点装进行程。',
'早上好~今天也请相信:好事正在来的路上。',
'早安!愿你像初升的太阳,温暖自己,也照亮今天。',
'新的一天,愿你少些内耗,多些心安理得的开怀。',
'早安~把压力放小,把快乐放大,今天会很不一样。',
'早上好!愿你今日有清欢,有进展,也有会心一笑。',
'愿你今天的心胸像天空一样开阔,像微风一样自在。',
'早安!先给自己一个拥抱,再去拥抱今天。',
'新的一天,愿你做事有底气,生活有诗意。',
'早上好~愿你今天被好运轻轻拍一下肩膀。',
'早安!愿你步履所至,皆是值得收藏的风景。',
'今天也请记得:慢慢来,也会到;你会很好的。',
'早安~愿你心里装着希望,手里握着行动力。',
'早上好!愿你在今天,遇见让你嘴角上扬的瞬间。',
'新的一天,愿你既有奔赴的勇,也有停下来的闲。',
'早安!愿你今日心明眼亮,所盼皆如愿。',
'愿你像清晨一样新鲜,把每一天都过成新的开始。',
]);
function hashString(input) {
let hash = 2166136261;
for (let i = 0; i < input.length; i += 1) {
hash ^= input.charCodeAt(i);
hash = Math.imul(hash, 16777619);
}
return Math.abs(hash);
}
/**
* 按用户 + 本地日期从话术库选取一句,保证同一用户同一天稳定、跨天变化。
*/
export function pickDailyMorningGreeting({
userId = '',
timezone = 'Asia/Shanghai',
now = Date.now(),
library = MORNING_GREETING_LIBRARY,
} = {}) {
const pool = Array.isArray(library) && library.length ? library : MORNING_GREETING_LIBRARY;
const tz = normalizeTimezone(timezone);
const dateKey = localDateKey(now, tz);
const seed = hashString(`${String(userId)}:${dateKey}`);
return pool[seed % pool.length];
}
export function formatMorningGreetingDeliveryText({
userId,
timezone = 'Asia/Shanghai',
now = Date.now(),
} = {}) {
const greeting = pickDailyMorningGreeting({ userId, timezone, now });
return `☀️ 早安\n\n${greeting}`;
}