[Telegram] Enviando a lista de compras do HA para o chat do Telegram

Eu estava procurando uma forma de enviar minha lista de compras do HA para o chat do telegram de uma forma bem formatada e bonitinha kkk, e depois de muito apanhar e sofrer resolvi esta questão e hoje estou compartilhando com voces o código da solução que eu usei aqui e me atende super bem!

1 - O que foi feito?
Criei uma lista de tarefas com o nome de “Lista de compras”:

2 - Criei um script que busca os itens da lista de compras (entidade “todo.lista_de_compras” ) e envia uma mensagem formatada com html.

Resultado final de como é enviado no telegram:

3 - Segue o código que eu utilizei neste script:

alias: Enviar Lista de Compras no Telegram
sequence:
  - data:
      entity_id: todo.lista_de_compras
    response_variable: resposta
    action: todo.get_items
  - variables:
      itens: "{{ resposta['todo.lista_de_compras']['items'] }}"
      data_hora: "{{ now().strftime('%d/%m/%Y às %H:%M') }}"
      itens_ativos: >-
        {% for item in itens if item.status == 'needs_action' %}{{ '\n' }} • {{
        item.summary }} {% else %} • Nenhum item pendente. {% endfor %}
      itens_concluidos: >-
        {% for item in itens if item.status == 'completed' %}{{ '\n' }}
        {{item.summary}} {% else %} • Lista Vazia. {% endfor %}
  - data:
      message: >-
        🛒 <b>Lista de Compras</b>  

        ⏱️ <b>{{ data_hora }}</b> {{ '\n\n' }} <b>📌 Itens a comprar:</b> {{
        '\n' }} {{ itens_ativos }} {{ '\n\n' }} <b>✅ Itens já Comprados:</b> {{
        '\n' }} <s>{{ itens_concluidos }}</s>
      parse_mode: html
    action: telegram_bot.send_message
mode: single

Onde:

  • Ação todo.get_items : obtém todos os itens da lista “lista_de_compras”.
  • O resultado é salvo na variável resposta .
  • itens : extrai os itens da lista da variável resposta .
  • data_hora : pega a data e hora atual formatada.
  • itens_ativos : lista os itens com status 'needs_action' (ainda não comprados).
  • itens_concluidos : lista os itens com status 'completed' (já comprados).
  • Envia uma mensagem formatada para o Telegram.
  • Usa HTML para deixar o texto com negrito e tachado (<b> , <s> ).

Agora é só chamar este script em alguma automação/cena/comando que irá enviar ao telegram a lista de compras.

Ex: Aqui eu criei zonas no mapa da minha cidade, onde tem os supermercados que costumamos ir, e quando adentramos essas zonas por GPS (app HA do celular) ele dispara a execução deste script e já envia automaticamente a lista de compras no grupo do telegram.

É bem simples, mas espero que ajude alguem de alguma forma ou em algum outro projeto!

2 curtidas