如何使用Pyrogram无错误发送Premium Emoji?
错误原因分析
- 使用
MessageEntityCustomEmoji报错'MessageEntityCustomEmoji' object has no attribute '_client',是因为实体构造或关联方式有误,未被Pyrogram正确处理客户端绑定。 - 使用普通
MessageEntity无法显示表情,是因为该实体类型不支持Premium自定义表情,必须使用专属的MessageEntityCustomEmoji类型。
正确实现代码
from pyrogram import Client from pyrogram.types import MessageEntityCustomEmoji # 初始化客户端 app = Client("your_session_name") async def send_premium_emoji(): async with app: # 替换为目标聊天ID(用户名、数字ID均可) target_chat = "test_chat" # 从Telegram客户端获取的Premium表情ID(右键表情→复制链接,提取emoji_id参数) custom_emoji_id = 1234567890123456789 # 文本占位符:需要与实体的length对应,这里用1个空格 message_text = " " # 构造自定义表情实体:偏移量0,长度1,绑定表情ID emoji_entity = MessageEntityCustomEmoji( offset=0, length=1, custom_emoji_id=custom_emoji_id ) # 发送消息,传入文本和实体列表 await app.send_message( chat_id=target_chat, text=message_text, entities=[emoji_entity] ) # 运行客户端 app.run(send_premium_emoji())
关键注意事项
- 获取正确的表情ID:在Telegram官方客户端中,右键点击目标Premium表情,选择「复制链接」,链接中的
emoji_id字段就是需要的ID(一串数字)。 - 文本占位符匹配:消息文本必须包含与实体
length长度一致的字符(比如示例中的1个空格),自定义表情会替换这个位置的文本显示。 - 实体类型正确:必须使用
pyrogram.types.MessageEntityCustomEmoji,不能用通用的MessageEntity,否则无法识别Premium表情。
内容的提问来源于stack exchange,提问作者otobrazhaemoe_imya
相关产品推荐
相关产品推荐

