qqbot-remind

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

QQ Bot 定时提醒

QQ Bot Scheduled Reminder

⚠️ 强制规则

⚠️ Mandatory Rules

当用户提到「提醒」「闹钟」「定时」「X分钟/小时后」「每天X点」「叫我」等任何涉及延时或定时的请求时,你必须调用工具,绝对不能只用自然语言回复说"好的,我会提醒你"!
你没有内存或后台线程,口头承诺"到时候提醒"是无效的——只有调用工具才能真正注册定时任务。

When the user mentions any requests involving delay or scheduling such as "remind", "alarm", "schedule", "in X minutes/hours", "every day at X o'clock", "call me", etc., you must call the tool. Under no circumstances should you only reply with natural language like "Okay, I will remind you"!
You have no memory or background threads, so verbal promises of "I'll remind you then" are invalid — only calling the tool can truly register the scheduled task.

推荐流程(优先使用
qqbot_remind
工具)

Recommended Flow (Prioritize using the
qqbot_remind
tool)

第一步:调用
qqbot_remind
工具,传入简单参数:
参数说明示例
action
操作类型
"add"
/
"list"
/
"remove"
content
提醒内容
"喝水"
to
目标地址(可选,系统自动获取,通常无需填写)
time
时间(相对时间或 cron 表达式)
"5m"
/
"1h30m"
/
"0 8 * * *"
jobId
任务 ID(仅 remove)
"xxx"
第二步
qqbot_remind
会返回
cronParams
,你必须立即
cronParams
的值作为参数调用
cron
工具。
第三步:根据
cron
工具的返回结果,回复用户。
Step 1: Call the
qqbot_remind
tool with simple parameters:
ParameterDescriptionExample
action
Action type
"add"
/
"list"
/
"remove"
content
Reminder content
"drink water"
to
Target address (optional, automatically obtained by the system, usually no need to fill in)
time
Time (relative time or cron expression)
"5m"
/
"1h30m"
/
"0 8 * * *"
jobId
Task ID (only for remove)
"xxx"
Step 2:
qqbot_remind
will return
cronParams
. You must immediately call the
cron
tool with the value of
cronParams
as the parameter.
Step 3: Reply to the user based on the return result of the
cron
tool.

示例

Example

用户说:"5分钟后提醒我喝水"
  1. 调用
    qqbot_remind
    { "action": "add", "content": "喝水", "time": "5m" }
  2. 收到返回的
    cronParams
    → 立即调用
    cron
    工具,参数为该
    cronParams
  3. 回复用户:
    ⏰ 好的,5分钟后提醒你喝水~

User says: "Remind me to drink water in 5 minutes"
  1. Call
    qqbot_remind
    :
    { "action": "add", "content": "drink water", "time": "5m" }
  2. Receive the returned
    cronParams
    → immediately call the
    cron
    tool with this
    cronParams
    as the parameter
  3. Reply to the user:
    ⏰ Got it, I'll remind you to drink water in 5 minutes~

备用方案(直接使用
cron
工具)

Alternative Solution (Directly use the
cron
tool)

仅当
qqbot_remind
工具不可用时使用以下方式。
Use the following method only when the
qqbot_remind
tool is unavailable.

核心规则

Core Rules

payload.kind 必须是
"agentTurn"
,绝对不能用
"systemEvent"
systemEvent
只在 AI 会话内部注入文本,用户收不到 QQ 消息。
5 个不可更改字段
字段固定值原因
payload.kind
"agentTurn"
systemEvent
不会发 QQ 消息
payload.deliver
true
否则不投递
payload.channel
"qqbot"
QQ 通道标识
payload.to
用户 openid
To
字段获取
sessionTarget
"isolated"
隔离会话避免污染
schedule.atMs
必须是绝对毫秒时间戳(如
1770733800000
),不支持
"5m"
等相对字符串。 计算方式:
当前时间戳ms + 延迟毫秒
payload.kind must be
"agentTurn"
, absolutely not
"systemEvent"
!
systemEvent
only injects text into the AI session internally, and the user will not receive QQ messages.
5 Non-modifiable Fields:
FieldFixed ValueReason
payload.kind
"agentTurn"
systemEvent
does not send QQ messages
payload.deliver
true
Otherwise, it will not be delivered
payload.channel
"qqbot"
QQ channel identifier
payload.to
User openidObtained from the
To
field
sessionTarget
"isolated"
Isolate sessions to avoid contamination
schedule.atMs
must be an absolute millisecond timestamp (e.g.,
1770733800000
), relative strings like
"5m"
are not supported. Calculation method:
current timestamp in ms + delay in ms
.

一次性提醒(schedule.kind = "at")

One-time Reminder (schedule.kind = "at")

json
{
  "action": "add",
  "job": {
    "name": "{任务名}",
    "schedule": { "kind": "at", "atMs": "{当前时间戳ms + N*60000}" },
    "sessionTarget": "isolated",
    "wakeMode": "now",
    "deleteAfterRun": true,
    "payload": {
      "kind": "agentTurn",
      "message": "你是一个暖心的提醒助手。请用温暖、有趣的方式提醒用户:{提醒内容}。要求:(1) 不要回复HEARTBEAT_OK (2) 不要解释你是谁 (3) 直接输出一条暖心的提醒消息 (4) 可以加一句简短的鸡汤或关怀的话 (5) 控制在2-3句话以内 (6) 用emoji点缀",
      "deliver": true,
      "channel": "qqbot",
      "to": "{openid}"
    }
  }
}
json
{
  "action": "add",
  "job": {
    "name": "{task name}",
    "schedule": { "kind": "at", "atMs": "{current timestamp ms + N*60000}" },
    "sessionTarget": "isolated",
    "wakeMode": "now",
    "deleteAfterRun": true,
    "payload": {
      "kind": "agentTurn",
      "message": "You are a warm reminder assistant. Please remind the user in a warm and interesting way: {reminder content}. Requirements: (1) Do not reply with HEARTBEAT_OK (2) Do not explain who you are (3) Directly output a warm reminder message (4) You can add a short inspirational quote or caring message (5) Keep it within 2-3 sentences (6) Embellish with emojis",
      "deliver": true,
      "channel": "qqbot",
      "to": "{openid}"
    }
  }
}

周期提醒(schedule.kind = "cron")

Recurring Reminder (schedule.kind = "cron")

json
{
  "action": "add",
  "job": {
    "name": "{任务名}",
    "schedule": { "kind": "cron", "expr": "0 8 * * *", "tz": "Asia/Shanghai" },
    "sessionTarget": "isolated",
    "wakeMode": "now",
    "payload": {
      "kind": "agentTurn",
      "message": "你是一个暖心的提醒助手。请用温暖、有趣的方式提醒用户:{提醒内容}。要求:(1) 不要回复HEARTBEAT_OK (2) 不要解释你是谁 (3) 直接输出一条暖心的提醒消息 (4) 可以加一句简短的鸡汤或关怀的话 (5) 控制在2-3句话以内 (6) 用emoji点缀",
      "deliver": true,
      "channel": "qqbot",
      "to": "{openid}"
    }
  }
}
周期任务不加
deleteAfterRun
。群聊
to
格式为
"group:{group_openid}"

json
{
  "action": "add",
  "job": {
    "name": "{task name}",
    "schedule": { "kind": "cron", "expr": "0 8 * * *", "tz": "Asia/Shanghai" },
    "sessionTarget": "isolated",
    "wakeMode": "now",
    "payload": {
      "kind": "agentTurn",
      "message": "You are a warm reminder assistant. Please remind the user in a warm and interesting way: {reminder content}. Requirements: (1) Do not reply with HEARTBEAT_OK (2) Do not explain who you are (3) Directly output a warm reminder message (4) You can add a short inspirational quote or caring message (5) Keep it within 2-3 sentences (6) Embellish with emojis",
      "deliver": true,
      "channel": "qqbot",
      "to": "{openid}"
    }
  }
}
Do not add
deleteAfterRun
for recurring tasks. For group chats, the
to
format is
"group:{group_openid}"
.

cron 表达式速查

Cron Expression Quick Reference

场景expr
每天早上8点
"0 8 * * *"
每天晚上10点
"0 22 * * *"
工作日早上9点
"0 9 * * 1-5"
每周一早上9点
"0 9 * * 1"
每周末上午10点
"0 10 * * 0,6"
每小时整点
"0 * * * *"
周期提醒必须加
"tz": "Asia/Shanghai"

Scenarioexpr
Every morning at 8 AM
"0 8 * * *"
Every night at 10 PM
"0 22 * * *"
Every workday morning at 9 AM
"0 9 * * 1-5"
Every Monday morning at 9 AM
"0 9 * * 1"
Every weekend morning at 10 AM
"0 10 * * 0,6"
Every hour on the hour
"0 * * * *"
Must add
"tz": "Asia/Shanghai"
for recurring reminders.

AI 决策指南

AI Decision Guide

用户说法actiontime 格式
"5分钟后提醒我喝水"
add
"5m"
"1小时后提醒开会"
add
"1h"
"每天8点提醒我打卡"
add
"0 8 * * *"
"工作日早上9点提醒"
add
"0 9 * * 1-5"
"我有哪些提醒"
list
"取消喝水提醒"
remove
"修改提醒时间"
remove
add
"提醒我"(无时间)需追问
纯相对时间("5分钟后"、"1小时后")可直接计算,无需确认。时间模糊或缺失时需追问。

User Statementactiontime Format
"Remind me to drink water in 5 minutes"
add
"5m"
"Remind me of the meeting in 1 hour"
add
"1h"
"Remind me to check in every day at 8 AM"
add
"0 8 * * *"
"Remind me every workday morning at 9 AM"
add
"0 9 * * 1-5"
"What reminders do I have?"
list
"Cancel the drink water reminder"
remove
"Modify the reminder time"
remove
add
"Remind me" (no time specified)Must follow up
Pure relative time ("in 5 minutes", "in 1 hour") can be calculated directly without confirmation. Follow up when the time is ambiguous or missing.

回复模板

Reply Templates

  • 一次性:
    ⏰ 好的,{时间}后提醒你{内容}~
  • 周期:
    ⏰ 收到,{周期}提醒你{内容}~
  • 查询无结果:
    📋 目前没有提醒哦~ 说"5分钟后提醒我xxx"试试?
  • 删除成功:
    ✅ 已取消"{名称}"
  • One-time:
    ⏰ Got it, I'll remind you to {content} in {time}~
  • Recurring:
    ⏰ Received, I'll remind you to {content} {recurrence}~
  • No results in query:
    📋 There are currently no reminders~ Try saying "Remind me to xxx in 5 minutes"?
  • Deletion successful:
    ✅ "{name}" has been cancelled