You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pyrogram无错误发送Premium Emoji?

解决Pyrogram发送Telegram Premium自定义表情的问题

错误原因分析

  • 使用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())

关键注意事项

  1. 获取正确的表情ID:在Telegram官方客户端中,右键点击目标Premium表情,选择「复制链接」,链接中的emoji_id字段就是需要的ID(一串数字)。
  2. 文本占位符匹配:消息文本必须包含与实体length长度一致的字符(比如示例中的1个空格),自定义表情会替换这个位置的文本显示。
  3. 实体类型正确:必须使用pyrogram.types.MessageEntityCustomEmoji,不能用通用的MessageEntity,否则无法识别Premium表情。

内容的提问来源于stack exchange,提问作者otobrazhaemoe_imya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 23:41:11