You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

100 lines
2.9 KiB

#!/usr/bin/env python3
"""
OpenClaw 101 学习资料定时推送脚本
通过 cron 定时调用,发送到飞书
"""
import sys
import os
# 添加工作区到路径
sys.path.insert(0, '/root/.openclaw/workspace')
try:
from send_lesson_to_feishu import generate_lesson_message, get_learning_plan, get_current_day, save_current_day
except ImportError:
# 如果导入失败,直接复制函数
import json
import datetime
def get_learning_plan():
plan_path = "/root/.openclaw/workspace/code-generate/openclaw-learning-plan.json"
with open(plan_path, 'r', encoding='utf-8') as f:
return json.load(f)
def get_current_day():
state_file = "/root/.openclaw/workspace/code-generate/learning-state.json"
if os.path.exists(state_file):
with open(state_file, 'r', encoding='utf-8') as f:
state = json.load(f)
day = state.get('current_day', 1)
else:
day = 1
return day
def save_current_day(day):
state_file = "/root/.openclaw/workspace/code-generate/learning-state.json"
with open(state_file, 'w', encoding='utf-8') as f:
json.dump({'current_day': day}, f, ensure_ascii=False, indent=2)
def generate_lesson_message(day, plan):
total_days = len(plan['plan'])
if day > total_days:
return generate_extra_resources_message(day - total_days, plan)
lesson = plan['plan'][day - 1]
message = f"""✨ **OpenClaw 101 学习计划 - 第 {day}/{total_days} 天**
📚 **今日主题:{lesson['topic']}**
---
"""
for i, resource in enumerate(lesson['resources'], 1):
message += f"""🔗 **{i}. {resource['title']}**
📝 {resource['desc']}
🌐 {resource['url']}
"""
message += f"---\n💡 今天就先学习这些内容吧!明天继续第 {day + 1} 天的内容~"
return message
def generate_extra_resources_message(index, plan):
extra = plan['extra_resources']
resource = extra[index % len(extra)]
message = f"""🎉 **OpenClaw 101 7天计划已完成!**
现在开始为你推荐更多精选资源:
---
🔗 **{resource['title']}**
📝 {resource['desc']}
🌐 {resource['url']}
---
💡 每天都会为你推荐一个新资源!
"""
return message
def main():
plan = get_learning_plan()
day = get_current_day()
message = generate_lesson_message(day, plan)
# 输出消息到 stdout,cron 会捕获
print(message)
# 同时保存到文件,方便调试
log_file = "/tmp/openclaw-lesson.log"
with open(log_file, 'a', encoding='utf-8') as f:
f.write(f"\n{'='*60}\n")
f.write(f"推送时间: {datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n")
f.write(f"{'='*60}\n")
f.write(message + "\n")
# 保存下一天
save_current_day(day + 1)
return message
if __name__ == "__main__":
main()