Telegram Bot To‑Do List

Telegram To‑do List – Reply Keyboard + Inline Buttons

Check for Update !!

This automation blueprint lets you manage any Home Assistant to‑do list directly from a Telegram chat. It combines a friendly reply keyboard (bottom of the chat) with powerful inline buttons on the main list message.

This is the first attempt at creating a blueprint, so there may still be rough edges. If you run into any issues or unexpected behavior, please post in the thread and they will be addressed as soon as possible.

Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.

Support Development


Features

  • Inline keyboard with edit_message (clean chat, no spam)
  • Active / All list views
  • Automatic appearance of Clear completed button
  • Duplicate protection (case- and space-insensitive)
  • Reopen completed items with one tap
  • Add multiple items in a single message using , or .
  • Works with any Home Assistant todo.* entity
  • Blueprint-only solution (no hardcoded entity IDs)
  • Compatible with Home Assistant 2025.12+

How it works

  1. Send /start or /list to the bot
  2. Add items by sending plain text
  3. Use inline buttons to complete or reopen items
  4. Switch between Active and All views
  5. Clear completed items when needed

Example:

milk, bread. eggs

Requirements

  • Home Assistant 2025.12 or newer
  • Telegram Bot integration
  • At least one To-do entity

Why this blueprint?

This blueprint focuses on usability and reliability:

  • No custom components
  • No Node-RED
  • No external scripts
  • Predictable behavior
  • Safe logic (no loops, no race conditions)

Just import the blueprint, select your To-do entity, Telegram chat_id (Use this bot to get ID, Config Entry ID (Settings → Devices & Services → Integrations →Telegram Bot → ⋮ Copy Config Entry ID
), and start using it.

2 Likes

Update!

What changed

  • Completed items in the “:scroll: Show all / History (all items)” view now use a ☑️ button with an action that restores them to active status instead of doing nothing.
  • When you tap a completed item’s button, the blueprint updates that to‑do entry from completed back to needs_action, so it reappears in the active list view.
  • The callback‑handling logic was extended to recognize a new /reopen_<uid> action and respond with a short confirmation message (“Active again”) when an item is reactivated.
  • Also added condition to check bot config entry ID(for more then 2 bots integrations)

Update!

Description of changes

1. Multiple chat support

  • The telegram_chat_id input now uses a text selector with multiple: true, allowing you to specify more than one chat ID.
  • The automation checks whether the incoming chat_id is in the configured list and only then proceeds.
  • All replies (send, edit, delete) now use trigger.event.data.chat_id, so the bot always responds in the same chat where the message, command, or callback originated.

2. Bot instance filtering

  • A global condition compares trigger.event.data.bot.config_entry_id with the blueprint input bot_config_entry_id.
  • This ensures the automation only reacts to events from the specific Telegram bot instance selected in the blueprint, which is essential when multiple Telegram bots are configured.

Update!

Full refactoring
Working with 2026.1

Update — Telegram To-do List (HA 2026.04)

Breaking Changes

Telegram bot event filtering added

This blueprint now validates both:

  • chat_id
  • config_entry_id

If you use multiple Telegram bot integrations, this prevents messages from other bots from triggering this automation.

Migration Required

If updating manually, ensure your condition includes:

trigger.event.data.config_entry_id == bot_id

Migration Notes

Deprecated Telegram parameter updated

Home Assistant deprecated:

target:

This blueprint now uses:

chat_id:

If you modified the blueprint locally, update custom telegram_bot.send_message actions accordingly.


Improvements

  • Improved English localization

  • Updated button labels:

    • View List
    • Remove Completed
    • All Items
    • Active Items
  • Updated callback confirmation:

    • Done → Updated
  • Improved duplicate warning text

  • Reduced duplicated internal logic

  • Improved compatibility with Home Assistant 2026.04+


Features

  • Telegram reply keyboard
  • Inline buttons (edit_message)
  • Active / All Items view
  • Remove completed items
  • Duplicate protection
  • Reopen completed items
  • Multi-item input via , or .
  • Bot instance isolation for multi-bot setups

:shopping_cart: Telegram To-do List — Blueprint for Home Assistant

!! Update !!


A Telegram-native to-do list for Home Assistant — built entirely on inline buttons and the native todo domain (2025.12+). No web UI, no dashboard — just open Telegram and tap.


:sparkles: Features

  • Inline buttons — the message updates in-place (edit_message), no new messages flooding the chat
  • Active / All toggle — switch between active items and full list; “All” only appears when there are completed items
  • Dynamic Clear button — “:wastebasket: Clear” only shows when there’s something to clear
  • Duplicate protection — adding an existing active item shows a warning; re-adding a completed item reopens it
  • Multi-add — send milk, eggs, bread (comma or dot separated) to add multiple items at once
  • Quick done — tap “:white_check_mark: Item” to mark complete, tap “:check_box_with_check: Item” to reopen
  • Sync scripts — trigger up to 3 custom HA scripts via inline buttons (e.g. sync with Google Tasks, Toodledo, etc.)
  • Reply keyboard — persistent bottom buttons for quick access: “:clipboard: Show list”, “:wastebasket: Clear completed”, “:ballot_box_with_ballot: Scripts”

:clipboard: What you need

Requirement Details
Home Assistant 2025.12+ (uses todo domain)
Telegram Bot Via the official Telegram Bot integration
Todo entity Any todo.* entity (Shopping list, custom, etc.)

:rocket: Setup

  1. Import the blueprint — copy the YAML into your blueprints or import from URL
  2. Create an automation from the blueprint
  3. Fill in the inputs:
    • To-do list — select your todo.* entity
    • telegram_chat_id — your Telegram chat ID (numeric)
    • Bot Config Entry ID — the config entry ID of your Telegram bot integration
  4. Optional: assign up to 3 sync scripts and name their buttons
  5. Save & enable — send /start to your bot in Telegram

:video_game: How it works

Starting: Send /start to your bot. You’ll get a reply keyboard with three buttons at the bottom of the chat.

Adding items: Just type — milk, eggs, bread, butter — and the bot adds them to your list. The inline message updates automatically.

Completing items: Tap the “:white_check_mark:” button next to an item. It moves to completed. Tap “:check_box_with_check:” to reopen.

Viewing all: When you have completed items, a “:open_file_folder: All” button appears. Tap it to see the full list including completed items.

Clearing completed: Tap “:wastebasket: Clear” in the inline message, or “:wastebasket: Clear completed” in the reply keyboard.

Sync scripts: Tap “:ballot_box_with_ballot: Scripts” in the reply keyboard to see your script buttons. Each runs a configurable HA script and shows a “Done :white_check_mark:” toast.


:gear: Configuration

Input Required Description
To-do list :white_check_mark: Your todo.* entity
telegram_chat_id :white_check_mark: Numeric chat ID
Bot Config Entry ID :white_check_mark: Telegram bot config entry
Sync script 1–3 :cross_mark: Optional script entities
Script button 1–3 name :cross_mark: Button labels (defaults: “Script 1/2/3”)

:memo: Notes

  • The blueprint uses mode: restart — if a new message arrives while the previous one is still processing, it restarts cleanly
  • Only one inline message is active at a time (the last one sent/edited)
  • Duplicate detection is case-insensitive and ignores spaces
  • The reply keyboard (resize_keyboard: true) stays pinned at the bottom of the chat
  • Works best with a dedicated bot for 1:1 use or in a private group

Built with :heart: for the Home Assistant community.