Pyrogram:用于读取和复制电报消息的 MTProto

Pyrogram: MTProto to read and copy telegram messages

我正在使用一个非常简单的代码来收听两个特定的电报输入通道并将所有收到的消息复制到一个目标通道。我正在使用实现 MTProto 的 Pyrogram,因为我不是源频道的管理员,我只是一个 reader - 因此我不能使用常规 BOT API,因为我的 BOT 不会添加到源频道 - 相反,我需要依赖用户机器人 API -> MTProto.

到目前为止,我一直在使用 Pyrogram 1.2.9,直到大约 4 周前它都运行良好。

我的代码非常简单明了:

#!/usr/bin/env python3
from pyrogram import Client
from pyrogram import filters
import sys, traceback
from datetime import datetime

# ~~~~~~ CONFIG ~~~~~~~~ #
ACCOUNT = "..."
PHONE_NR = '...'

# API ID and Hash from https://my.telegram.org/auth?to=apps
API_ID = 58111111111
API_HASH = "2234tsdfxxxxxxxxxxxxxxxxxxxxx65"

# Channel IDs...
INPUT__official = -100132xxxxxx        
INPUT__testchannel = -100164yyyyyy    
OUTPUT__MT_FORWARD_CHAT_ID = -100146xxxxx
# ~~~~~~~~~~~~~~~~~~~~~~ #
try:
    app = Client(
        ACCOUNT,
        phone_number=PHONE_NR,
        api_id=API_ID,
        api_hash=API_HASH
    )

    f = filters.chat(INPUT__official) | filters.chat(INPUT__testchannel)
    @app.on_message(f)
    def my_handler(client, message):
        print(message)
        # copy() so there's no "forwarded from" header
        message.copy(chat_id=OUTPUT__MT_FORWARD_CHAT_ID,  caption="")

    app.run() 

奇怪的是: 如果我删除过滤器 f,我会看到来自各种聊天/频道的消息被成功打印并复制到目标频道。

但是对于一个特定的源频道,我看不到任何收到的消息,即使我在我的智能手机上的电报应用程序中看到它们 - 是否添加了一个新设置来禁止 MTProto 用户机器人读取特定组/频道?

非常感谢!

是的。添加了一个名为 Restrict Saving Content(或 content protection

的新设置

任何频道所有者都可以启用它,这将阻止用户转发甚至复制包括文本在内的内容。