网淘吧来吧,欢迎您!

Birthday Reminder

2026-03-31 新闻来源:网淘吧 围观:21
电脑广告
手机广告

生日提醒技能

自然地管理生日。存储在data/birthdays.md文件中,支持自然语言查询。

存储

生日数据存储在/home/clawd/clawd/data/birthdays.md文件中:

Birthday Reminder

# Geburtstage

- **Valentina** - 14.02.2000 (wird 26)
- **Max** - 15.03.1990

自然语言模式

添加生日

当用户说出类似以下内容时:

  • "瓦伦蒂娜的生日是2月14日"
  • "添加:马克斯,1990年3月15日"
  • "X出生于1985年5月10日"

操作:

  1. 解析姓名和日期
  2. 如果提供则提取年份
  3. 计算即将到来的年龄:生日年份 - 出生年份
  4. 追加到/home/clawd/clawd/data/birthdays.md
  5. 文件并确认年龄信息

查询生日

瓦伦蒂娜的生日是什么时候?

  • 接下来有哪些生日?
  • 瓦伦蒂娜将满多少岁?
  • 下一个生日
  • 操作:

读取

  1. /home/clawd/clawd/data/birthdays.md解析所有条目
  2. 计算距离每个生日的天数
  3. 按即将到来的日期排序
  4. 如果已知年份,显示将满的年龄
  5. 列出所有

当用户说:

"显示所有生日"

  • "列出我的生日"
  • 操作:

读取文件

  1. 显示带距离天数的格式化列表
  2. 日期解析

支持多种格式:

"2月14日" → 14.02

  • "14.02." → 14.02
  • "14.02." → 14.02
  • "14.02.2000" → 14.02.2000
  • "14.2.2000" → 14.02.2000

年龄计算

from datetime import datetime

def calculate_turning_age(birth_year, birthday_month, birthday_day):
    today = datetime.now()
    birthday_this_year = today.replace(month=birthday_month, day=birthday_day)
    
    if today.date() <= birthday_this_year.date():
        birthday_year = today.year
    else:
        birthday_year = today.year + 1
    
    return birthday_year - birth_year

距离生日天数

def days_until(month, day):
    today = datetime.now()
    birthday = today.replace(month=month, day=day)
    if birthday < today:
        birthday = birthday.replace(year=today.year + 1)
    return (birthday - today).days

自动提醒

对于cron/提醒,每日检查生日并在以下情况时通知:

  • 提前7天
  • 提前1天
  • 当天

使用来自check_reminders()的逻辑,该逻辑位于scripts/reminder.py文件中。

文件格式

每行格式:- **姓名** - DD.MM.YYYY (将X岁)- **姓名** - DD.MM.

请按日期(月/日)对文件进行排序,以便于阅读。

免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏
文章底部电脑广告
手机广告位-内容正文底部

相关文章

您是本站第349303名访客 今日有175篇新文章/评论