如何通过Telegram API让机器人发送自定义表情(Custom Emoji)
使用Telegram API发送自定义表情(custom_emoji)的问题与解决
问题描述
尝试通过Telegram API的MessageEntity对象发送custom_emoji,使用Telegraf TS编写的代码如下:
const message = '🚀' ctx.sendMessage({ text: message, entities: [{ type: 'custom_emoji', length: message.length, offset: 0, custom_emoji_id: '5389102131527556772' }] })
注:使用Telegraf TS不影响核心功能。
解决方法
这段代码无法正常触发自定义表情的原因是text字段的占位内容错误:当使用custom_emoji类型的实体时,text中对应位置不能是普通表情,需要用一个占位符字符(比如单个空格、零宽度空格\u{200B}),Telegram会用指定的自定义表情替换这个占位符。
修正后的代码:
// 用单个空格作为占位符 const message = ' ' ctx.sendMessage({ text: message, entities: [{ type: 'custom_emoji', length: message.length, offset: 0, custom_emoji_id: '5389102131527556772' }] })
额外注意事项:
- 确认Bot在目标聊天中有权限发送自定义表情,且目标表情ID属于你有权限使用的表情包
custom_emoji_id必须是有效的官方ID,可通过抓取已发送的自定义表情消息实体获取正确格式
内容的提问来源于stack exchange,提问作者chakzefir
相关产品推荐
相关产品推荐

