0

我编写了一个代码来将消息从源复制到目标聊天使用 pyrogram python 库。代码可以正常工作,但它会从源聊天中制作绝对的消息副本。

我的代码示例:

#!/usr/bin/env python3
from pyrogram import Client
from pyrogram import filters

# ~~~~~~ CONFIG ~~~~~~~~ #
ACCOUNT = "@account"
PHONE_NR = 'number'

API_ID = APIID
API_HASH = "APIHASH"

app = Client( ACCOUNT, phone_number=PHONE_NR, api_id=API_ID, api_hash=API_HASH )

### CHAT ID

# Variables
SOURCE_CHAT_A = chat_id
TARGET_CHAT_A = chat_id
# ~~~~~~~~~~~~~~~~~~~~~~ #

# Commands
@app.on_message(filters.chat(SOURCE_CHAT_A))
def copy_to_channel(client, message):
    message.copy(  chat_id=TARGET_CHAT_A  ) 

app.run()

是否可以将消息分成几部分并将源聊天中的大消息打印为目标聊天中的少量小消息?

例如,如果是来自源聊天的消息:

Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage 
Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage 
Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage 
Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage 

Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage 
Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage 
Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage
Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage  

Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage 
Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage 
Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage
Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage 

比在目标聊天中会出现 3 条单独的消息:

Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage 
Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage 
Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage 
Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage
Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage 
Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage 
Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage 
Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage  
Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage 
Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage 
Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage 
Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage Testmessage 

我的 python 水平绝对不够高,我已经坐了一周的时间来解决这个问题并且找不到解决方案。感谢任何类型的帮助:)

4

1 回答 1

0

假设您想拆分双换行符,您可以这样做:

@app.on_message(filters.chat(SOURCE_CHAT_A))
def copy_to_channel(client, message):
    # split message text on double newlines
    messages = message.text.split("\n\n")
    # send each message to the target chat
    for message in messages:
        client.send_message(TARGET_CHAT_A, message)

或者要将消息拆分为 300 个字符,您可以使用字符串切片。在以 300 递增的范围上循环以获取每个批次的起始索引,然后发送切片字符串:

@app.on_message(filters.chat(SOURCE_CHAT_A))
def copy_to_channel(client, message):
    # split message into batches of 300 characters
    for i in range(0, len(message.text), 300):
        client.send_message(
            chat_id=SOURCE_CHAT_B,
            text=message.text[i:i+300]
        )
于 2021-12-21T12:29:45.280 回答