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

如何修复Pyrogram在Telegram群组话题中的回复位置问题?

解决Telegram群组话题回复位置错误的问题

修复Pyrogram代码的方案

问题出在message.reply()方法未明确指定话题ID,导致默认发送到General话题。改用client.send_message()并手动传入原消息的聊天ID和话题ID,即可将回复发送到对应话题,且天然不引用原消息。

修改后的代码:

bot = Client(name=login, api_id=api_id, api_hash=api_hash, phone_number=phone)

@bot.on_message(filters.text)
async def command_handler(client: Client, message: Message):
    if re.match(pattern, message.text):
        # 获取原消息所在的聊天ID和话题ID
        chat_id = message.chat.id
        thread_id = message.message_thread_id
        # 发送消息到对应话题
        await client.send_message(
            chat_id=chat_id,
            text="this is reply",
            message_thread_id=thread_id
        )

说明:message.message_thread_id会自动获取原消息所属的话题ID,若原消息在General话题,该值会被Pyrogram自动处理为默认话题,无需额外判断。

可选的其他Telegram开发库

python-telegram-bot

这是另一个主流的Telegram Bot开发库,支持话题消息处理,核心逻辑类似:

from telegram import Update
from telegram.ext import Updater, MessageHandler, Filters, CallbackContext
import re

def command_handler(update: Update, context: CallbackContext):
    if re.match(pattern, update.effective_message.text):
        chat_id = update.effective_chat.id
        thread_id = update.effective_message.message_thread_id
        context.bot.send_message(
            chat_id=chat_id,
            text="this is reply",
            message_thread_id=thread_id
        )

# 初始化Updater并注册处理器(示例框架)
updater = Updater(token="YOUR_BOT_TOKEN")
updater.dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, command_handler))
updater.start_polling()
updater.idle()

Telethon

面向Telegram用户/机器人的全功能库,处理话题回复的方式如下:

from telethon import TelegramClient, events
import re

client = TelegramClient(login, api_id, api_hash)

@client.on(events.NewMessage(pattern=pattern))
async def command_handler(event):
    # 获取聊天ID和话题ID
    chat_id = event.chat_id
    thread_id = event.message.thread.id if event.message.thread else None
    # 发送到对应话题
    await client.send_message(
        chat_id,
        "this is reply",
        message_thread_id=thread_id
    )

client.start(phone=phone)
client.run_until_disconnected()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 18:12:19