技能详情(站内镜像,无评论)
许可证:MIT-0
MIT-0 ·免费使用、修改和重新分发。无需归因。
版本:v1.3.0
统计:⭐ 0 · 592 · 0 current installs · 0 all-time installs
⭐ 0
安装量(当前) 0
🛡 VirusTotal :可疑 · OpenClaw :良性
Package:alex3alex/channel-reminders
安全扫描(ClawHub)
- VirusTotal :可疑
- OpenClaw :良性
OpenClaw 评估
The skill is an instruction-only helper for scheduling reminders via the agent heartbeat and systemEvent->message-tool flow; its requirements and instructions are mostly coherent, but there are a few minor omissions and assumptions (Telegram bot token handling, edits to agent files) you should be aware of before installing.
综合结论
This skill is instruction-only and appears to do what it says: schedule cron jobs that send systemEvent payloads to the main agent, which then delivers messages to users via the message tool (Telegram). Before using it: 1) Verify you already have a configured Telegram bot/message-tool integration (BOT_TOKEN) and understand where credentials are stored—the skill assumes these exist but does not declare them. 2) Back up ~/.openclaw/openclaw.json…
安装(复制给龙虾 AI)
将下方整段复制到龙虾中文库对话中,由龙虾按 SKILL.md 完成安装。
请把本段交给龙虾中文库(龙虾 AI)执行:为本机安装 OpenClaw 技能「Channel Reminders」。简介:Создаёт и доставляет пользователю напоминания в текущий чат мессенджера через s…。
请 fetch 以下地址读取 SKILL.md 并按文档完成安装:https://raw.githubusercontent.com/openclaw/skills/refs/heads/main/skills/alex3alex/channel-reminders/SKILL.md
(来源:yingzhi8.cn 技能库)
SKILL.md
# Channel Reminders
Навык для создания напоминаний через cron jobs с доставкой в Telegram.
---
## ⚠️ ТРЕБОВАНИЯ (проверь перед использованием)
### 1. Heartbeat должен быть включён
В `~/.openclaw/openclaw.json` проверь:
```json
{
"agents": {
"defaults": {
"heartbeat": {
"every": "5m", // ← НЕ должен быть "0m" или отсутствовать
"target": "last" // ← Куда отправлять ответы
}
}
}
}
```
Если `heartbeat.every` = "0m" или отсутствует — напоминания НЕ будут работать!
### 2. HEARTBEAT.md должен содержать инструкцию
В `HEARTBEAT.md` main агента **ОБЯЗАТЕЛЬНО** добавь раздел для обработки напоминаний:
```markdown
### Напоминания (systemEvent)
Когда получаешь systemEvent с напоминанием (обычно содержит ⏰, 📅, 💰, 📞, ✅, 🔔, 💊, 🏃 и т.д.) — передай его пользователю в Telegram.
**Пример:**
- Получено: `⏰ НАПОМИНАНИЕ: оплатить интернет`
- Ответ в Telegram: `💰 Напоминаю: пора оплатить интернет!`
Просто доставь напоминание без лишних комментариев.
```
### 3. wakeMode: "now" в cron job
Всегда указывай `"wakeMode": "now"` чтобы heartbeat сработал сразу:
```json
{
"sessionTarget": "main",
"wakeMode": "now", // ← ОБЯЗАТЕЛЬНО для немедленного срабатывания
"payload": { ... }
}
```
Без этого напоминание будет ждать следующего heartbeat (до 5 минут).
---
## 🧪 ПОСЛЕ УСТАНОВКИ: Тестирование
После установки навыка **обязательно протестируй** все подходы с пользователем:
### Шаг 1: Тест простого напоминания (main агент)
```
Поставь тестовое напоминание через 1 минуту
```
### Шаг 2: Тест через message tool (если есть несколько ботов)
```
Отправь тестовое сообщение через message tool
```
### Шаг 3: Определи рабочий вариант
После тестов **запиши в память** какой подход работает:
**Пример записи в `MEMORY.md` или `memory/YYYY-MM-DD.md`:**
```markdown
## Напоминания
**Рабочий подход:** 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 агента
```json
{
"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**
```json
{
"agentId": "main",
"name": "Напоминание от Semen",
"schedule": { "kind": "at", "at": "2026-02-14T15:00:00+03:00" },
"sessionTarget": "main",
"wakeMode": "now",
"payload": {
"kind": "systemEvent",
"text": "📤 ОТПРАВИТЬ НАПОМИНАНИЕ:naccountId: semenntarget: 7977422300nmessage: 🤗 текст напоминания"
}
}
```
**Как это работает:**
1. Cron срабатывает → systemEvent идёт в main session main агента
2. Main агент видит `📤 ОТПРАВИТЬ НАПОМИНАНИЕ:` в HEARTBEAT.md
3. Main агент парсит accountId, target, message
4. Main агент отправляет через `message` tool с указанным accountId
5. Пользователь получает сообщение от бота НЕ-main агента
---
## Необходимые данные
### Chat ID пользователя
**Где взять:**
```bash
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 |
| Discussions | discussions |
---
## Типы расписаний
### Одноразовое (at)
```json
{ "kind": "at", "at": "2026-02-14T15:00:00+03:00" }
```
⚠️ **Всегда указывай таймзону!** Без неё = UTC.
### Повторяющееся (cron)
```json
{ "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)
```json
{ "kind": "every", "everyMs": 3600000 }
```
| Интервал | Миллисекунды |
|----------|--------------|
| 5 минут | 300000 |
| 1 час | 3600000 |
| 24 часа | 86400000 |
---
## Примеры
### Main агент: напомнить через 10 минут
```json
{
"name": "Напоминание через 10 мин",
"schedule": { "kind": "at", "at": "<текущее время + 10 мин>" },
"sessionTarget": "main",
"wakeMode": "now",
"payload": {
"kind": "systemEvent",
"text": "⏰ НАПОМИНАНИЕ: проверить почту"
}
}
```
### Semen: ежедневное напоминание
```json
{
"agentId": "main",
"name": "Утреннее напоминание от Semen",
"schedule": { "kind": "cron", "expr": "0 9 * * *", "tz": "Europe/Moscow" },
"sessionTarget": "main",
"wakeMode": "now",
"payload": {
"kind": "systemEvent",
"text": "📤 ОТПРАВИТЬ НАПОМИНАНИЕ:naccountId: semenntarget: 7977422300nmessage: 🤗 Доброе утро! Проверь задачи на сегодня."
}
}
```
### Hristofor: напоминание об оплате
```json
{
"agentId": "main",
"name": "Оплата интернета",
"schedule": { "kind": "at", "at": "2026-02-25T10:00:00+03:00" },
"sessionTarget": "main",
"wakeMode": "now",
"payload": {
"kind": "systemEvent",
"text": "📤 ОТПРАВИТЬ НАПОМИНАНИЕ:naccountId: hristoforntarget: 7977422300nmessage: 💰 Напоминание: оплатить интернет до 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`
**Ищи раздел:**
```markdown
### Напоминания от других агентов (📤 ОТПРАВИТЬ НАПОМИНАНИЕ)
```
### Если раздела нет — добавь:
```markdown
### Напоминания от других агентов (📤 ОТПРАВИТЬ НАПОМИНАНИЕ)
Когда получаешь 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
Если агент хочет отправить сообщение СЕЙЧАС (не по расписанию):
```json
{
"action": "send",
"channel": "telegram",
"accountId": "semen",
"target": "7977422300",
"message": "🤗 Текст сообщения"
}
```
Это работает для любого агента, если он имеет доступ к `message` tool.