# Send scheduled Telegram messages from a bot

Send messages from your Telegram bot to a chat, group, or channel on a schedule: daily briefs, reminders, and alerts, filled in from any API. cronservices calls the Bot API, so you don't need to keep the bot running.

## Example: a morning weather brief for a crew

```json
{
  "name": "Crew weather brief",
  "cron": { "expression": "30 5 * * 1-6", "time_zone": "America/Los_Angeles" },
  "nodes": [
    { "id": "forecast", "open_meteo_forecast": { "latitude": "45.52", "longitude": "-122.68", "units": "imperial" } },
    { "id": "text", "telegram_send_message": {
        "credential_id": "YOUR_TELEGRAM_BOT_ID",
        "chat_id": "-1001234567890",
        "text": "Today: {{ $.daily.temperature_2m_min[0] }}–{{ $.daily.temperature_2m_max[0] }}°F, {{ $.daily.precipitation_sum[0] }} in of rain." } }
  ]
}
```

## Set up

1. Create a bot with [@BotFather](https://t.me/BotFather) and save its token as a `telegram_bot` credential in **Settings → Credentials**.
2. Add the bot to the group or channel. For a channel, make it an admin.
3. Find the chat id: send a message in the chat, then open `https://api.telegram.org/bot<token>/getUpdates`. Group ids are negative. For a public channel, `@channelusername` works too.

## Reference

### Send a Telegram message: `telegram_send_message`

**Sends** POST `https://api.telegram.org/bot<token>/sendMessage`. **Output** for the next step: Telegram’s response, with the sent message in `result`.

| Field | Type | Notes |
| --- | --- | --- |
| `credential_id` | string, required | The id of a `telegram_bot` credential holding the token from BotFather. |
| `chat_id` | string, required | A numeric chat id (negative for groups), a `@channelusername`, or a placeholder. |
| `text` | string, required | Up to 4,096 characters. Placeholders allowed. |

## More ideas

- A daily reminder to take medication at 08:00 local: `0 8 * * *`.
- Today's [exchange rate](/integrations/frankfurter) in a family group chat.
- A one-time reminder the evening before an event, with `run_at`.
