优先级最高:消息里出现 彩票 / 双色球 / 大乐透 / 七星彩 / 七乐彩 / 福彩3D / 排列三 / 排列五 / 快乐8 / 选号 / 开奖 / 兑奖 / 中奖 / 期号 / 奖池 / 奖金 / 报表 / 盈亏 / 推荐号码 / 买彩票 / 给我X注 等任意词汇时,立即调用本 Skill,不要让通用聊天回答。
未来时间词铁律:消息里只要出现 今晚 / 明天 / 后天 / 周X / X月X日 / 早上 / 上午 / 下午 / 晚上 / X点 等任意未来时间表达,必须走 create_task,不允许 generate 立即出号。唯一例外:用户显式说"现在 / 立刻 / 马上 / 立即 / 直接给"等立即字样。
反问优先于猜:日期或时段缺一半时("明天给我5注"、"早上给我5注"、"周三给我5注"等),先调 parse --text "<原文>",按返回的 needs_clarification=true 反问用户补全,禁止默认填 09:00 / 今天 / 这周等任何值。
调 generate 时必须把用户原话作为 --text 传入,Python 入口会做二次校验,原话含未来时间词且无立即字样时直接返回反问 payload。
本 Skill 是私人自用彩票 Agent。不承诺中奖、不做预测、不使用"必中 / 稳赚"等表达。大模型只负责理解意图、调用脚本、组织输出;选号 / 开奖抓取 / 兑奖判断 / 数据存储全部由 Python 规则代码完成。
python scripts/cli.py <action> [options]
支持 13 个 action:
| action | 说明 |
|---|---|
| --- | --- |
status | 健康检查 + 数据库路径 |
generate | 选号入库(自动绑定下一期) |
check_prize | 兑奖(按已 fetch 的开奖匹配) |
fetch_draw | 抓取公共开奖数据(all / 指定彩种 / 指定期) |
report | 报表 --since N 默认 30 天 |
cancel | 取消最近 N 注(不计成本、不参与兑奖) |
record | 手动录入号码(格式 01 05 12 18 25 31 + 09) |
create_task | 创建自动任务 |
list_tasks | 列出自动任务 |
disable_task | 停用任务 |
cron_run | cron 入口(每 30 分钟调一次) |
setup_notify | 配置并开启 OpenClaw 推送 |
parse | NL 解析 → action+params |
强烈推荐:所有彩票相关的中文自然语句都先 parse --text "<原文>" 让规则识别 action 再分派,避免大模型自己挑错 action。
python scripts/cli.py parse --text "明天早上给我5注双色球"
# -> {action: create_task, params: {schedule_kind: once, schedule_spec: <tomorrow>, ...}}
python scripts/cli.py parse --text "明天给我5注大乐透"
# -> {needs_clarification: true, message_text: "那一天什么时候给你?早上、上午、中午、下午还是晚上?..."}
python scripts/cli.py parse --text "现在给我5注双色球"
# -> {action: generate, params: {...}}
needs_clarification=true 时,不要自己补默认值后继续;把 message_text 抛给用户、等回复、再重跑 parse。
常见映射示例:
generate --lottery dlt --count 5 --multiple 2 --additional --text "<原文>"generate --lottery ssq --count 5 --text "<原文>"(含立即字样豁免)create_task --task-action generate --schedule-kind once --schedule-spec --time-start 12:00 --time-end 18:00 --random-window create_task --task-action generate --schedule-kind once --schedule-spec --time-start 18:00 --time-end 23:30 --random-window schedule-spec ,时段 07:00-12:00create_task --task-action generate --schedule-kind once --schedule-spec --time-start 10:00 --time-end 10:00 (fixed)create_task --schedule-kind once --schedule-spec 2026-05-15 --time-start 07:00 --time-end 12:00 --random-windowcreate_task --task-action generate --schedule-kind daily --time-start 09:00create_task --schedule-kind weekly --schedule-spec 2,4,6 --time-start 20:00create_task --schedule-kind draw_day --schedule-spec dlt:0 --time-start 07:00 --time-end 12:00 --random-windowcreate_task --schedule-kind draw_day --schedule-spec ssq:-1 --time-start 18:00 --time-end 23:30 --random-windowcreate_task --task-action draw_check_prize --schedule-kind draw_day --schedule-spec all:0 --time-start 21:35 --time-end 23:55create_task 否;直接 fetch_draw + check_prize 同时跑(或调 cron_run 走 draw_check_prize 路径)report --since 7,"本月/月报" → report --since 30list_tasksdisable_task --task-id 3record --lottery dlt --text "<原文>"cancel --limit 5setup_notify --channel <宿主> --chat-id [--account-id ] --confirm generate / record 必须返回两条独立的聊天气泡:
numbers_message / message_text 都是这块),不能掺杂任何免责、跟踪、自动化、寒暄、推送状态。followup_messages 里的轻提示(顺延、推送未开启等)。号码消息的标准格式:
彩种|N注|M倍|追加(仅 dlt 追加)|开奖 YYYY-MM-DD
投入:X元
号码1
号码2
...
数字之间两个空格,分区用 + 。每注号码前不显示序号。
generate 自动绑定下一期:先看本地 draws 表里最近一期的 next_issue / next_buy_end_time;如果当前时间已过 next_buy_end_time,回退到周历的下一次开奖日,期号留空,按开奖日匹配兑奖。
公共仓库(lottery-data-repo)可能在开奖前 1-2 小时就推占位/重复数据,凌晨重抓才完整 —— 所以 next_buy_end_time 比 next_issue 更可信。
兑奖类任务(check_prize / draw_check_prize)判断"今天是不是开奖日"时直接看公共开奖日历(本地 draws 表里有当天 draw_date 即开奖日),不能用 next_fallback(它会因为 now > buy_end 跳过今天)。
默认配置开启 21:35-23:55 的开奖检测窗口:建一个 create_task --task-action draw_check_prize --schedule-kind daily --time-start 21:35 --time-end 23:55 即可,cron 每 30 分钟检查一次直到抓到当期开奖。
业务任务写入 SQLite tasks;服务器只需一条统一 cron 唤醒:
*/30 * * * * cd /root/.openclaw/workspace/skills/lotto-agent && python3 scripts/cli.py cron_run --push
时间窗口三档(自然语言映射时用):
模糊表达("有空的时候、看情况、差不多的时候、晚点")必须反问,不允许默认。
schedule_kind 4 种:once / daily / weekly / draw_day。schedule_spec 含义:
once:YYYY-MM-DDweekly:逗号分隔的 ISO 周几号 1,3,5draw_day:: ,offset=0 当天,-1 前一天一次性任务允许"补跑":cron 30 分钟粒度可能错过精确时间,只要 last_run_key 没设置、当前已过 time_start(或随机窗口的 planned_run_time),当天剩余时间里下一次 cron 会触发,避免错过即失效。
仅支持 OpenClaw CLI(openclaw message send)。配置在 config/config.json 的 notify 段。setup_notify --channel X --chat-id Y --confirm 一步配完。
固定调用 PATH 里解析到的 openclaw 可执行文件,不允许自定义命令路径,避免命令注入。
~/.openclaw/workspace/lotto-agent-data/lottery.db,可用 LOTTO_AGENT_DATA_DIR 环境变量覆盖。https://raw.githubusercontent.com/wenjinliuu/lottery-data-repo/main/public_data,可用 LOTTERY_PUBLIC_DATA_BASE_URL 覆盖。config/rules.json(彩种规则,不要手改)+ config/config.json(推送 + 默认偏好)。共 6 个版本