Envoi événements de la journée sur Discord

Comme j’ai cherché pas mal sans trouver et que j’ai passé beaucoup de temps à coder cela, étant vraiment novice, je vous partage mon YAML qui envoi sur mon Discord à 7h00 le matin, tous les événements de la journée, dans plusieurs calendriers:

alias: Envoi quotidien des événements du calendrier
description: Envoie chaque jour la liste des événements du jour
triggers:
  - at: "07:00:00"
    trigger: time
actions:
  - data:
      start_date_time: "{{ now().replace(hour=0, minute=0, second=0).isoformat() }}"
      end_date_time: "{{ now().replace(hour=23, minute=59, second=59).isoformat() }}"
    response_variable: agenda_du_jour
    action: calendar.get_events
    target:
      entity_id:
        - calendar.pero
        - calendar.anniversaires
        - calendar.fetes_des_prenoms
        - calendar.jours_feries_et_autres_fetes_en_france
        - calendar.numeros_de_semaine
        - calendar.poubelles
        - calendar.vacances_scolaires_zone_b
  - action: notify.home_assistant
    metadata: {}
    data:
      target:
        - "id_du_canal_discord"
      message: |-
        {% set ns = namespace(text="") %}

                {% for cal_id, cal_data in agenda_du_jour.items() %}
                  {% set events = cal_data.get('events', []) %}

                  {% if events | length > 0 %}
                    {% set nom = state_attr(cal_id, 'friendly_name') %}
                    {% set ns.text = ns.text + "\n📌 " + nom + "\n" %}

                    {% for event in events %}
                      
                      {# --- Cas journée entière --- #}
                      {% if event.start is string and event.start | length == 10 %}
                        {% set ligne = "- 📅 " + event.summary %}
                      
                      {# --- Cas événement avec horaire --- #}
                      {% else %}
                        {% set debut = as_timestamp(event.start) | timestamp_custom('%H:%M') %}
                        {% set fin = as_timestamp(event.end) | timestamp_custom('%H:%M') %}
                        {% set ligne = "- 🕒 " + debut + " → " + fin + " : " + event.summary %}
                      {% endif %}

                      {# --- Ajout du lieu si présent --- #}
                      {% if event.location is defined and event.location %}
                        {% set ligne = ligne + " 📍 " + event.location %}
                      {% endif %}

                      {% set ns.text = ns.text + ligne + "\n" %}

                    {% endfor %}
                  {% endif %}
                {% endfor %}

                {{ ns.text if ns.text != "" else "Aucun événement prévu aujourd’hui 🎉" }}
variables:
  events: >
    {% set agenda = state_attr('calendar.pero', 'all_day') %} {% set events =
    state_attr('calendar.pero', 'message') %} {{ events }}
mode: single

Il n’y a plus qu’à remplacer votre ID de canal Discord et mettre vos calendriers à vous.

J’espère que cela aidera certains d’entre vous.