Files
haos-blueprints/Common/Telegram Commands.yaml

165 lines
5.0 KiB
YAML

blueprint:
name: "Custom: Telegram Commands"
description: >
Sends a Telegram message with inline keyboard buttons to multiple chat IDs
when executed manually, and reacts to button presses by performing
the corresponding action (one per button).
domain: automation
input:
commands_group:
name: "Commands"
collapsed: false
input:
commands:
name: Commands
description: List of commands
default: []
selector:
text:
multiple: true
answers:
name: Answers
description: List of answers (optional)
default: []
selector:
text:
multiple: true
callbacks_group:
name: "Callbacks"
collapsed: false
input:
button_1_callback:
name: Button 1 Callback
default: []
selector:
action: {}
button_2_callback:
name: Button 2 Callback
default: []
selector:
action: {}
button_3_callback:
name: Button 3 Callback
default: []
selector:
action: {}
button_4_callback:
name: Button 4 Callback
default: []
selector:
action: {}
button_5_callback:
name: Button 5 Callback
default: []
selector:
action: {}
button_6_callback:
name: Button 6 Callback
default: []
selector:
action: {}
button_7_callback:
name: Button 7 Callback
default: []
selector:
action: {}
button_8_callback:
name: Button 8 Callback
default: []
selector:
action: {}
mode: parallel
variables:
commands: !input commands
answers: !input answers
is_debug: false
command: "{{ trigger.event.data.command }}"
chat_id: "{{ trigger.event.data.chat_id }}"
trigger:
- platform: event
event_type: telegram_command
action:
- variables:
command_index: >
{% set res = -1 %}
{% if (commands | length >= 1 and command == commands[0] and button_1_callback != []) %}
{% set res = 0 %}
{% elif (commands | length >= 2 and command == commands[1] and button_2_callback != []) %}
{% set res = 1 %}
{% elif (commands | length >= 3 and command == commands[2] and button_3_callback != []) %}
{% set res = 2 %}
{% elif (commands | length >= 4 and command == commands[3] and button_4_callback != []) %}
{% set res = 3 %}
{% elif (commands | length >= 5 and command == commands[4] and button_5_callback != []) %}
{% set res = 4 %}
{% elif (commands | length >= 6 and command == commands[5] and button_6_callback != []) %}
{% set res = 5 %}
{% elif (commands | length >= 7 and command == commands[6] and button_7_callback != []) %}
{% set res = 6 %}
{% elif (commands | length >= 8 and command == commands[7] and button_8_callback != []) %}
{% set res = 7 %}
{% endif %}
{{ res }}
- choose:
- conditions: "{{ command_index == 0 }}"
sequence: !input button_1_callback
- conditions: "{{ command_index == 1 }}"
sequence: !input button_2_callback
- conditions: "{{ command_index == 2 }}"
sequence: !input button_3_callback
- conditions: "{{ command_index == 3 }}"
sequence: !input button_4_callback
- conditions: "{{ command_index == 4 }}"
sequence: !input button_5_callback
- conditions: "{{ command_index == 5 }}"
sequence: !input button_6_callback
- conditions: "{{ command_index == 6 }}"
sequence: !input button_7_callback
- conditions: "{{ command_index == 7 }}"
sequence: !input button_8_callback
- variables:
message: >
{% if command_index == -1 or answers | length <= command_index %}
{% else %}
{{ answers[command_index] }}
{% endif %}
# Debug info (log if required)
- choose:
- conditions:
- condition: template
value_template: "{{ is_debug }}"
sequence:
- service: persistent_notification.create
data:
title: "Debug Info (Telegram Commands)"
message: >
command_index = {{ command_index }},
commands = {{ commands }},
answers = {{ answers }},
message = {{ message }}
- choose:
- conditions: "{{ message != '' }}"
sequence:
- service: telegram_bot.send_message
data:
target: "{{ chat_id }}"
message: "{{ message }}"