【问题标题】:Telegram Bot: Forwarding Messages from Private GroupTelegram Bot:从私人群组转发消息
【发布时间】:2021-08-08 00:36:31
【问题描述】:

有没有什么方法可以使用 Python / JS 转发我作为成员在私有只读组中收到的消息?我正在尝试使用 python-telegram-bot 进行设置,但似乎我必须将机器人添加到组中,以使其与组中发送的内容进行交互。但我不能因为我只是一个阅读/接收成员......

有没有办法不使用 Telegram API,而是使用某种 JS 浏览器自动化来转发这些?这是我唯一想到的……在此先感谢!

【问题讨论】:

    标签: javascript python telegram telegram-bot


    【解决方案1】:

    回答我自己的问题以防有人需要。

    正如@CallMeStag 所指出的,需要一个支持“用户机器人”的库。这些是直接实现 MTProto 的库。

    对于 python,例如Pyrogram 非常适合且非常易于使用。

    首先,需要一个 API 密钥和 API 哈希来识别 Telegram 服务器上的 Python 脚本,以便在 MTProto 中进行通信。

    https://my.telegram.org/auth?to=apps -> 使用您的凭据登录并创建一个“应用程序”。将它们定义为下面的API_IDAPI_HASH

    现在,我使用此代码将消息从SOURCE_CHAT 复制到TARGET_chat

    #!/usr/bin/env python3
    from pyrogram import Client
    from pyrogram import filters
    
    # ~~~~~~ CONFIG ~~~~~~~~ #
    ACCOUNT = "@xy"
    PHONE_NR = '+49....'
    
    # https://my.telegram.org/auth?to=apps
    API_ID = 1111111 
    API_HASH = "your_hash"
    
    # CHAT ID
    SOURCE_CHAT = -11111 
    TARGET_CHAT = -22222
    # ~~~~~~~~~~~~~~~~~~~~~~ #
    
    app = Client(
        ACCOUNT,
        phone_number=PHONE_NR,
        api_id=API_ID,
        api_hash=API_HASH
    )
    
    # filters.chat(SOURCE_CHAT)
    @app.on_message(filters.chat(SOURCE_CHAT))
    def my_handler(client, message):
        message.copy(  # copy() so there's no "forwarded from" header
            chat_id=TARGET_CHAT,  # the channel you want to post to
            caption="Copied from XYZ"  # Caption
        )
    
    app.run()
    

    为了找出源和目标的CHAT_ID,我暂时禁用了过滤器,并打印了消息。

    @app.on_message()
    def my_handler(client, message):
        print(message)
    

    这样做,您可以:每当收到特定群组中的消息时,您都可以找到message.chat.id(注意:负值!)。在上面的完整脚本中为SOURCE_CHATTARGET_CHAT 配置它们。

    编辑: 无需某人先在频道/群组/私人/聊天中发送消息即可获取所有对话的所有聊天 ID 的另一种选择:

    def getAllChatIDs():
        for x in app.get_dialogs():
            print (x.chat.type, x.chat.title, x.chat.id)
    

    只需调用一次,你就会得到一个对话列表:)

    【讨论】:

      【解决方案2】:

      Telegram Bots 确实不可能 - 你必须将它们添加到组中。但是,您可以使用所谓的“用户机器人”自动化您的个人帐户。 Here 是一篇关于他们的文章。

      【讨论】:

      • 谢谢,这对我有很大帮助 - 不知道。但现在我有了一个很好的起点/关键字来开始研究。非常感谢!
      • 我发现“Pyrogram”可以通过MTProto API直接“使用”用户帐户!它看起来太棒了!还有一个问题:你知道群主能不能看到我在转发消息吗? (独立是手动还是自动完成)。还是组管理员看不到这些信息?
      • AFAIK 群主无法看到,没有
      • 您是否偶然知道电报是否更改了其 API,可能允许频道所有者禁止用户机器人访问内容?因为我的用户机器人似乎能够访问除一个频道之外的每个聊天/群组/频道的所有消息。
      • 可能是由于相当新的protected content
      猜你喜欢
      • 2016-04-06
      • 2018-05-17
      • 1970-01-01
      • 2021-06-07
      • 1970-01-01
      • 2017-11-28
      • 1970-01-01
      • 2020-03-26
      • 2020-08-27
      相关资源
      最近更新 更多