如何使用Pyrogram在Telegram中实现指定样式的引用消息?
如何在Telegram中编写引用消息(Pyrogram实现)
两种引用类型的区别
Telegram中有两种常见的引用形式:
- 内联文本引用:使用
>符号标记的文本块,仅用于文本格式化。 - 消息引用(回复式引用):引用聊天中已存在的消息,会显示原消息预览(包含发送者、时间等信息),点击可跳转至原消息。
1. 实现内联文本引用(你的代码改进)
你的当前代码已实现单条内联引用,若要实现多行块引用,只需在每一行前添加>:
@app.on_message() async def send_quoted_message(client, message): await app.send_message( chat_id=message.chat.id, text="> 这是第一行引用内容\n> 这是第二行引用内容\n\n这是引用下方的普通文本", parse_mode='markdown' )
2. 实现消息引用(回复式引用)
如果目标是引用聊天中已存在的消息(显示原消息预览的形式),需使用reply_to_message_id参数指定要引用的消息ID:
@app.on_message() async def send_message_quote(client, message): # 引用触发该函数的用户消息 await app.send_message( chat_id=message.chat.id, text="这是我的回复内容,同时引用了你的消息", reply_to_message_id=message.message_id # 指定要引用的消息ID )
若要引用聊天中的其他消息,只需将reply_to_message_id替换为目标消息的ID即可。
3. 自定义文本引用(模拟消息引用样式)
如果需要创建不依赖现有消息的自定义引用(模拟消息引用样式),可使用Pyrogram的MessageEntityTextQuote实体:
from pyrogram.types import MessageEntity, MessageEntityTextQuote @app.on_message() async def send_custom_quote(client, message): quoted_text = "要引用的自定义文本" reply_text = "这是引用下方的回复内容" await app.send_message( chat_id=message.chat.id, text=f"{quoted_text}\n{reply_text}", entities=[ MessageEntityTextQuote( offset=0, length=len(quoted_text), chat_id=message.chat.id, message_id=message.message_id # 需绑定真实存在的消息ID ) ] )
内容的提问来源于stack exchange,提问作者صـوفـيـي M
相关产品推荐
相关产品推荐

