如何用Telegram Bot发送自定义表情?代码失效求低成本方案
问题描述
我用grammy.js写了一段JavaScript代码尝试发送Telegram自定义表情,但无法正常运行。代码如下:
const message = "🚀 dsfs"; teleBot.api.sendMessage(CHANNEL_ID || "", message, { entities: [ { type: "custom_emoji", length: message.length, offset: 0, custom_emoji_id: "5100686784019301387", }, ], });
我查了相关讨论,发现现有方案都提到要在Fragment购买价值5000 TON(约44000美元)的用户名并绑定到Bot,但Telegram Premium仅需33美元/年,想知道有没有更简便的方法,另外能不能用userbot发送自定义表情?
解答
1. 修复代码本身的问题
你的代码里custom_emoji实体的length设置错误:你把整个消息的长度都设为实体长度,但实际上自定义表情只对应消息开头的🚀,这个字符的长度是1。正确的实体配置应该只覆盖这个表情的位置,修正后的代码:
const message = "🚀 dsfs"; teleBot.api.sendMessage(CHANNEL_ID || "", message, { entities: [ { type: "custom_emoji", length: 1, // 仅覆盖表情字符 offset: 0, custom_emoji_id: "5100686784019301387", }, ], });
不过即使修正了代码,Bot要发送自定义表情还是需要满足权限要求。
2. Bot发送自定义表情的权限限制
目前Telegram官方的规则是:只有绑定了通过Fragment购买的认证自定义用户名的Bot,才能发送自定义表情。Telegram Premium的权限是针对普通用户账号的,和Bot账号无关,所以开通Premium不能让Bot获得发送自定义表情的权限,也没有官方的低成本替代方案。
3. Userbot发送自定义表情的可行性
可以用userbot发送自定义表情。Userbot本质是模拟普通用户账号的自动化工具,只要你用来运行userbot的普通用户账号开通了Telegram Premium,就可以像正常用户一样发送自定义表情,不需要依赖Bot的特殊权限。
内容的提问来源于stack exchange,提问作者Zero
相关产品推荐
相关产品推荐

