Telegram的表情回应(Reactions)功能为聊天互动增添了丰富的情感表达。而通过官方Bot API,机器人同样可以发送表情回应,甚至做到「自定义」——根据消息内容自动选择特定表情。本文将带你从零开始,掌握Telegram机器人自定义表情回应的完整实现方案。
什么是Telegram表情回应与自定义表情
Telegram的表情回应允许用户对单条消息快速添加表情符号,目前支持默认emoji和自定义贴纸档(Custom Emoji)。机器人通过setMessageReaction方法,可以对指定消息添加或移除表情回应。自定义表情回应则是指机器人根据预设规则,灵活选择回应表情,而非固定一种,从而实现更智能的互动体验。
机器人自定义表情回应的应用场景
- 自动反馈:当用户发送「赞」时,机器人自动回一个👍或自定义点赞贴纸。
- 群管理:对违规消息自动回应⛔,提醒管理员注意。
- 趣味互动:随机对消息投掷🎲或自定义表情,增加活跃度。
- 情绪识别:根据关键词(如开心、难过)匹配对应表情。
准备工作:创建机器人并获取Token
- 在Telegram中与@BotFather对话,发送
/newbot,按提示设置名称和用户名。 - 创建成功后,BotFather会返回API Token,请妥善保存。
- 如果需要使用自定义表情(Custom Emoji),请确保你的Telegram账号为Premium,或使用已有自定义贴纸包的ID。
使用Bot API发送表情回应(setMessageReaction)
Bot API的setMessageReaction方法允许机器人对消息添加反应。基本请求格式如下:
POST https://api.telegram.org/bot<token>/setMessageReaction
{
"chat_id": "@example_chat",
"message_id": 42,
"reaction": [{"type": "emoji", "emoji": "👍"}]
}其中reaction是一个数组,支持传递多个表情。如果想使用自定义emoji,只需将type改为custom_emoji并传递custom_emoji_id。
自定义表情回应的实现思路
要实现“自定义”,通常需要:
- 监听消息:通过
getUpdates或Webhook接收用户消息。 - 处理规则:编写关键词、正则或随机逻辑,决定回应哪种表情。
- 调用API:使用
sendMessage或setMessageReaction发送回应。
最简单的做法是:当收到特定消息时,调用setMessageReaction直接对用户的消息添加反应,这样无需额外发送一条消息。
完整示例:基于关键词自动回应自定义表情
下面以Python为例,使用requests库实现一个关键词触发反应的服务(需配合Webhook或长轮询)。
import requests
TOKEN = "你的BOT_TOKEN"
def set_reaction(chat_id, message_id, emoji):
url = f"https://api.telegram.org/bot/setMessageReaction"
payload = {
"chat_id": chat_id,
"message_id": message_id,
"reaction": [{"type": "emoji", "emoji": emoji}]
}
requests.post(url, json=payload)
# 伪代码:处理更新的循环(省略getUpdates解析)
for update in get_updates():
msg = update["message"]
text = msg.get("text", "")
chat_id = msg["chat"]["id"]
message_id = msg["message_id"]
if "棒" in text:
set_reaction(chat_id, message_id, "👍")
elif "哈哈" in text:
set_reaction(chat_id, message_id, "😄")如需使用自定义emoji,可先通过getCustomEmojiStickers获取ID,然后修改reaction数组。
高级技巧:随机表情、按用户反应、自定义emoji使用
随机表情
结合Python的random模块,从表情列表中随机选择:
import random
emojis = ["🎉", "🔥", "❤️", "🤖"]
set_reaction(chat_id, message_id, random.choice(emojis))按用户反应触发
监听message_reaction更新,当用户对消息添加反应时,机器人可做出后续动作(例如记录或回赠表情)。
自定义emoji的使用
自定义emoji需要Premium身份或有权限的操作者。你可以通过getCustomEmojiStickers获取emoji ID,然后在reaction中设置:
{"type": "custom_emoji", "custom_emoji_id": "5368324170671202286"}注意事项与限制
- 机器人必须为聊天成员,且拥有相应权限(如匿名管理时可能受限)。
setMessageReaction要求消息时间不能超过多久,具体参考官方文档。- 自定义emoji只有Premium用户创建才能被机器人使用,且需确保emoji包存在。
- 反应数量有限制,每条消息最多约5-6个反应,请合理设计。
总结
官方Bot API提供的表情回应功能为机器人交互开辟了新思路。通过自定义表情回应,你可以打造个性十足、互动性强的Telegram机器人。从基础调用到高级随机策略,本文已为你铺平道路。现在就去BotFather创建一个机器人,开启你的自定义表情互动之旅吧!