mirror of
https://github.com/home-assistant/core.git
synced 2025-07-18 10:47:10 +00:00
Allow sending telegram stickers from sticker packs (#57482)
This commit is contained in:
parent
f4aefdbf0b
commit
e22f8496c0
@ -63,6 +63,7 @@ ATTR_PASSWORD = "password"
|
|||||||
ATTR_REPLY_TO_MSGID = "reply_to_message_id"
|
ATTR_REPLY_TO_MSGID = "reply_to_message_id"
|
||||||
ATTR_REPLYMARKUP = "reply_markup"
|
ATTR_REPLYMARKUP = "reply_markup"
|
||||||
ATTR_SHOW_ALERT = "show_alert"
|
ATTR_SHOW_ALERT = "show_alert"
|
||||||
|
ATTR_STICKER_ID = "sticker_id"
|
||||||
ATTR_TARGET = "target"
|
ATTR_TARGET = "target"
|
||||||
ATTR_TEXT = "text"
|
ATTR_TEXT = "text"
|
||||||
ATTR_URL = "url"
|
ATTR_URL = "url"
|
||||||
@ -165,6 +166,10 @@ SERVICE_SCHEMA_SEND_FILE = BASE_SERVICE_SCHEMA.extend(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
SERVICE_SCHEMA_SEND_STICKER = SERVICE_SCHEMA_SEND_FILE.extend(
|
||||||
|
{vol.Optional(ATTR_STICKER_ID): cv.string}
|
||||||
|
)
|
||||||
|
|
||||||
SERVICE_SCHEMA_SEND_LOCATION = BASE_SERVICE_SCHEMA.extend(
|
SERVICE_SCHEMA_SEND_LOCATION = BASE_SERVICE_SCHEMA.extend(
|
||||||
{
|
{
|
||||||
vol.Required(ATTR_LONGITUDE): cv.template,
|
vol.Required(ATTR_LONGITUDE): cv.template,
|
||||||
@ -228,7 +233,7 @@ SERVICE_SCHEMA_LEAVE_CHAT = vol.Schema({vol.Required(ATTR_CHAT_ID): vol.Coerce(i
|
|||||||
SERVICE_MAP = {
|
SERVICE_MAP = {
|
||||||
SERVICE_SEND_MESSAGE: SERVICE_SCHEMA_SEND_MESSAGE,
|
SERVICE_SEND_MESSAGE: SERVICE_SCHEMA_SEND_MESSAGE,
|
||||||
SERVICE_SEND_PHOTO: SERVICE_SCHEMA_SEND_FILE,
|
SERVICE_SEND_PHOTO: SERVICE_SCHEMA_SEND_FILE,
|
||||||
SERVICE_SEND_STICKER: SERVICE_SCHEMA_SEND_FILE,
|
SERVICE_SEND_STICKER: SERVICE_SCHEMA_SEND_STICKER,
|
||||||
SERVICE_SEND_ANIMATION: SERVICE_SCHEMA_SEND_FILE,
|
SERVICE_SEND_ANIMATION: SERVICE_SCHEMA_SEND_FILE,
|
||||||
SERVICE_SEND_VIDEO: SERVICE_SCHEMA_SEND_FILE,
|
SERVICE_SEND_VIDEO: SERVICE_SCHEMA_SEND_FILE,
|
||||||
SERVICE_SEND_VOICE: SERVICE_SCHEMA_SEND_FILE,
|
SERVICE_SEND_VOICE: SERVICE_SCHEMA_SEND_FILE,
|
||||||
@ -371,7 +376,6 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
|||||||
)
|
)
|
||||||
elif msgtype in [
|
elif msgtype in [
|
||||||
SERVICE_SEND_PHOTO,
|
SERVICE_SEND_PHOTO,
|
||||||
SERVICE_SEND_STICKER,
|
|
||||||
SERVICE_SEND_ANIMATION,
|
SERVICE_SEND_ANIMATION,
|
||||||
SERVICE_SEND_VIDEO,
|
SERVICE_SEND_VIDEO,
|
||||||
SERVICE_SEND_VOICE,
|
SERVICE_SEND_VOICE,
|
||||||
@ -380,6 +384,10 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
|||||||
await hass.async_add_executor_job(
|
await hass.async_add_executor_job(
|
||||||
partial(notify_service.send_file, msgtype, **kwargs)
|
partial(notify_service.send_file, msgtype, **kwargs)
|
||||||
)
|
)
|
||||||
|
elif msgtype == SERVICE_SEND_STICKER:
|
||||||
|
await hass.async_add_executor_job(
|
||||||
|
partial(notify_service.send_sticker, **kwargs)
|
||||||
|
)
|
||||||
elif msgtype == SERVICE_SEND_LOCATION:
|
elif msgtype == SERVICE_SEND_LOCATION:
|
||||||
await hass.async_add_executor_job(
|
await hass.async_add_executor_job(
|
||||||
partial(notify_service.send_location, **kwargs)
|
partial(notify_service.send_location, **kwargs)
|
||||||
@ -797,6 +805,25 @@ class TelegramNotificationService:
|
|||||||
else:
|
else:
|
||||||
_LOGGER.error("Can't send file with kwargs: %s", kwargs)
|
_LOGGER.error("Can't send file with kwargs: %s", kwargs)
|
||||||
|
|
||||||
|
def send_sticker(self, target=None, **kwargs):
|
||||||
|
"""Send a sticker from a telegram sticker pack."""
|
||||||
|
params = self._get_msg_kwargs(kwargs)
|
||||||
|
stickerid = kwargs.get(ATTR_STICKER_ID)
|
||||||
|
if stickerid:
|
||||||
|
for chat_id in self._get_target_chat_ids(target):
|
||||||
|
self._send_msg(
|
||||||
|
self.bot.send_sticker,
|
||||||
|
"Error sending sticker",
|
||||||
|
params[ATTR_MESSAGE_TAG],
|
||||||
|
chat_id=chat_id,
|
||||||
|
sticker=stickerid,
|
||||||
|
disable_notification=params[ATTR_DISABLE_NOTIF],
|
||||||
|
reply_markup=params[ATTR_REPLYMARKUP],
|
||||||
|
timeout=params[ATTR_TIMEOUT],
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
self.send_file(SERVICE_SEND_STICKER, target, **kwargs)
|
||||||
|
|
||||||
def send_location(self, latitude, longitude, target=None, **kwargs):
|
def send_location(self, latitude, longitude, target=None, **kwargs):
|
||||||
"""Send a location."""
|
"""Send a location."""
|
||||||
latitude = float(latitude)
|
latitude = float(latitude)
|
||||||
|
@ -181,6 +181,12 @@ send_sticker:
|
|||||||
example: "/path/to/the/sticker.webp"
|
example: "/path/to/the/sticker.webp"
|
||||||
selector:
|
selector:
|
||||||
text:
|
text:
|
||||||
|
sticker_id:
|
||||||
|
name: Sticker ID
|
||||||
|
description: ID of a sticker that exists on telegram servers
|
||||||
|
example: CAACAgIAAxkBAAEDDldhZD-hqWclr6krLq-FWSfCrGNmOQAC9gAD9HsZAAFeYY-ltPYnrCEE
|
||||||
|
selector:
|
||||||
|
text:
|
||||||
username:
|
username:
|
||||||
name: Username
|
name: Username
|
||||||
description: Username for a URL which require HTTP authentication.
|
description: Username for a URL which require HTTP authentication.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user