尧图精选

Home Assistant Telegram bot set_message_reaction 动作详解:为 Telegram 消息自动添加表情回应

🕒 发布时间:2026/9/17 3:50:35 📁 来源:尧图网络
Home Assistant Telegram bot set_message_reaction 动作详解为 Telegram 消息自动添加表情回应【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io本篇以 Home Assistant 官方文档中的telegram_bot.set_message_reaction动作为核心完整讲解该动作的功能定位、UI 与 YAML 两种调用方式、全部参数含义以及如何获取并传递消息 IDMessage ID、Chat ID 等定位信息。读完本文你可以在自动化中让 Telegram 机器人像手动点表情一样对指定消息添加表情回应Reaction并掌握与telegram_sent事件实体联动的完整实战方案。动作概述telegram_bot.set_message_reaction用于让机器人对一条消息添加表情回应效果等同于在 Telegram 应用里长按消息后点选一个表情。该动作属于telegram_bot域是 Telegram bot 集成source/_integrations/telegram_bot.markdown提供的一组消息管理动作之一官方文档中明确将其与edit_message、delete_message等动作并列说明它专门用于“对之前已发送的消息进行后续操作”source/_integrations/telegram_bot.markdown#L416。使用前提已正确配置Telegram bot集成支持 Broadcast、Polling、Webhooks 三种平台目标聊天已在集成中通过Add allowed chat ID子条目Subentry完成 Chat ID 白名单授权——Chat ID 是用户正数或群组负数的唯一数值标识未授权聊天的消息无法被机器人操作你能确定要回应的那条消息的 ID。在用户界面中使用该动作如果你习惯可视化编排可以在自动化编辑器中按以下步骤完成对应 source/_actions/telegram_bot.set_message_reaction.markdown#L12-L20进入Settings Automations scenes设置 自动化与场景打开已有的自动化/脚本或选择Create automation Create new automation新建自动化时先在When部分添加触发条件。脚本不需要触发器——它由其他调用方启动在Then do部分点击Add action在搜索框中搜索并选择Telegram bot: Set message reaction填写Message ID和Reaction以及可选参数选择消息所在位置定位方式见下节点击Save。UI 中的参数说明参数说明是否必填Message ID要添加回应消息的 ID也可以使用last指向最近一条已发送的消息是Reaction要使用的表情emoji是Large animation为表情回应播放更大的动画否Config entry ID要使用的 Telegram bot配置多个 bot 时必填否Chat ID消息所在聊天已授权的 Chat ID默认为该 bot 的第一个允许聊天否消息定位方式不使用标准 target与light.turn_on这类动作不同set_message_reaction不使用标准 targetentity_id。它通过以下两种方式定位消息source/_actions/telegram_bot.set_message_reaction.markdown#L22-L25方式一同时提供Config entry ID指定用哪个 bot 配置条目与Chat ID指定消息所在的已授权聊天方式二只配置了单个 bot 且两者都不提供时默认使用该 bot 的第一个聊天first allowed chat。这意味着多 bot 场景下config_entry_id与chat_id必须成对提供否则会操作到错误的机器人或聊天。在 YAML 中使用该动作在 YAML 中该动作的完整名称为telegram_bot.set_message_reaction。官方给出的最简示例source/_actions/telegram_bot.set_message_reaction.markdown#L48-L54action: | action: telegram_bot.set_message_reaction data: message_id: last reaction: 这个示例演示了message_id: last的用法机器人会对自己最近发送的那条消息添加 回应无需事先知道具体消息 ID。YAML 参数完整参考参数类型必填默认值说明message_idinteger/string是—要添加回应消息的 ID也可使用字符串last指向最近发送的消息reactionstring是—要使用的表情emojiis_bigboolean否false为表情回应播放更大的动画对应 UI 中的 “Large animation”config_entry_idstring否—要使用的 Telegram bot配置多个 bot 时必填chat_idinteger否该 bot 的第一个允许聊天消息所在聊天的已授权 Chat ID注意message_id同时接受整数和字符串两种类型这正是last这个特殊取值能够生效的原因。is_big对应 Telegram 的“大动画表情”行为例如对 播放放大动画适合用于需要强调的场景。Message ID 从哪里来这是使用该动作最关键的实战问题。仓库文档给出了三类来源1. 使用last指向最近消息对“机器人刚发完一条消息后立即加表情回应”的场景最简单例如发送任务完成通知后追加一个确认表情actions: - action: telegram_bot.send_message data: message: Backup finished. - action: telegram_bot.set_message_reaction data: message_id: last reaction: ✅2. 从事件实体的telegram_sent事件中读取Telegram bot 集成为每条收发消息维护一个事件实体event entity其中telegram_sent事件在机器人发出任意类型消息时触发其属性中包含id消息 ID与chat_idsource/_integrations/telegram_bot.markdown#L413-L456。官方文档特别提示Themessage_idattribute can be used with the edit, delete andset_message_reactionactions to interact with a previously sent message.也就是说事件属性直接可以填进set_message_reaction的data中actions: - action: telegram_bot.set_message_reaction data: message_id: {{ trigger.to_state.attributes.id }} chat_id: {{ trigger.to_state.attributes.chat_id }} reaction: 3. 用 input 实体持久化最近消息的 ID官方文档提供了一个将最近发送消息的chat_id与message_id存入input_number实体的示例自动化source/_integrations/telegram_bot.markdown#L583-L610这些值随后可被set_message_reaction等动作复用alias: Notifications about messages sent by Telegram bot triggers: - trigger: state entity_id: - event.bot_update_event # Replace with your telegram bot event entity conditions: - condition: state entity_id: event.bot_update_event attribute: event_type state: telegram_sent actions: - action: input_number.set_value data_template: value: {{ trigger.to_state.attributes.chat_id }} target: entity_id: input_number.chat_id # Replace with your input entity - action: input_number.set_value data_template: value: {{ trigger.to_state.attributes.message_id }} target: entity_id: input_number.message_id # Replace with your input entity随后在任意其他自动化中即可用保存的值执行回应actions: - action: telegram_bot.set_message_reaction data: message_id: {{ states(input_number.message_id) | int }} chat_id: {{ states(input_number.chat_id) | int }} reaction: is_big: true快速验证不写 YAML 先试一遍按照文档“Try it yourself”一节的做法source/_actions/telegram_bot.set_message_reaction.markdown#L82打开Settings Tools Actions开发者工具 动作搜索set_message_reaction填入字段后点击Perform action即可在不编写 YAML 的情况下在真实聊天中验证效果。排查思路建议先确认目标 Chat ID 已加入集成的白名单子条目否则机器人无权操作该聊天的消息多 bot 场景检查config_entry_id是否与消息实际所属的 bot 条目一致若使用last却回应对了“意料之外的消息”说明期间有其他发送动作介入了建议改用事件属性或 input 实体显式保存的message_id。相关动作set_message_reaction属于 Telegram bot 消息管理动作家族同一域下可配合使用的文档还包括删除消息telegram_bot.delete_message同样支持message_id: last与chat_id定位编辑消息telegram_bot.edit_message编辑消息媒体、编辑回复键盘、编辑说明文字回复回调查询telegram_bot.answer_callback_query配合内联键盘按钮使用发送消息telegram_bot.send_message其response_variable返回值包含chats[].message_id与chats[].chat_id可直接喂给本动作Telegram bot 集成总览平台选型、Chat ID 白名单、事件实体与大量示例自动化。这套组合可以覆盖“发送消息 → 记录 ID → 编辑/加表情/删除”的完整消息生命周期管理是构建 Telegram 通知与交互机器人的基础积木。【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →