---
url: /ru/guides/schedule.md
---
# Задачи по расписанию

Задачи по расписанию позволяют автоматизировать повторяющиеся действия Bot с помощью cron-выражений. Это удобно для периодических отчётов, проверки внешних данных, обслуживания — любой рутинной задачи без ручного вмешательства.

## Концепция: автоматизация на cron

**Schedule** (расписание) — это правило на основе cron, привязанное к конкретному Bot. Когда расписание срабатывает, оно передаёт агенту команду, и тот выполняет её, используя доступные инструменты, навыки и контекст. Результаты Bot может доставить в любой подключённый канал.

***

## Поля расписания

| Поле | Описание |
|-------|-------------|
| **Name** | Отображаемое имя задачи (например, «Утренняя сводка новостей»). |
| **Description** | Краткое объяснение, что делает задача. |
| **Pattern** | Cron-выражение, задающее, когда задача выполняется (например, `0 9 * * *` — ежедневно в 9:00). |
| **Command** | Инструкция на естественном языке, отправляемая агенту при срабатывании расписания (например, «Собери главные технические новости за сегодня и отправь их в канал Telegram»). |
| **Enabled** | Активно ли расписание сейчас. |
| **Max Calls** | Необязательный предел общего числа выполнений. Оставьте пустым, чтобы не ограничивать. |
| **Current Calls** | Сколько раз это расписание уже сработало. |

***

## Справка по шаблонам cron

Поле `pattern` использует стандартный синтаксис cron из пяти полей. Оно вычисляется в часовом поясе Bot — поле **Timezone** на вкладке **General** Bot; если оно не задано, используется серверная настройка `timezone` верхнего уровня (по умолчанию `UTC`).

```
┌───────────── minute (0–59)
│ ┌───────────── hour (0–23)
│ │ ┌───────────── day of month (1–31)
│ │ │ ┌───────────── month (1–12)
│ │ │ │ ┌───────────── day of week (0–6, Sun=0)
│ │ │ │ │
* * * * *
```

**Частые примеры:**

| Шаблон | Значение |
|---------|---------|
| `0 9 * * *` | Каждый день в 9:00 |
| `*/30 * * * *` | Каждые 30 минут |
| `0 0 * * 1` | Каждый понедельник в полночь |
| `0 8,20 * * *` | Каждый день в 8:00 и 20:00 |
| `0 0 1 * *` | Первого числа каждого месяца в полночь |

***

## Просмотр расписаний

1. Перейдите на страницу **Detail Page** нужного Bot.
2. Выберите вкладку **Schedule**.
3. Список показывает все расписания этого Bot: имя, cron-шаблон, состояние включения и счётчики выполнений.
4. Нажмите **Refresh**, чтобы перезагрузить список.

***

## Создание расписаний

Расписания создаются в основном двумя способами:

### Через Bot (в разговоре)

У самого Bot есть инструмент `schedule`. Можно попросить его создать расписание естественным языком:

> «Создай расписание „Daily Digest“, которое каждый день в 8 утра присылает мне сводку вчерашней активности в репозитории».

Bot сам переведёт это в cron-выражение и зарегистрирует расписание.

### Через API

Расписания можно создавать и программно, через REST API:

```
POST /api/bots/{bot_id}/schedule
```

```json
{
  "name": "Daily Digest",
  "description": "Summarize repository activity every morning",
  "pattern": "0 8 * * *",
  "command": "Summarize yesterday's repository activity and send the result to Telegram.",
  "enabled": true,
  "max_calls": null
}
```

***

## Как проходит выполнение

Когда расписание срабатывает:

1. Cron-сервис запускает расписание.
2. Счётчик `current_calls` увеличивается.
3. Если `max_calls` задан и достигнут, расписание автоматически отключается.
4. Агент получает `command` вместе с контекстом расписания.
5. Агент выполняет команду своими инструментами (например, веб-поиск, чтение файла, отправка сообщения).
6. Результаты могут быть доставлены в любой подключённый канал.
