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

Pyrogram无法接收机器人发送频道消息的问题求助

解决Pyrogram无法监听机器人发送的频道消息问题

问题根源

  1. 你用message.copy(channelB)发送的消息,是当前运行的Pyrogram客户端账号发出的,而Pyrogram的on_message默认不会捕获自己账号发送的消息,所以无法触发监听channelB的回调。
  2. 对于其他机器人发送的公开频道消息,可能是因为没有明确过滤机器人消息,或者账号未正确订阅目标频道导致无法接收更新。

解决方案

方案1:直接链式转发(推荐)

不需要绕路监听自己发送到channelB的消息,在处理channelA消息的函数里直接完成向channelB和channelC的转发:

from pyrogram import Client, filters
import logging

logging.basicConfig(level=logging.INFO)

app = Client("my_account")

channelA = 'channelA'
channelB = 'channelB'
channelC = 'channelC'

@app.on_message(filters.chat(channelA))
def forward_to_channels(client, message):
    logging.info(f"Forwarding message from ChannelA: {message.text}")
    # 同时转发到channelB和channelC
    message.copy(channelB)
    message.copy(channelC)

# 额外监听channelB中其他机器人发送的消息(非当前账号发的)
@app.on_message(filters.chat(channelB) & ~filters.me)
def forward_external_to_c(client, message):
    logging.info(f"Forwarding external bot message from ChannelB: {message.text}")
    message.copy(channelC)

app.run()

方案2:监听自己发送的消息

如果必须通过监听channelB来转发,需要显式添加filters.me过滤器,让on_message捕获当前账号发送的消息:

from pyrogram import Client, filters
import logging

logging.basicConfig(level=logging.INFO)

app = Client("my_account")

channelA = 'channelA'
channelB = 'channelB'
channelC = 'channelC'

@app.on_message(filters.chat(channelA))
def forward_to_channelB(client, message):
    logging.info(f"Forwarding message from ChannelA: {message.text}")
    message.copy(channelB)

# 监听channelB的所有消息:自己发的 + 其他机器人发的
@app.on_message(filters.chat(channelB) & (filters.me | filters.bot))
def forward_to_channelC(client, message):
    logging.info(f"Forwarding message from ChannelB: {message.text}")
    message.copy(channelC)

app.run()

额外注意事项

  • 对于公开频道的机器人消息,确保你的Pyrogram账号已经订阅了该频道,否则无法接收频道更新。
  • filters.bot可以精准过滤机器人发送的消息,避免捕获普通用户的消息。
  • 不要依赖on_raw_update处理这类场景,解析原始MTProto数据会增加不必要的复杂度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 01:22:45