Channel Reminders

# Channel Reminders

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "Channel Reminders" with this command: npx skills add channel-reminders

Channel Reminders

Навык для создания напоминаний через cron jobs с доставкой в Telegram.


⚠️ ТРЕБОВАНИЯ (проверь перед использованием)

1. Heartbeat должен быть включён

В ~/.openclaw/openclaw.json проверь:

{
  "agents": {
    "defaults": {
      "heartbeat": {
        "every": "5m",      // ← НЕ должен быть "0m" или отсутствовать
        "target": "last"    // ← Куда отправлять ответы
      }
    }
  }
}

Если heartbeat.every = "0m" или отсутствует — напоминания НЕ будут работать!

2. HEARTBEAT.md должен содержать инструкцию

В HEARTBEAT.md main агента ОБЯЗАТЕЛЬНО добавь раздел для обработки напоминаний:

### Напоминания (systemEvent)

Когда получаешь systemEvent с напоминанием (обычно содержит ⏰, 📅, 💰, 📞, ✅, 🔔, 💊, 🏃 и т.д.) — передай его пользователю в Telegram.

**Пример:**
- Получено: `⏰ НАПОМИНАНИЕ: оплатить интернет`
- Ответ в Telegram: `💰 Напоминаю: пора оплатить интернет!`

Просто доставь напоминание без лишних комментариев.

3. wakeMode: "now" в cron job

Всегда указывай "wakeMode": "now" чтобы heartbeat сработал сразу:

{
  "sessionTarget": "main",
  "wakeMode": "now",    // ← ОБЯЗАТЕЛЬНО для немедленного срабатывания
  "payload": { ... }
}

Без этого напоминание будет ждать следующего heartbeat (до 5 минут).


🧪 ПОСЛЕ УСТАНОВКИ: Тестирование

После установки навыка обязательно протестируй все подходы с пользователем:

Шаг 1: Тест простого напоминания (main агент)

Поставь тестовое напоминание через 1 минуту

Шаг 2: Тест через message tool (если есть несколько ботов)

Отправь тестовое сообщение через message tool

Шаг 3: Определи рабочий вариант

После тестов запиши в память какой подход работает:

Пример записи в MEMORY.md или memory/YYYY-MM-DD.md:

## Напоминания

**Рабочий подход:** sessionTarget: "main" + systemEvent + wakeMode: "now"
**Проверено:** 2026-02-14
**Chat ID пользователя:** 7977422300

Шаг 4: Если не работает

Проверь:

  1. ✅ Heartbeat включён (heartbeat.every ≠ "0m")
  2. ✅ HEARTBEAT.md содержит инструкцию для напоминаний
  3. wakeMode: "now" указан в cron job
  4. ✅ Telegram канал настроен и работает

Быстрый старт

Для MAIN агента

{
  "name": "Напоминание",
  "schedule": { "kind": "at", "at": "2026-02-14T15:00:00+03:00" },
  "sessionTarget": "main",
  "wakeMode": "now",
  "payload": {
    "kind": "systemEvent",
    "text": "⏰ НАПОМИНАНИЕ: текст напоминания"
  }
}

Main агент получит systemEvent → heartbeat сработает → агент ответит в чат.


Для НЕ-main агентов (Semen, Andrey, Hristofor, Discussions)

Используй схему: main агент + message tool

{
  "agentId": "main",
  "name": "Напоминание от Semen",
  "schedule": { "kind": "at", "at": "2026-02-14T15:00:00+03:00" },
  "sessionTarget": "main",
  "wakeMode": "now",
  "payload": {
    "kind": "systemEvent",
    "text": "📤 ОТПРАВИТЬ НАПОМИНАНИЕ:\naccountId: semen\ntarget: 7977422300\nmessage: 🤗 текст напоминания"
  }
}

Как это работает:

  1. Cron срабатывает → systemEvent идёт в main session main агента
  2. Main агент видит 📤 ОТПРАВИТЬ НАПОМИНАНИЕ: в HEARTBEAT.md
  3. Main агент парсит accountId, target, message
  4. Main агент отправляет через message tool с указанным accountId
  5. Пользователь получает сообщение от бота НЕ-main агента

Необходимые данные

Chat ID пользователя

Где взять:

curl "https://api.telegram.org/bot<BOT_TOKEN>/getUpdates" | jq '.result[].message.chat.id'

Или из metadata сообщения — в заголовке Telegram сообщения виден id:XXXXXXXX

AccountId для каждого агента

АгентaccountId
Джон Зойдберг (main)main
Семёнsemen
Андрейandrey
Христофорhristofor
Discussionsdiscussions

Типы расписаний

Одноразовое (at)

{ "kind": "at", "at": "2026-02-14T15:00:00+03:00" }

⚠️ Всегда указывай таймзону! Без неё = UTC.

Повторяющееся (cron)

{ "kind": "cron", "expr": "0 9 * * *", "tz": "Europe/Moscow" }
ВыражениеЗначение
0 9 * * *Каждый день в 9:00
0 9 * * 1-5Будни в 9:00
0 18 * * 5Каждую пятницу в 18:00
0 */2 * * *Каждые 2 часа

Интервал (every)

{ "kind": "every", "everyMs": 3600000 }
ИнтервалМиллисекунды
5 минут300000
1 час3600000
24 часа86400000

Примеры

Main агент: напомнить через 10 минут

{
  "name": "Напоминание через 10 мин",
  "schedule": { "kind": "at", "at": "<текущее время + 10 мин>" },
  "sessionTarget": "main",
  "wakeMode": "now",
  "payload": {
    "kind": "systemEvent",
    "text": "⏰ НАПОМИНАНИЕ: проверить почту"
  }
}

Semen: ежедневное напоминание

{
  "agentId": "main",
  "name": "Утреннее напоминание от Semen",
  "schedule": { "kind": "cron", "expr": "0 9 * * *", "tz": "Europe/Moscow" },
  "sessionTarget": "main",
  "wakeMode": "now",
  "payload": {
    "kind": "systemEvent",
    "text": "📤 ОТПРАВИТЬ НАПОМИНАНИЕ:\naccountId: semen\ntarget: 7977422300\nmessage: 🤗 Доброе утро! Проверь задачи на сегодня."
  }
}

Hristofor: напоминание об оплате

{
  "agentId": "main",
  "name": "Оплата интернета",
  "schedule": { "kind": "at", "at": "2026-02-25T10:00:00+03:00" },
  "sessionTarget": "main",
  "wakeMode": "now",
  "payload": {
    "kind": "systemEvent",
    "text": "📤 ОТПРАВИТЬ НАПОМИНАНИЕ:\naccountId: hristofor\ntarget: 7977422300\nmessage: 💰 Напоминание: оплатить интернет до 28 февраля"
  }
}

Управление напоминаниями

Посмотреть все

cron list

Удалить

cron remove jobId: "uuid"

Отключить/включить

cron update jobId: "uuid" patch: { enabled: false }
cron update jobId: "uuid" patch: { enabled: true }

Формат systemEvent для НЕ-main агентов

📤 ОТПРАВИТЬ НАПОМИНАНИЕ:
accountId: <accountId бота>
target: <Chat ID пользователя>
message: <текст напоминания с эмодзи>

Эмодзи для разных типов:

ЭмодзиАгент
🤗Semen
🧑💻Andrey
💰Hristofor
💬Discussions

Настройка HEARTBEAT.md main агента

Проверка

Перед использованием навыка убедись, что в HEARTBEAT.md main агента есть инструкция для обработки 📤 ОТПРАВИТЬ НАПОМИНАНИЕ:.

Проверь файл: ~/.openclaw/workspace-main/HEARTBEAT.md

Ищи раздел:

### Напоминания от других агентов (📤 ОТПРАВИТЬ НАПОМИНАНИЕ)

Если раздела нет — добавь:

### Напоминания от других агентов (📤 ОТПРАВИТЬ НАПОМИНАНИЕ)

Когда получаешь systemEvent с `📤 ОТПРАВИТЬ НАПОМИНАНИЕ:` — это запрос от НЕ-main агента отправить сообщение через их бота.

**Формат:**
\`\`\`
📤 ОТПРАВИТЬ НАПОМИНАНИЕ:
accountId: semen
target: 7977422300
message: 🤗 текст напоминания
\`\`\`

**Действие:** Используй `message` tool:
\`\`\`json
{
  "action": "send",
  "channel": "telegram",
  "accountId": "<accountId из systemEvent>",
  "target": "<target из systemEvent>",
  "message": "<message из systemEvent>"
}
\`\`\`

Ничего больше не отвечай после отправки (NO_REPLY).

Как это работает

При получении такого systemEvent, main агент:

  1. Парсит accountId, target, message из текста
  2. Использует message tool с этими параметрами
  3. Сообщение отправляется от бота с указанным accountId
  4. Main агент отвечает NO_REPLY (не дублирует в свой чат)

Почему эта схема работает

  1. Main агент имеет стабильный heartbeat — systemEvent всегда обрабатывается
  2. Message tool работает — проверено CLI и tool call
  3. AccountId маршрутизирует — сообщение идёт от нужного бота
  4. Target указывает получателя — Chat ID пользователя

Альтернатива: прямая отправка через message tool

Если агент хочет отправить сообщение СЕЙЧАС (не по расписанию):

{
  "action": "send",
  "channel": "telegram",
  "accountId": "semen",
  "target": "7977422300",
  "message": "🤗 Текст сообщения"
}

Это работает для любого агента, если он имеет доступ к message tool.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

low-carbon-medicine

低碳生活方式医学咨询。当用户提到低碳饮食、生酮饮食、减肥控糖、糖尿病逆转、代谢综合征、胰岛素抵抗时触发。

Registry SourceRecently Updated
General

x0x-api-smoketest-1777556197822

Scratch skill used to validate CI API publish flow before merge.

Registry SourceRecently Updated
General

java-circular-dependency-breaker

Break circular dependencies in Java multi-module Gradle/Maven projects using interface extraction and business service separation. Triggers: 'circular depend...

Registry SourceRecently Updated
General

Options Trading Brain

Professional options trading intelligence system. Monitors whale flow (Unusual Whales), counts Elliott Waves, analyzes Bollinger Bands, multi-timeframe trend...

Registry SourceRecently Updated