苹果有bark,安卓的bark不好用,并且不太喜欢使用邮箱和TG推送,还是比较习惯使用Server酱3推送,可以免费使用国内手机的云通知,不占后台。小米实测是延迟很低。
不过看了看Komari里面连server酱收费的通知都没有,让ai分析了一下,使用get和post通知的方式也不行,已经写死了,不能添加变量。看到可以使用js的方式推送,于是让AI试了试,AI真好用!
下面const sendkey后面写你的sendkey, const url后面的UID记得换成你自己的Server酱3的UID
可能有很多错误,不会编程,大家凑合用。
// Server酱3 推送函数async function pushToServerChan(title, desp) { const sendkey = '这里写你Server酱3的sendkey'; // 你的 sendkey const url = `https://UID.push.ft07.com/send/${sendkey}.send?title=${encodeURIComponent(title)}&desp=${encodeURIComponent(desp)}`; try { const response = await fetch(url, { method: 'GET' }); const result = await response.json(); console.log('推送结果:', result); return result.code === 0; } catch (error) { console.error('推送失败:', error); return false; }}// 格式化时间:把 ISO 时间转成 YYYY-MM-DD HH:MM:SSfunction formatTime(isoTime) { if (!isoTime) return new Date().toLocaleString('zh-CN', { timeZone: 'Asia/Shanghai' }); // 默认当前时间(北京时间) const date = new Date(isoTime); return date.toLocaleString('zh-CN', { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit', timeZone: 'Asia/Shanghai' // 改成你的时区,比如想用 UTC 就删掉这行 }).replace(/\//g, '-');}// 主推送函数(处理完整事件)function sendEvent(event) { if (!event) return false; const emoji = event.emoji || '🔴'; const client = event.clients?.map(c => c.name).join(', ') || event.client || '未知服务器'; const eventType = event.event || '未知事件'; const rawTime = event.time || new Date().toISOString(); const msg = event.message?.trim() || ''; const title = `${emoji} ${client} ${eventType}`; const formattedTime = formatTime(rawTime); // 如果 msg 为空,补充提示 const detailMsg = msg || (eventType.includes('Offline') ? '服务器已离线,请检查网络、电源或服务状态。' : eventType.includes('Online') ? '服务器已恢复上线。' : '无额外详细信息。'); const desp = `**时间**:${formattedTime}\n\n**服务器**:${client}\n**事件**:${eventType}\n\n**详细信息**:${detailMsg}`; pushToServerChan(title, desp); return true;}// 测试通知也用这个(可选优化)function sendMessage(message, title) { const defaultTitle = title || 'Komari 测试通知'; const defaultDesp = message || '这是一条测试消息,一切正常!'; pushToServerChan(defaultTitle, defaultDesp); return true;}我这里使用的消息通知模板是下面这个
{{emoji}}{{emoji}}{{emoji}}
事件:{{event}}
服务器:{{client}}
消息:{{message}}
时间:{{time}}
评论 (0)