homeassistant 2025.7.0b0__py3-none-any.whl → 2025.7.0b2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- homeassistant/components/aemet/sensor.py +1 -1
- homeassistant/components/airq/coordinator.py +2 -2
- homeassistant/components/alexa_devices/__init__.py +5 -2
- homeassistant/components/alexa_devices/notify.py +2 -0
- homeassistant/components/alexa_devices/quality_scale.yaml +1 -1
- homeassistant/components/alexa_devices/strings.json +11 -4
- homeassistant/components/alexa_devices/switch.py +2 -0
- homeassistant/components/alexa_devices/translations/bg.json +6 -4
- homeassistant/components/alexa_devices/translations/cs.json +12 -5
- homeassistant/components/alexa_devices/translations/de.json +14 -7
- homeassistant/components/alexa_devices/translations/el.json +12 -5
- homeassistant/components/alexa_devices/translations/en.json +12 -5
- homeassistant/components/alexa_devices/translations/es.json +12 -5
- homeassistant/components/alexa_devices/translations/et.json +12 -5
- homeassistant/components/alexa_devices/translations/ga.json +0 -6
- homeassistant/components/alexa_devices/translations/he.json +0 -4
- homeassistant/components/alexa_devices/translations/hu.json +0 -4
- homeassistant/components/alexa_devices/translations/id.json +1 -0
- homeassistant/components/alexa_devices/translations/lt.json +0 -4
- homeassistant/components/alexa_devices/translations/mk.json +12 -0
- homeassistant/components/alexa_devices/translations/nl.json +0 -4
- homeassistant/components/alexa_devices/translations/pl.json +0 -4
- homeassistant/components/alexa_devices/translations/pt.json +0 -4
- homeassistant/components/alexa_devices/translations/ru.json +4 -5
- homeassistant/components/alexa_devices/translations/sk.json +12 -5
- homeassistant/components/alexa_devices/translations/sv.json +17 -5
- homeassistant/components/alexa_devices/translations/tr.json +0 -4
- homeassistant/components/alexa_devices/translations/zh-Hans.json +27 -5
- homeassistant/components/alexa_devices/translations/zh-Hant.json +12 -5
- homeassistant/components/alexa_devices/utils.py +40 -0
- homeassistant/components/altruist/translations/id.json +11 -0
- homeassistant/components/anthropic/__init__.py +14 -1
- homeassistant/components/anthropic/translations/bg.json +21 -0
- homeassistant/components/anthropic/translations/ga.json +32 -1
- homeassistant/components/anthropic/translations/id.json +19 -0
- homeassistant/components/anthropic/translations/ru.json +30 -0
- homeassistant/components/backup/translations/de.json +1 -1
- homeassistant/components/buienradar/sensor.py +0 -1
- homeassistant/components/cambridge_audio/translations/sv.json +1 -1
- homeassistant/components/comelit/translations/de.json +1 -1
- homeassistant/components/counter/translations/sv.json +2 -2
- homeassistant/components/demo/translations/select.sv.json +2 -2
- homeassistant/components/derivative/translations/ga.json +20 -0
- homeassistant/components/derivative/translations/ru.json +3 -0
- homeassistant/components/devolo_home_control/translations/bg.json +6 -0
- homeassistant/components/devolo_home_control/translations/id.json +5 -0
- homeassistant/components/devolo_home_control/translations/sv.json +10 -0
- homeassistant/components/devolo_home_control/translations/zh-Hans.json +10 -0
- homeassistant/components/dlink/manifest.json +1 -1
- homeassistant/components/ecovacs/translations/sv.json +1 -1
- homeassistant/components/enphase_envoy/translations/sv.json +5 -2
- homeassistant/components/ezviz/translations/bg.json +6 -0
- homeassistant/components/ezviz/translations/mk.json +13 -0
- homeassistant/components/ezviz/translations/sv.json +10 -0
- homeassistant/components/ezviz/translations/zh-Hans.json +10 -0
- homeassistant/components/fronius/translations/sv.json +2 -2
- homeassistant/components/frontend/manifest.json +1 -1
- homeassistant/components/goodwe/translations/sv.json +5 -5
- homeassistant/components/google_generative_ai_conversation/__init__.py +21 -0
- homeassistant/components/google_generative_ai_conversation/config_flow.py +72 -36
- homeassistant/components/google_generative_ai_conversation/const.py +15 -2
- homeassistant/components/google_generative_ai_conversation/diagnostics.py +1 -0
- homeassistant/components/google_generative_ai_conversation/entity.py +7 -2
- homeassistant/components/google_generative_ai_conversation/helpers.py +73 -0
- homeassistant/components/google_generative_ai_conversation/strings.json +28 -1
- homeassistant/components/google_generative_ai_conversation/translations/bg.json +19 -0
- homeassistant/components/google_generative_ai_conversation/translations/cs.json +28 -0
- homeassistant/components/google_generative_ai_conversation/translations/de.json +28 -0
- homeassistant/components/google_generative_ai_conversation/translations/el.json +28 -0
- homeassistant/components/google_generative_ai_conversation/translations/en.json +28 -0
- homeassistant/components/google_generative_ai_conversation/translations/es.json +28 -0
- homeassistant/components/google_generative_ai_conversation/translations/et.json +28 -0
- homeassistant/components/google_generative_ai_conversation/translations/ga.json +9 -0
- homeassistant/components/google_generative_ai_conversation/translations/id.json +30 -0
- homeassistant/components/google_generative_ai_conversation/translations/mk.json +11 -0
- homeassistant/components/google_generative_ai_conversation/translations/ru.json +67 -0
- homeassistant/components/google_generative_ai_conversation/translations/sk.json +28 -0
- homeassistant/components/google_generative_ai_conversation/translations/sv.json +23 -0
- homeassistant/components/google_generative_ai_conversation/translations/zh-Hans.json +28 -0
- homeassistant/components/google_generative_ai_conversation/translations/zh-Hant.json +28 -0
- homeassistant/components/google_generative_ai_conversation/tts.py +48 -106
- homeassistant/components/group/translations/el.json +18 -18
- homeassistant/components/habitica/const.py +1 -1
- homeassistant/components/harmony/translations/select.sv.json +1 -1
- homeassistant/components/harmony/translations/sv.json +1 -1
- homeassistant/components/homeassistant_hardware/firmware_config_flow.py +89 -7
- homeassistant/components/homeassistant_hardware/strings.json +2 -1
- homeassistant/components/homeassistant_hardware/translations/de.json +1 -0
- homeassistant/components/homeassistant_hardware/translations/en-GB.json +1 -0
- homeassistant/components/homeassistant_hardware/translations/en.json +1 -0
- homeassistant/components/homeassistant_hardware/translations/ga.json +9 -0
- homeassistant/components/homeassistant_hardware/translations/mk.json +9 -0
- homeassistant/components/homeassistant_sky_connect/config_flow.py +1 -1
- homeassistant/components/homeassistant_sky_connect/strings.json +4 -2
- homeassistant/components/homeassistant_sky_connect/translations/de.json +2 -0
- homeassistant/components/homeassistant_sky_connect/translations/en-GB.json +2 -0
- homeassistant/components/homeassistant_sky_connect/translations/en.json +2 -0
- homeassistant/components/homeassistant_sky_connect/translations/ga.json +10 -0
- homeassistant/components/homeassistant_sky_connect/translations/mk.json +7 -0
- homeassistant/components/homeassistant_yellow/strings.json +2 -1
- homeassistant/components/homeassistant_yellow/translations/bg.json +0 -1
- homeassistant/components/homeassistant_yellow/translations/cs.json +0 -1
- homeassistant/components/homeassistant_yellow/translations/de.json +1 -0
- homeassistant/components/homeassistant_yellow/translations/el.json +0 -1
- homeassistant/components/homeassistant_yellow/translations/en-GB.json +2 -1
- homeassistant/components/homeassistant_yellow/translations/en.json +2 -1
- homeassistant/components/homeassistant_yellow/translations/es.json +0 -1
- homeassistant/components/homeassistant_yellow/translations/et.json +0 -1
- homeassistant/components/homeassistant_yellow/translations/fr.json +0 -1
- homeassistant/components/homeassistant_yellow/translations/ga.json +5 -0
- homeassistant/components/homeassistant_yellow/translations/he.json +0 -1
- homeassistant/components/homeassistant_yellow/translations/hu.json +0 -1
- homeassistant/components/homeassistant_yellow/translations/id.json +0 -1
- homeassistant/components/homeassistant_yellow/translations/it.json +0 -1
- homeassistant/components/homeassistant_yellow/translations/ja.json +0 -1
- homeassistant/components/homeassistant_yellow/translations/lt.json +0 -1
- homeassistant/components/homeassistant_yellow/translations/pt.json +0 -1
- homeassistant/components/homeassistant_yellow/translations/ru.json +0 -1
- homeassistant/components/homeassistant_yellow/translations/sk.json +0 -1
- homeassistant/components/homeassistant_yellow/translations/sv.json +0 -1
- homeassistant/components/homeassistant_yellow/translations/tr.json +0 -1
- homeassistant/components/homeassistant_yellow/translations/zh-Hans.json +0 -1
- homeassistant/components/homeassistant_yellow/translations/zh-Hant.json +0 -1
- homeassistant/components/homewizard/translations/sv.json +3 -1
- homeassistant/components/http/auth.py +1 -1
- homeassistant/components/image/__init__.py +34 -3
- homeassistant/components/input_number/translations/sv.json +2 -2
- homeassistant/components/input_select/translations/sv.json +6 -6
- homeassistant/components/input_text/translations/sv.json +1 -1
- homeassistant/components/iron_os/manifest.json +1 -1
- homeassistant/components/iron_os/translations/sv.json +1 -1
- homeassistant/components/keenetic_ndms2/translations/id.json +3 -0
- homeassistant/components/lamarzocco/entity.py +19 -1
- homeassistant/components/lamarzocco/number.py +0 -4
- homeassistant/components/lamarzocco/sensor.py +2 -4
- homeassistant/components/lamarzocco/translations/sv.json +3 -3
- homeassistant/components/lametric/translations/sv.json +2 -2
- homeassistant/components/lametric/update.py +1 -1
- homeassistant/components/lg_thinq/translations/sv.json +5 -5
- homeassistant/components/litterrobot/translations/bg.json +4 -0
- homeassistant/components/litterrobot/translations/ga.json +3 -0
- homeassistant/components/matter/translations/id.json +5 -0
- homeassistant/components/matter/vacuum.py +38 -26
- homeassistant/components/meater/__init__.py +5 -1
- homeassistant/components/meater/coordinator.py +4 -2
- homeassistant/components/media_source/local_source.py +21 -4
- homeassistant/components/minecraft_server/translations/sv.json +1 -1
- homeassistant/components/motioneye/translations/sv.json +1 -1
- homeassistant/components/mqtt/translations/bg.json +10 -0
- homeassistant/components/mqtt/translations/cs.json +19 -0
- homeassistant/components/mqtt/translations/el.json +21 -0
- homeassistant/components/mqtt/translations/fi.json +3 -0
- homeassistant/components/mqtt/translations/ga.json +25 -0
- homeassistant/components/mqtt/translations/mk.json +23 -0
- homeassistant/components/mqtt/translations/ru.json +1 -0
- homeassistant/components/mqtt/translations/sv.json +24 -0
- homeassistant/components/mqtt/translations/zh-Hans.json +26 -0
- homeassistant/components/mqtt/translations/zh-Hant.json +19 -0
- homeassistant/components/music_assistant/button.py +0 -6
- homeassistant/components/ntfy/translations/id.json +13 -0
- homeassistant/components/ntfy/translations/sv.json +1 -0
- homeassistant/components/number/translations/sv.json +2 -2
- homeassistant/components/nut/config_flow.py +4 -2
- homeassistant/components/ohme/translations/sv.json +1 -1
- homeassistant/components/ollama/__init__.py +8 -0
- homeassistant/components/ollama/const.py +2 -0
- homeassistant/components/ollama/translations/bg.json +19 -0
- homeassistant/components/ollama/translations/ga.json +31 -1
- homeassistant/components/ollama/translations/id.json +18 -0
- homeassistant/components/ollama/translations/mk.json +13 -1
- homeassistant/components/ollama/translations/sv.json +1 -0
- homeassistant/components/onewire/translations/sv.json +4 -4
- homeassistant/components/openai_conversation/__init__.py +8 -0
- homeassistant/components/openai_conversation/const.py +1 -1
- homeassistant/components/openai_conversation/conversation.py +1 -1
- homeassistant/components/openai_conversation/translations/bg.json +26 -0
- homeassistant/components/openai_conversation/translations/id.json +23 -0
- homeassistant/components/openai_conversation/translations/mk.json +44 -0
- homeassistant/components/openai_conversation/translations/sv.json +4 -0
- homeassistant/components/playstation_network/diagnostics.py +55 -0
- homeassistant/components/playstation_network/quality_scale.yaml +1 -1
- homeassistant/components/playstation_network/translations/bg.json +25 -1
- homeassistant/components/playstation_network/translations/es.json +1 -1
- homeassistant/components/playstation_network/translations/ga.json +31 -0
- homeassistant/components/playstation_network/translations/id.json +14 -0
- homeassistant/components/playstation_network/translations/mk.json +18 -0
- homeassistant/components/playstation_network/translations/pl.json +73 -0
- homeassistant/components/playstation_network/translations/sv.json +29 -0
- homeassistant/components/playstation_network/translations/zh-Hans.json +29 -0
- homeassistant/components/plugwise/translations/sv.json +2 -2
- homeassistant/components/qnap/translations/sv.json +1 -1
- homeassistant/components/random/translations/sv.json +4 -4
- homeassistant/components/remote_calendar/translations/fi.json +34 -0
- homeassistant/components/select/translations/sv.json +10 -10
- homeassistant/components/smarla/__init__.py +2 -2
- homeassistant/components/sonos/translations/bg.json +5 -0
- homeassistant/components/sonos/translations/cs.json +6 -0
- homeassistant/components/sonos/translations/el.json +6 -0
- homeassistant/components/sonos/translations/ga.json +8 -0
- homeassistant/components/sonos/translations/mk.json +10 -0
- homeassistant/components/sonos/translations/ru.json +6 -0
- homeassistant/components/sonos/translations/sv.json +6 -0
- homeassistant/components/sonos/translations/zh-Hans.json +9 -0
- homeassistant/components/sonos/translations/zh-Hant.json +6 -0
- homeassistant/components/subaru/strings.json +2 -2
- homeassistant/components/subaru/translations/ca.json +0 -1
- homeassistant/components/subaru/translations/cs.json +0 -2
- homeassistant/components/subaru/translations/de.json +2 -2
- homeassistant/components/subaru/translations/el.json +0 -2
- homeassistant/components/subaru/translations/en-GB.json +0 -2
- homeassistant/components/subaru/translations/en.json +2 -2
- homeassistant/components/subaru/translations/es.json +0 -2
- homeassistant/components/subaru/translations/et.json +0 -2
- homeassistant/components/subaru/translations/fi.json +0 -1
- homeassistant/components/subaru/translations/hu.json +0 -2
- homeassistant/components/subaru/translations/it.json +0 -1
- homeassistant/components/subaru/translations/ja.json +0 -1
- homeassistant/components/subaru/translations/ko.json +0 -1
- homeassistant/components/subaru/translations/lt.json +0 -2
- homeassistant/components/subaru/translations/pt-BR.json +0 -1
- homeassistant/components/subaru/translations/pt.json +0 -2
- homeassistant/components/subaru/translations/ru.json +0 -2
- homeassistant/components/subaru/translations/sk.json +0 -2
- homeassistant/components/subaru/translations/sv.json +0 -2
- homeassistant/components/subaru/translations/tr.json +0 -2
- homeassistant/components/subaru/translations/zh-Hans.json +0 -2
- homeassistant/components/subaru/translations/zh-Hant.json +0 -2
- homeassistant/components/switchbot/translations/bg.json +26 -0
- homeassistant/components/switchbot/translations/ga.json +33 -0
- homeassistant/components/switchbot/translations/id.json +19 -0
- homeassistant/components/switchbot/translations/mk.json +49 -0
- homeassistant/components/switchbot/translations/sv.json +54 -0
- homeassistant/components/switchbot/translations/zh-Hans.json +53 -0
- homeassistant/components/telegram_bot/__init__.py +20 -4
- homeassistant/components/telegram_bot/bot.py +33 -29
- homeassistant/components/telegram_bot/config_flow.py +66 -20
- homeassistant/components/telegram_bot/const.py +1 -1
- homeassistant/components/telegram_bot/strings.json +33 -10
- homeassistant/components/telegram_bot/translations/bg.json +0 -1
- homeassistant/components/telegram_bot/translations/cs.json +35 -12
- homeassistant/components/telegram_bot/translations/de.json +35 -12
- homeassistant/components/telegram_bot/translations/el.json +35 -12
- homeassistant/components/telegram_bot/translations/en-GB.json +6 -11
- homeassistant/components/telegram_bot/translations/en.json +35 -12
- homeassistant/components/telegram_bot/translations/es.json +35 -12
- homeassistant/components/telegram_bot/translations/et.json +34 -11
- homeassistant/components/telegram_bot/translations/fr.json +5 -12
- homeassistant/components/telegram_bot/translations/ga.json +5 -11
- homeassistant/components/telegram_bot/translations/he.json +3 -8
- homeassistant/components/telegram_bot/translations/hu.json +5 -12
- homeassistant/components/telegram_bot/translations/id.json +0 -5
- homeassistant/components/telegram_bot/translations/it.json +2 -5
- homeassistant/components/telegram_bot/translations/lt.json +5 -12
- homeassistant/components/telegram_bot/translations/mk.json +7 -5
- homeassistant/components/telegram_bot/translations/nl.json +5 -12
- homeassistant/components/telegram_bot/translations/pt.json +5 -12
- homeassistant/components/telegram_bot/translations/ru.json +12 -11
- homeassistant/components/telegram_bot/translations/sk.json +35 -12
- homeassistant/components/telegram_bot/translations/sv.json +28 -12
- homeassistant/components/telegram_bot/translations/tr.json +5 -12
- homeassistant/components/telegram_bot/translations/zh-Hans.json +35 -12
- homeassistant/components/telegram_bot/translations/zh-Hant.json +35 -12
- homeassistant/components/template/translations/sv.json +5 -5
- homeassistant/components/text/translations/sv.json +1 -1
- homeassistant/components/tilt_pi/translations/id.json +11 -0
- homeassistant/components/tts/__init__.py +15 -0
- homeassistant/components/unifiprotect/translations/zh-Hans.json +3 -3
- homeassistant/components/utility_meter/translations/sv.json +9 -9
- homeassistant/components/vegehub/translations/bg.json +2 -0
- homeassistant/components/vegehub/translations/id.json +11 -0
- homeassistant/components/vegehub/translations/sv.json +2 -1
- homeassistant/components/vicare/translations/sv.json +2 -2
- homeassistant/components/whirlpool/translations/sv.json +12 -12
- homeassistant/components/wyoming/translations/sv.json +2 -2
- homeassistant/components/zha/translations/bg.json +23 -0
- homeassistant/components/zha/translations/el.json +10 -0
- homeassistant/components/zha/translations/ga.json +20 -0
- homeassistant/components/zha/translations/id.json +6 -0
- homeassistant/components/zha/translations/sv.json +23 -0
- homeassistant/components/zha/translations/zh-Hans.json +50 -0
- homeassistant/components/zwave_js/api.py +1 -1
- homeassistant/components/zwave_js/config_flow.py +15 -68
- homeassistant/components/zwave_js/manifest.json +1 -1
- homeassistant/components/zwave_js/strings.json +1 -5
- homeassistant/components/zwave_js/translations/bg.json +0 -3
- homeassistant/components/zwave_js/translations/cs.json +0 -5
- homeassistant/components/zwave_js/translations/de.json +1 -5
- homeassistant/components/zwave_js/translations/el.json +0 -5
- homeassistant/components/zwave_js/translations/en-GB.json +1 -5
- homeassistant/components/zwave_js/translations/en.json +1 -5
- homeassistant/components/zwave_js/translations/es.json +1 -5
- homeassistant/components/zwave_js/translations/et.json +0 -5
- homeassistant/components/zwave_js/translations/ga.json +0 -5
- homeassistant/components/zwave_js/translations/hu.json +0 -5
- homeassistant/components/zwave_js/translations/lt.json +0 -5
- homeassistant/components/zwave_js/translations/mk.json +0 -5
- homeassistant/components/zwave_js/translations/pt.json +0 -5
- homeassistant/components/zwave_js/translations/ru.json +0 -5
- homeassistant/components/zwave_js/translations/sk.json +0 -5
- homeassistant/components/zwave_js/translations/sv.json +0 -5
- homeassistant/components/zwave_js/translations/zh-Hans.json +0 -5
- homeassistant/components/zwave_js/translations/zh-Hant.json +1 -5
- homeassistant/config_entries.py +6 -0
- homeassistant/const.py +1 -1
- homeassistant/package_constraints.txt +1 -1
- {homeassistant-2025.7.0b0.dist-info → homeassistant-2025.7.0b2.dist-info}/METADATA +1 -1
- {homeassistant-2025.7.0b0.dist-info → homeassistant-2025.7.0b2.dist-info}/RECORD +312 -294
- {homeassistant-2025.7.0b0.dist-info → homeassistant-2025.7.0b2.dist-info}/WHEEL +0 -0
- {homeassistant-2025.7.0b0.dist-info → homeassistant-2025.7.0b2.dist-info}/entry_points.txt +0 -0
- {homeassistant-2025.7.0b0.dist-info → homeassistant-2025.7.0b2.dist-info}/licenses/LICENSE.md +0 -0
- {homeassistant-2025.7.0b0.dist-info → homeassistant-2025.7.0b2.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
- {homeassistant-2025.7.0b0.dist-info → homeassistant-2025.7.0b2.dist-info}/top_level.txt +0 -0
|
@@ -287,24 +287,32 @@ class TelegramNotificationService:
|
|
|
287
287
|
inline_message_id = msg_data["inline_message_id"]
|
|
288
288
|
return message_id, inline_message_id
|
|
289
289
|
|
|
290
|
-
def
|
|
290
|
+
def get_target_chat_ids(self, target: int | list[int] | None) -> list[int]:
|
|
291
291
|
"""Validate chat_id targets or return default target (first).
|
|
292
292
|
|
|
293
293
|
:param target: optional list of integers ([12234, -12345])
|
|
294
294
|
:return list of chat_id targets (integers)
|
|
295
295
|
"""
|
|
296
296
|
allowed_chat_ids: list[int] = self._get_allowed_chat_ids()
|
|
297
|
-
|
|
298
|
-
if target is
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
297
|
+
|
|
298
|
+
if target is None:
|
|
299
|
+
return [allowed_chat_ids[0]]
|
|
300
|
+
|
|
301
|
+
chat_ids = [target] if isinstance(target, int) else target
|
|
302
|
+
valid_chat_ids = [
|
|
303
|
+
chat_id for chat_id in chat_ids if chat_id in allowed_chat_ids
|
|
304
|
+
]
|
|
305
|
+
if not valid_chat_ids:
|
|
306
|
+
raise ServiceValidationError(
|
|
307
|
+
"Invalid chat IDs",
|
|
308
|
+
translation_domain=DOMAIN,
|
|
309
|
+
translation_key="invalid_chat_ids",
|
|
310
|
+
translation_placeholders={
|
|
311
|
+
"chat_ids": ", ".join(str(chat_id) for chat_id in chat_ids),
|
|
312
|
+
"bot_name": self.config.title,
|
|
313
|
+
},
|
|
306
314
|
)
|
|
307
|
-
return
|
|
315
|
+
return valid_chat_ids
|
|
308
316
|
|
|
309
317
|
def _get_msg_kwargs(self, data: dict[str, Any]) -> dict[str, Any]:
|
|
310
318
|
"""Get parameters in message data kwargs."""
|
|
@@ -414,9 +422,9 @@ class TelegramNotificationService:
|
|
|
414
422
|
"""Send one message."""
|
|
415
423
|
try:
|
|
416
424
|
out = await func_send(*args_msg, **kwargs_msg)
|
|
417
|
-
if
|
|
425
|
+
if isinstance(out, Message):
|
|
418
426
|
chat_id = out.chat_id
|
|
419
|
-
message_id = out
|
|
427
|
+
message_id = out.message_id
|
|
420
428
|
self._last_message_id[chat_id] = message_id
|
|
421
429
|
_LOGGER.debug(
|
|
422
430
|
"Last message ID: %s (from chat_id %s)",
|
|
@@ -424,7 +432,7 @@ class TelegramNotificationService:
|
|
|
424
432
|
chat_id,
|
|
425
433
|
)
|
|
426
434
|
|
|
427
|
-
event_data = {
|
|
435
|
+
event_data: dict[str, Any] = {
|
|
428
436
|
ATTR_CHAT_ID: chat_id,
|
|
429
437
|
ATTR_MESSAGEID: message_id,
|
|
430
438
|
}
|
|
@@ -437,10 +445,6 @@ class TelegramNotificationService:
|
|
|
437
445
|
self.hass.bus.async_fire(
|
|
438
446
|
EVENT_TELEGRAM_SENT, event_data, context=context
|
|
439
447
|
)
|
|
440
|
-
elif not isinstance(out, bool):
|
|
441
|
-
_LOGGER.warning(
|
|
442
|
-
"Update last message: out_type:%s, out=%s", type(out), out
|
|
443
|
-
)
|
|
444
448
|
except TelegramError as exc:
|
|
445
449
|
_LOGGER.error(
|
|
446
450
|
"%s: %s. Args: %s, kwargs: %s", msg_error, exc, args_msg, kwargs_msg
|
|
@@ -460,7 +464,7 @@ class TelegramNotificationService:
|
|
|
460
464
|
text = f"{title}\n{message}" if title else message
|
|
461
465
|
params = self._get_msg_kwargs(kwargs)
|
|
462
466
|
msg_ids = {}
|
|
463
|
-
for chat_id in self.
|
|
467
|
+
for chat_id in self.get_target_chat_ids(target):
|
|
464
468
|
_LOGGER.debug("Send message in chat ID %s with params: %s", chat_id, params)
|
|
465
469
|
msg = await self._send_msg(
|
|
466
470
|
self.bot.send_message,
|
|
@@ -488,7 +492,7 @@ class TelegramNotificationService:
|
|
|
488
492
|
**kwargs: dict[str, Any],
|
|
489
493
|
) -> bool:
|
|
490
494
|
"""Delete a previously sent message."""
|
|
491
|
-
chat_id = self.
|
|
495
|
+
chat_id = self.get_target_chat_ids(chat_id)[0]
|
|
492
496
|
message_id, _ = self._get_msg_ids(kwargs, chat_id)
|
|
493
497
|
_LOGGER.debug("Delete message %s in chat ID %s", message_id, chat_id)
|
|
494
498
|
deleted: bool = await self._send_msg(
|
|
@@ -513,7 +517,7 @@ class TelegramNotificationService:
|
|
|
513
517
|
**kwargs: dict[str, Any],
|
|
514
518
|
) -> Any:
|
|
515
519
|
"""Edit a previously sent message."""
|
|
516
|
-
chat_id = self.
|
|
520
|
+
chat_id = self.get_target_chat_ids(chat_id)[0]
|
|
517
521
|
message_id, inline_message_id = self._get_msg_ids(kwargs, chat_id)
|
|
518
522
|
params = self._get_msg_kwargs(kwargs)
|
|
519
523
|
_LOGGER.debug(
|
|
@@ -620,7 +624,7 @@ class TelegramNotificationService:
|
|
|
620
624
|
|
|
621
625
|
msg_ids = {}
|
|
622
626
|
if file_content:
|
|
623
|
-
for chat_id in self.
|
|
627
|
+
for chat_id in self.get_target_chat_ids(target):
|
|
624
628
|
_LOGGER.debug("Sending file to chat ID %s", chat_id)
|
|
625
629
|
|
|
626
630
|
if file_type == SERVICE_SEND_PHOTO:
|
|
@@ -738,7 +742,7 @@ class TelegramNotificationService:
|
|
|
738
742
|
|
|
739
743
|
msg_ids = {}
|
|
740
744
|
if stickerid:
|
|
741
|
-
for chat_id in self.
|
|
745
|
+
for chat_id in self.get_target_chat_ids(target):
|
|
742
746
|
msg = await self._send_msg(
|
|
743
747
|
self.bot.send_sticker,
|
|
744
748
|
"Error sending sticker",
|
|
@@ -769,7 +773,7 @@ class TelegramNotificationService:
|
|
|
769
773
|
longitude = float(longitude)
|
|
770
774
|
params = self._get_msg_kwargs(kwargs)
|
|
771
775
|
msg_ids = {}
|
|
772
|
-
for chat_id in self.
|
|
776
|
+
for chat_id in self.get_target_chat_ids(target):
|
|
773
777
|
_LOGGER.debug(
|
|
774
778
|
"Send location %s/%s to chat ID %s", latitude, longitude, chat_id
|
|
775
779
|
)
|
|
@@ -803,7 +807,7 @@ class TelegramNotificationService:
|
|
|
803
807
|
params = self._get_msg_kwargs(kwargs)
|
|
804
808
|
openperiod = kwargs.get(ATTR_OPEN_PERIOD)
|
|
805
809
|
msg_ids = {}
|
|
806
|
-
for chat_id in self.
|
|
810
|
+
for chat_id in self.get_target_chat_ids(target):
|
|
807
811
|
_LOGGER.debug("Send poll '%s' to chat ID %s", question, chat_id)
|
|
808
812
|
msg = await self._send_msg(
|
|
809
813
|
self.bot.send_poll,
|
|
@@ -826,12 +830,12 @@ class TelegramNotificationService:
|
|
|
826
830
|
|
|
827
831
|
async def leave_chat(
|
|
828
832
|
self,
|
|
829
|
-
chat_id:
|
|
833
|
+
chat_id: int | None = None,
|
|
830
834
|
context: Context | None = None,
|
|
831
835
|
**kwargs: dict[str, Any],
|
|
832
836
|
) -> Any:
|
|
833
837
|
"""Remove bot from chat."""
|
|
834
|
-
chat_id = self.
|
|
838
|
+
chat_id = self.get_target_chat_ids(chat_id)[0]
|
|
835
839
|
_LOGGER.debug("Leave from chat ID %s", chat_id)
|
|
836
840
|
return await self._send_msg(
|
|
837
841
|
self.bot.leave_chat, "Error leaving chat", None, chat_id, context=context
|
|
@@ -839,14 +843,14 @@ class TelegramNotificationService:
|
|
|
839
843
|
|
|
840
844
|
async def set_message_reaction(
|
|
841
845
|
self,
|
|
842
|
-
chat_id: int,
|
|
843
846
|
reaction: str,
|
|
847
|
+
chat_id: int | None = None,
|
|
844
848
|
is_big: bool = False,
|
|
845
849
|
context: Context | None = None,
|
|
846
850
|
**kwargs: dict[str, Any],
|
|
847
851
|
) -> None:
|
|
848
852
|
"""Set the bot's reaction for a given message."""
|
|
849
|
-
chat_id = self.
|
|
853
|
+
chat_id = self.get_target_chat_ids(chat_id)[0]
|
|
850
854
|
message_id, _ = self._get_msg_ids(kwargs, chat_id)
|
|
851
855
|
params = self._get_msg_kwargs(kwargs)
|
|
852
856
|
|
|
@@ -22,7 +22,7 @@ from homeassistant.config_entries import (
|
|
|
22
22
|
)
|
|
23
23
|
from homeassistant.const import CONF_API_KEY, CONF_PLATFORM, CONF_URL
|
|
24
24
|
from homeassistant.core import callback
|
|
25
|
-
from homeassistant.data_entry_flow import AbortFlow
|
|
25
|
+
from homeassistant.data_entry_flow import AbortFlow, section
|
|
26
26
|
from homeassistant.helpers import config_validation as cv
|
|
27
27
|
from homeassistant.helpers.issue_registry import IssueSeverity, async_create_issue
|
|
28
28
|
from homeassistant.helpers.network import NoURLAvailableError, get_url
|
|
@@ -58,6 +58,7 @@ from .const import (
|
|
|
58
58
|
PLATFORM_BROADCAST,
|
|
59
59
|
PLATFORM_POLLING,
|
|
60
60
|
PLATFORM_WEBHOOKS,
|
|
61
|
+
SECTION_ADVANCED_SETTINGS,
|
|
61
62
|
SUBENTRY_TYPE_ALLOWED_CHAT_IDS,
|
|
62
63
|
)
|
|
63
64
|
|
|
@@ -81,8 +82,15 @@ STEP_USER_DATA_SCHEMA: vol.Schema = vol.Schema(
|
|
|
81
82
|
autocomplete="current-password",
|
|
82
83
|
)
|
|
83
84
|
),
|
|
84
|
-
vol.
|
|
85
|
-
|
|
85
|
+
vol.Required(SECTION_ADVANCED_SETTINGS): section(
|
|
86
|
+
vol.Schema(
|
|
87
|
+
{
|
|
88
|
+
vol.Optional(CONF_PROXY_URL): TextSelector(
|
|
89
|
+
config=TextSelectorConfig(type=TextSelectorType.URL)
|
|
90
|
+
),
|
|
91
|
+
},
|
|
92
|
+
),
|
|
93
|
+
{"collapsed": True},
|
|
86
94
|
),
|
|
87
95
|
}
|
|
88
96
|
)
|
|
@@ -98,8 +106,15 @@ STEP_RECONFIGURE_USER_DATA_SCHEMA: vol.Schema = vol.Schema(
|
|
|
98
106
|
translation_key="platforms",
|
|
99
107
|
)
|
|
100
108
|
),
|
|
101
|
-
vol.
|
|
102
|
-
|
|
109
|
+
vol.Required(SECTION_ADVANCED_SETTINGS): section(
|
|
110
|
+
vol.Schema(
|
|
111
|
+
{
|
|
112
|
+
vol.Optional(CONF_PROXY_URL): TextSelector(
|
|
113
|
+
config=TextSelectorConfig(type=TextSelectorType.URL)
|
|
114
|
+
),
|
|
115
|
+
},
|
|
116
|
+
),
|
|
117
|
+
{"collapsed": True},
|
|
103
118
|
),
|
|
104
119
|
}
|
|
105
120
|
)
|
|
@@ -197,6 +212,9 @@ class TelgramBotConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
|
197
212
|
import_data[CONF_TRUSTED_NETWORKS] = ",".join(
|
|
198
213
|
import_data[CONF_TRUSTED_NETWORKS]
|
|
199
214
|
)
|
|
215
|
+
import_data[SECTION_ADVANCED_SETTINGS] = {
|
|
216
|
+
CONF_PROXY_URL: import_data.get(CONF_PROXY_URL)
|
|
217
|
+
}
|
|
200
218
|
try:
|
|
201
219
|
config_flow_result: ConfigFlowResult = await self.async_step_user(
|
|
202
220
|
import_data
|
|
@@ -293,10 +311,15 @@ class TelgramBotConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
|
293
311
|
) -> ConfigFlowResult:
|
|
294
312
|
"""Handle a flow to create a new config entry for a Telegram bot."""
|
|
295
313
|
|
|
314
|
+
description_placeholders: dict[str, str] = {
|
|
315
|
+
"botfather_username": "@BotFather",
|
|
316
|
+
"botfather_url": "https://t.me/botfather",
|
|
317
|
+
}
|
|
296
318
|
if not user_input:
|
|
297
319
|
return self.async_show_form(
|
|
298
320
|
step_id="user",
|
|
299
321
|
data_schema=STEP_USER_DATA_SCHEMA,
|
|
322
|
+
description_placeholders=description_placeholders,
|
|
300
323
|
)
|
|
301
324
|
|
|
302
325
|
# prevent duplicates
|
|
@@ -305,7 +328,6 @@ class TelgramBotConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
|
305
328
|
|
|
306
329
|
# validate connection to Telegram API
|
|
307
330
|
errors: dict[str, str] = {}
|
|
308
|
-
description_placeholders: dict[str, str] = {}
|
|
309
331
|
bot_name = await self._validate_bot(
|
|
310
332
|
user_input, errors, description_placeholders
|
|
311
333
|
)
|
|
@@ -328,7 +350,7 @@ class TelgramBotConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
|
328
350
|
data={
|
|
329
351
|
CONF_PLATFORM: user_input[CONF_PLATFORM],
|
|
330
352
|
CONF_API_KEY: user_input[CONF_API_KEY],
|
|
331
|
-
CONF_PROXY_URL: user_input.get(CONF_PROXY_URL),
|
|
353
|
+
CONF_PROXY_URL: user_input["advanced_settings"].get(CONF_PROXY_URL),
|
|
332
354
|
},
|
|
333
355
|
options={
|
|
334
356
|
# this value may come from yaml import
|
|
@@ -390,12 +412,20 @@ class TelgramBotConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
|
390
412
|
"""Handle config flow for webhook Telegram bot."""
|
|
391
413
|
|
|
392
414
|
if not user_input:
|
|
415
|
+
default_trusted_networks = ",".join(
|
|
416
|
+
[str(network) for network in DEFAULT_TRUSTED_NETWORKS]
|
|
417
|
+
)
|
|
418
|
+
|
|
393
419
|
if self.source == SOURCE_RECONFIGURE:
|
|
420
|
+
suggested_values = dict(self._get_reconfigure_entry().data)
|
|
421
|
+
if CONF_TRUSTED_NETWORKS not in self._get_reconfigure_entry().data:
|
|
422
|
+
suggested_values[CONF_TRUSTED_NETWORKS] = default_trusted_networks
|
|
423
|
+
|
|
394
424
|
return self.async_show_form(
|
|
395
425
|
step_id="webhooks",
|
|
396
426
|
data_schema=self.add_suggested_values_to_schema(
|
|
397
427
|
STEP_WEBHOOKS_DATA_SCHEMA,
|
|
398
|
-
|
|
428
|
+
suggested_values,
|
|
399
429
|
),
|
|
400
430
|
)
|
|
401
431
|
|
|
@@ -404,9 +434,7 @@ class TelgramBotConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
|
404
434
|
data_schema=self.add_suggested_values_to_schema(
|
|
405
435
|
STEP_WEBHOOKS_DATA_SCHEMA,
|
|
406
436
|
{
|
|
407
|
-
CONF_TRUSTED_NETWORKS:
|
|
408
|
-
[str(network) for network in DEFAULT_TRUSTED_NETWORKS]
|
|
409
|
-
),
|
|
437
|
+
CONF_TRUSTED_NETWORKS: default_trusted_networks,
|
|
410
438
|
},
|
|
411
439
|
),
|
|
412
440
|
)
|
|
@@ -440,7 +468,9 @@ class TelgramBotConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
|
440
468
|
data={
|
|
441
469
|
CONF_PLATFORM: self._step_user_data[CONF_PLATFORM],
|
|
442
470
|
CONF_API_KEY: self._step_user_data[CONF_API_KEY],
|
|
443
|
-
CONF_PROXY_URL: self._step_user_data.get(
|
|
471
|
+
CONF_PROXY_URL: self._step_user_data[SECTION_ADVANCED_SETTINGS].get(
|
|
472
|
+
CONF_PROXY_URL
|
|
473
|
+
),
|
|
444
474
|
CONF_URL: user_input.get(CONF_URL),
|
|
445
475
|
CONF_TRUSTED_NETWORKS: user_input[CONF_TRUSTED_NETWORKS],
|
|
446
476
|
},
|
|
@@ -455,12 +485,8 @@ class TelgramBotConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
|
455
485
|
description_placeholders: dict[str, str],
|
|
456
486
|
) -> None:
|
|
457
487
|
# validate URL
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
description_placeholders[ERROR_FIELD] = "URL"
|
|
461
|
-
description_placeholders[ERROR_MESSAGE] = "URL must start with https"
|
|
462
|
-
return
|
|
463
|
-
if CONF_URL not in user_input:
|
|
488
|
+
url: str | None = user_input.get(CONF_URL)
|
|
489
|
+
if url is None:
|
|
464
490
|
try:
|
|
465
491
|
get_url(self.hass, require_ssl=True, allow_internal=False)
|
|
466
492
|
except NoURLAvailableError:
|
|
@@ -470,6 +496,11 @@ class TelgramBotConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
|
470
496
|
"URL is required since you have not configured an external URL in Home Assistant"
|
|
471
497
|
)
|
|
472
498
|
return
|
|
499
|
+
elif not url.startswith("https"):
|
|
500
|
+
errors["base"] = "invalid_url"
|
|
501
|
+
description_placeholders[ERROR_FIELD] = "URL"
|
|
502
|
+
description_placeholders[ERROR_MESSAGE] = "URL must start with https"
|
|
503
|
+
return
|
|
473
504
|
|
|
474
505
|
# validate trusted networks
|
|
475
506
|
csv_trusted_networks: list[str] = []
|
|
@@ -505,9 +536,19 @@ class TelgramBotConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
|
505
536
|
step_id="reconfigure",
|
|
506
537
|
data_schema=self.add_suggested_values_to_schema(
|
|
507
538
|
STEP_RECONFIGURE_USER_DATA_SCHEMA,
|
|
508
|
-
|
|
539
|
+
{
|
|
540
|
+
**self._get_reconfigure_entry().data,
|
|
541
|
+
SECTION_ADVANCED_SETTINGS: {
|
|
542
|
+
CONF_PROXY_URL: self._get_reconfigure_entry().data.get(
|
|
543
|
+
CONF_PROXY_URL
|
|
544
|
+
),
|
|
545
|
+
},
|
|
546
|
+
},
|
|
509
547
|
),
|
|
510
548
|
)
|
|
549
|
+
user_input[CONF_PROXY_URL] = user_input[SECTION_ADVANCED_SETTINGS].get(
|
|
550
|
+
CONF_PROXY_URL
|
|
551
|
+
)
|
|
511
552
|
|
|
512
553
|
errors: dict[str, str] = {}
|
|
513
554
|
description_placeholders: dict[str, str] = {}
|
|
@@ -523,7 +564,12 @@ class TelgramBotConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
|
523
564
|
step_id="reconfigure",
|
|
524
565
|
data_schema=self.add_suggested_values_to_schema(
|
|
525
566
|
STEP_RECONFIGURE_USER_DATA_SCHEMA,
|
|
526
|
-
|
|
567
|
+
{
|
|
568
|
+
**user_input,
|
|
569
|
+
SECTION_ADVANCED_SETTINGS: {
|
|
570
|
+
CONF_PROXY_URL: user_input.get(CONF_PROXY_URL),
|
|
571
|
+
},
|
|
572
|
+
},
|
|
527
573
|
),
|
|
528
574
|
errors=errors,
|
|
529
575
|
description_placeholders=description_placeholders,
|
|
@@ -7,7 +7,7 @@ DOMAIN = "telegram_bot"
|
|
|
7
7
|
PLATFORM_BROADCAST = "broadcast"
|
|
8
8
|
PLATFORM_POLLING = "polling"
|
|
9
9
|
PLATFORM_WEBHOOKS = "webhooks"
|
|
10
|
-
|
|
10
|
+
SECTION_ADVANCED_SETTINGS = "advanced_settings"
|
|
11
11
|
SUBENTRY_TYPE_ALLOWED_CHAT_IDS = "allowed_chat_ids"
|
|
12
12
|
|
|
13
13
|
CONF_BOT_COUNT = "bot_count"
|
|
@@ -2,17 +2,25 @@
|
|
|
2
2
|
"config": {
|
|
3
3
|
"step": {
|
|
4
4
|
"user": {
|
|
5
|
-
"
|
|
6
|
-
"description": "Create a new Telegram bot",
|
|
5
|
+
"description": "To create a Telegram bot, follow these steps:\n\n1. Open Telegram and start a chat with [{botfather_username}]({botfather_url}).\n1. Send the command `/newbot`.\n1. Follow the instructions to create your bot and get your API token.",
|
|
7
6
|
"data": {
|
|
8
7
|
"platform": "Platform",
|
|
9
|
-
"api_key": "[%key:common::config_flow::data::
|
|
10
|
-
"proxy_url": "Proxy URL"
|
|
8
|
+
"api_key": "[%key:common::config_flow::data::api_token%]"
|
|
11
9
|
},
|
|
12
10
|
"data_description": {
|
|
13
11
|
"platform": "Telegram bot implementation",
|
|
14
|
-
"api_key": "The API token of your bot."
|
|
15
|
-
|
|
12
|
+
"api_key": "The API token of your bot."
|
|
13
|
+
},
|
|
14
|
+
"sections": {
|
|
15
|
+
"advanced_settings": {
|
|
16
|
+
"name": "Advanced settings",
|
|
17
|
+
"data": {
|
|
18
|
+
"proxy_url": "Proxy URL"
|
|
19
|
+
},
|
|
20
|
+
"data_description": {
|
|
21
|
+
"proxy_url": "Proxy URL if working behind one, optionally including username and password.\n(socks5://username:password@proxy_ip:proxy_port)"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
16
24
|
}
|
|
17
25
|
},
|
|
18
26
|
"webhooks": {
|
|
@@ -30,12 +38,21 @@
|
|
|
30
38
|
"title": "Telegram bot setup",
|
|
31
39
|
"description": "Reconfigure Telegram bot",
|
|
32
40
|
"data": {
|
|
33
|
-
"platform": "[%key:component::telegram_bot::config::step::user::data::platform%]"
|
|
34
|
-
"proxy_url": "[%key:component::telegram_bot::config::step::user::data::proxy_url%]"
|
|
41
|
+
"platform": "[%key:component::telegram_bot::config::step::user::data::platform%]"
|
|
35
42
|
},
|
|
36
43
|
"data_description": {
|
|
37
|
-
"platform": "[%key:component::telegram_bot::config::step::user::data_description::platform%]"
|
|
38
|
-
|
|
44
|
+
"platform": "[%key:component::telegram_bot::config::step::user::data_description::platform%]"
|
|
45
|
+
},
|
|
46
|
+
"sections": {
|
|
47
|
+
"advanced_settings": {
|
|
48
|
+
"name": "[%key:component::telegram_bot::config::step::user::sections::advanced_settings::name%]",
|
|
49
|
+
"data": {
|
|
50
|
+
"proxy_url": "[%key:component::telegram_bot::config::step::user::sections::advanced_settings::data::proxy_url%]"
|
|
51
|
+
},
|
|
52
|
+
"data_description": {
|
|
53
|
+
"proxy_url": "[%key:component::telegram_bot::config::step::user::sections::advanced_settings::data_description::proxy_url%]"
|
|
54
|
+
}
|
|
55
|
+
}
|
|
39
56
|
}
|
|
40
57
|
},
|
|
41
58
|
"reauth_confirm": {
|
|
@@ -895,6 +912,12 @@
|
|
|
895
912
|
"missing_allowed_chat_ids": {
|
|
896
913
|
"message": "No allowed chat IDs found. Please add allowed chat IDs for {bot_name}."
|
|
897
914
|
},
|
|
915
|
+
"invalid_chat_ids": {
|
|
916
|
+
"message": "Invalid chat IDs: {chat_ids}. Please configure the chat IDs for {bot_name}."
|
|
917
|
+
},
|
|
918
|
+
"failed_chat_ids": {
|
|
919
|
+
"message": "Failed targets: {chat_ids}. Please verify that the chat IDs for {bot_name} have been configured."
|
|
920
|
+
},
|
|
898
921
|
"missing_input": {
|
|
899
922
|
"message": "{field} is required."
|
|
900
923
|
},
|
|
@@ -24,29 +24,46 @@
|
|
|
24
24
|
},
|
|
25
25
|
"reconfigure": {
|
|
26
26
|
"data": {
|
|
27
|
-
"platform": "Platforma"
|
|
28
|
-
"proxy_url": "Adresa URL proxy serveru"
|
|
27
|
+
"platform": "Platforma"
|
|
29
28
|
},
|
|
30
29
|
"data_description": {
|
|
31
|
-
"platform": "Implementace bota Telegram"
|
|
32
|
-
"proxy_url": "Adresa URL proxy serveru, pokud za n\u00edm pracuje, voliteln\u011b v\u010detn\u011b u\u017eivatelsk\u00e9ho jm\u00e9na a hesla. (socks5://username:password@proxy_ip:proxy_port)"
|
|
30
|
+
"platform": "Implementace bota Telegram"
|
|
33
31
|
},
|
|
34
32
|
"description": "P\u0159enastavit bota Telegram",
|
|
33
|
+
"sections": {
|
|
34
|
+
"advanced_settings": {
|
|
35
|
+
"data": {
|
|
36
|
+
"proxy_url": "Adresa URL proxy serveru"
|
|
37
|
+
},
|
|
38
|
+
"data_description": {
|
|
39
|
+
"proxy_url": "Adresa URL proxy serveru, pokud za n\u00edm pracuje, voliteln\u011b v\u010detn\u011b u\u017eivatelsk\u00e9ho jm\u00e9na a hesla. (socks5://username:password@proxy_ip:proxy_port)"
|
|
40
|
+
},
|
|
41
|
+
"name": "Pokro\u010dil\u00e1 nastaven\u00ed"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
35
44
|
"title": "Nastavit bota Telegram"
|
|
36
45
|
},
|
|
37
46
|
"user": {
|
|
38
47
|
"data": {
|
|
39
|
-
"api_key": "
|
|
40
|
-
"platform": "Platforma"
|
|
41
|
-
"proxy_url": "Adresa URL proxy serveru"
|
|
48
|
+
"api_key": "Token API",
|
|
49
|
+
"platform": "Platforma"
|
|
42
50
|
},
|
|
43
51
|
"data_description": {
|
|
44
52
|
"api_key": "Token API va\u0161eho bota.",
|
|
45
|
-
"platform": "Implementace bota Telegram"
|
|
46
|
-
|
|
47
|
-
},
|
|
48
|
-
"
|
|
49
|
-
|
|
53
|
+
"platform": "Implementace bota Telegram"
|
|
54
|
+
},
|
|
55
|
+
"description": "Chcete-li vytvo\u0159it Telegram bota, postupujte takto:\n \n1. Otev\u0159ete Telegram a zahajte chat s [{botfather_username}]({botfather_url}).\n2. Ode\u0161lete p\u0159\u00edkaz \"/newbot\".\n3. Postupujte podle pokyn\u016f k vytvo\u0159en\u00ed bota a z\u00edsk\u00e1n\u00ed API tokenu.",
|
|
56
|
+
"sections": {
|
|
57
|
+
"advanced_settings": {
|
|
58
|
+
"data": {
|
|
59
|
+
"proxy_url": "Adresa URL proxy serveru"
|
|
60
|
+
},
|
|
61
|
+
"data_description": {
|
|
62
|
+
"proxy_url": "Adresa URL proxy serveru, pokud za n\u00edm pracuje, voliteln\u011b v\u010detn\u011b u\u017eivatelsk\u00e9ho jm\u00e9na a hesla. (socks5://username:password@proxy_ip:proxy_port)"
|
|
63
|
+
},
|
|
64
|
+
"name": "Pokro\u010dil\u00e1 nastaven\u00ed"
|
|
65
|
+
}
|
|
66
|
+
}
|
|
50
67
|
},
|
|
51
68
|
"webhooks": {
|
|
52
69
|
"data": {
|
|
@@ -89,12 +106,18 @@
|
|
|
89
106
|
"allowlist_external_dirs_error": {
|
|
90
107
|
"message": "Cesta k souboru nebyla nastavena v allowlist_external_dirs."
|
|
91
108
|
},
|
|
109
|
+
"failed_chat_ids": {
|
|
110
|
+
"message": "Ne\u00fasp\u011b\u0161n\u00e9 c\u00edle: {chat_ids}. Ov\u011b\u0159te, zda byla nastavena ID chat\u016f pro {bot_name}."
|
|
111
|
+
},
|
|
92
112
|
"failed_to_load_file": {
|
|
93
113
|
"message": "Nepoda\u0159ilo se na\u010d\u00edst soubor: {error}"
|
|
94
114
|
},
|
|
95
115
|
"failed_to_load_url": {
|
|
96
116
|
"message": "Nepoda\u0159ilo se na\u010d\u00edst URL: {error}"
|
|
97
117
|
},
|
|
118
|
+
"invalid_chat_ids": {
|
|
119
|
+
"message": "Neplatn\u00e1 ID chatu: {chat_ids}. Nastavte ID chat\u016f pro {bot_name}."
|
|
120
|
+
},
|
|
98
121
|
"missing_allowed_chat_ids": {
|
|
99
122
|
"message": "Nebyla nalezena \u017e\u00e1dn\u00e1 povolen\u00e1 ID chatu. P\u0159idejte povolen\u00e9 ID chatu pro {bot_name}."
|
|
100
123
|
},
|
|
@@ -24,29 +24,46 @@
|
|
|
24
24
|
},
|
|
25
25
|
"reconfigure": {
|
|
26
26
|
"data": {
|
|
27
|
-
"platform": "Plattform"
|
|
28
|
-
"proxy_url": "Proxy-URL"
|
|
27
|
+
"platform": "Plattform"
|
|
29
28
|
},
|
|
30
29
|
"data_description": {
|
|
31
|
-
"platform": "Implementierung des Telegram-Bots"
|
|
32
|
-
"proxy_url": "Proxy-URL, wenn du mit einem Proxy arbeitest, optional mit Benutzernamen und Passwort (socks5://benutzername:passwort@proxy_ip:proxy_port)"
|
|
30
|
+
"platform": "Implementierung des Telegram-Bots"
|
|
33
31
|
},
|
|
34
32
|
"description": "Telegram-Bot neu konfigurieren",
|
|
33
|
+
"sections": {
|
|
34
|
+
"advanced_settings": {
|
|
35
|
+
"data": {
|
|
36
|
+
"proxy_url": "Proxy-URL"
|
|
37
|
+
},
|
|
38
|
+
"data_description": {
|
|
39
|
+
"proxy_url": "URL des Proxy, wenn hinter einem gearbeitet wird, optional einschlie\u00dflich Benutzername und Passwort.\n(socks5://benutzername:passwort@proxy_ip:proxy_port)"
|
|
40
|
+
},
|
|
41
|
+
"name": "Erweiterte Einstellungen"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
35
44
|
"title": "Einrichtung des Telegram-Bots"
|
|
36
45
|
},
|
|
37
46
|
"user": {
|
|
38
47
|
"data": {
|
|
39
|
-
"api_key": "API-
|
|
40
|
-
"platform": "Plattform"
|
|
41
|
-
"proxy_url": "Proxy-URL"
|
|
48
|
+
"api_key": "API-Token",
|
|
49
|
+
"platform": "Plattform"
|
|
42
50
|
},
|
|
43
51
|
"data_description": {
|
|
44
52
|
"api_key": "Das API-Token deines Bots.",
|
|
45
|
-
"platform": "Implementierung des Telegram-Bots"
|
|
46
|
-
|
|
47
|
-
},
|
|
48
|
-
"
|
|
49
|
-
|
|
53
|
+
"platform": "Implementierung des Telegram-Bots"
|
|
54
|
+
},
|
|
55
|
+
"description": "So erstellst du einen Telegram-Bot:\n\n1. \u00d6ffne Telegram und beginne einen Chat mit [{botfather_username}]({botfather_url}).\n1. Sende den Befehl `/newbot`.\n1. Folge den Anweisungen, um deinen Bot zu erstellen und dein API-Token zu erhalten.",
|
|
56
|
+
"sections": {
|
|
57
|
+
"advanced_settings": {
|
|
58
|
+
"data": {
|
|
59
|
+
"proxy_url": "Proxy-URL"
|
|
60
|
+
},
|
|
61
|
+
"data_description": {
|
|
62
|
+
"proxy_url": "URL des Proxy, wenn hinter einem gearbeitet wird, optional einschlie\u00dflich Benutzername und Passwort.\n(socks5://benutzername:passwort@proxy_ip:proxy_port)"
|
|
63
|
+
},
|
|
64
|
+
"name": "Erweiterte Einstellungen"
|
|
65
|
+
}
|
|
66
|
+
}
|
|
50
67
|
},
|
|
51
68
|
"webhooks": {
|
|
52
69
|
"data": {
|
|
@@ -89,12 +106,18 @@
|
|
|
89
106
|
"allowlist_external_dirs_error": {
|
|
90
107
|
"message": "Der Dateipfad wurde in allowlist_external_dirs nicht konfiguriert."
|
|
91
108
|
},
|
|
109
|
+
"failed_chat_ids": {
|
|
110
|
+
"message": "Fehlgeschlagene Ziele: {chat_ids}. Bitte \u00fcberpr\u00fcfe, ob die Chat-IDs f\u00fcr {bot_name} konfiguriert wurden."
|
|
111
|
+
},
|
|
92
112
|
"failed_to_load_file": {
|
|
93
113
|
"message": "Datei konnte nicht geladen werden: {error}"
|
|
94
114
|
},
|
|
95
115
|
"failed_to_load_url": {
|
|
96
116
|
"message": "URL konnte nicht geladen werden: {error}"
|
|
97
117
|
},
|
|
118
|
+
"invalid_chat_ids": {
|
|
119
|
+
"message": "Ung\u00fcltige Chat-IDs: {chat_ids}. Bitte konfiguriere die Chat-IDs f\u00fcr {bot_name}."
|
|
120
|
+
},
|
|
98
121
|
"missing_allowed_chat_ids": {
|
|
99
122
|
"message": "Keine zul\u00e4ssigen Chat-IDs gefunden. Bitte f\u00fcge zul\u00e4ssige Chat-IDs f\u00fcr {bot_name} hinzu."
|
|
100
123
|
},
|