简体   繁体   English

拆分消息电报机器人热图

[英]Split message telegram bot pyrogram

I have written an code to copy messages from source to destination chats used pyrogram python library.我已经编写了一个代码来将消息从源复制到目标聊天使用 pyrogram python 库。 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:比在目标聊天中会出现 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 

My python level is absolutely not high enough, im sitting already a week with that problem and cant found a solution.我的 python 级别绝对不够高,我已经坐了一周这个问题并且找不到解决方案。 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)
@app.on_message(filters.text & filters.chat(SOURCE_CHAT_TEST))
def copy_to_channel(client, message):
    if bool(message.photo) == True:
        print(bool(message.photo)),
        print(len(message.text)),
        print("bool 1")
        message.copy(  chat_id=TARGET_CHAT_TEST  )
    if len(message.text) >= 1000:
        print(bool(message.photo)),
        print(len(message.text)),
        print("1000+")
        for i in range(0, len(message.text), 1000):
            time.sleep(2)
            client.send_message(
                chat_id=TARGET_CHAT_TEST,
                text=message.text[i:i+1000])
    else:
        print(bool(message.photo)),
        print(len(message.text)),
        print("1000> and bool false")
        message.copy(  chat_id=TARGET_CHAT_TEST  )

app.run()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM