I have written an code to copy messages from source to destination chats used pyrogram python library. Code work fine, but its making absolute copy of messages from source chat.
Example of my code:
#!/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()
Is it possible to split message in pieces and print big messages from source chat as few small messages in destination chat?
For example, if it is message from source chat:
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
Than in destination chat will come 3 separated messages:
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
My python level is absolutely not high enough, im sitting already a week with that problem and cant found a solution. Thanks for any type of help :)
Say you want to split on the double newline characters, you could do it like this:
@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)
Or to split the message on 300 characters you can use string slicing. Loop on a range that increments with 300 to get the starting index of each batch, then send the sliced string:
@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]
)