kangkangawfa 2023-09-21 18:43 采纳率: 0%
浏览 151
已结题

telegram api 使用forward_messages方法转发消息时,目标群组里面会出现此消息来源,如何隐藏?

代码片段如下,使用了forward_messages转发消息

img

效果:
每一条转发过来的消息都会有一个转发自,查阅官方文档依然得不到解决

img


按照官方文档说明,使用此参数就行,但是使用后,forward_messages方法根本就没有这个参数

img

import time


import socket

import socks
from telethon import TelegramClient

socks.set_default_proxy(socks.SOCKS5, "127.0.0.1", 1086)
socket.socket = socks.socksocket

api_id = 'xxxxxxxxxxxx'
api_hash = 'x xxxxxxxxxxxx xxxxxxxxxxxx x'

# 创建 Telegram 客户端
client = TelegramClient('my_session', api_id, api_hash)

async def main():
    # 启动客户端
    await client.start()

    #历史消息的频道的 Username 或 Chat ID
    source_chat = 'xxxxxxxxxxxx'
    target_chat = 'xxxxxxxxxxxx'

    start_message_id = 63887
    message_ids = []
    messages_to_forward = []

    async for message in client.iter_messages(source_chat, min_id=start_message_id - 1, reverse=True):
        print(f'Message ID: {message.id}, Text: {message.text},时间为{message.date}')

        # 添加消息到待转发列表
        messages_to_forward.append(message)

        # 检查是否需要转发当前组的消息
        if len(messages_to_forward) >= 10 or (message_ids and message.date.timestamp() - message_date >= 2):
            # 如果当前组的第一个消息没有合并到当前组,手动添加第一个消息并转发
            if message_ids and message_ids[0] not in [msg.id for msg in messages_to_forward]:
                first_message_id = message_ids[0]
                first_message = await client.get_messages(source_chat, ids=first_message_id)
                messages_to_forward.insert(0, first_message)
            messages_to_forward.pop()
            # 使用 forward_messages 方法将一组消息从源频道转发到目标聊天
            print(messages_to_forward)
            await client.forward_messages(target_chat, messages=messages_to_forward,disable_notification=True)

            # 清空消息列表
            message_ids = []
            messages_to_forward = []
            time.sleep(1)
        # 更新时间戳和消息 ID 列表
        message_date = message.date.timestamp()
        message_ids.append(message.id)


if __name__ == '__main__':
    import asyncio
    asyncio.run(main())

  • 写回答

10条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2023-09-28 08:15
    关注
    获得0.90元问题酬金

    要隐藏消息来源,你可以使用消息转发时的 disable_notification 参数,并将其设置为 True。这样,在目标群组中转发的消息将不会有任何标记或通知。在你的代码中,将 disable_notification=True 添加到 client.forward_messages 方法的参数中即可隐藏消息来源。

    评论

报告相同问题?

问题事件

  • 系统已结题 9月29日
  • 修改了问题 9月21日
  • 创建了问题 9月21日