簡體   English   中英

在電報機器人 python 中發送長消息

[英]Send long message in telegram bot python

我有一個電報機器人,我想發送一條消息
錯誤消息將返回給我

我的代碼是:

            path = 'C:\\Bot\\Log\\aaa\\*.log' 
            files = glob.glob(path) 
            nlines= 0
            data = "Servers :  \n"
            for name in files: 
                    with open(name) as f:
                        for line in f  :
                            nlines += 1
                            if (line.find("Total") >= 0):
                                data += line
                                for i in range(5):
                                    data += next(f)
                                data += f'\n{emoji.emojize(":blue_heart:")} ----------------------------------------------------{emoji.emojize(":blue_heart:")}\n'    
                            if (line.find("Source") >= 0):
                                data += line

            query.edit_message_text(
                text=f"{data}",
                reply_markup=build_keyboard(number_list),
                  
            )

我的錯誤是:

telegram.error.BadRequest: Message_too_long   

根據此代碼 model,我如何將消息發送給機器人?

由於 Telegram 的每條消息限制為 4096 個字符,因此一種解決方法是將您的消息分解為 4096 個字符,然后發送,並重復到最后。

您可以從以下內容開始:

def slice(val, start=1, stop=None):
    return val[start:stop]


limit = 4096
chars_arr = list(long_message)
length = len(chars_arr)
print(f"Long message length: {length} and limit is {limit}")

# Iterate for batches of 4096
print("".join(slice(chars_arr, 0, 4096)))

它仍然是一個懸而未決的問題,但您可以將請求拆分為每次發送 4089 個字符

你有兩個選擇:

if len(info) > 4096:
    for x in range(0, len(info), 4096):
        bot.send_message(message.chat.id, info[x:x+4096])
    else:
        bot.send_message(message.chat.id, info)

或者

msgs = [message[i:i + 4096] for i in range(0, len(message), 4096)]
for text in msgs:
     update.message.reply_text(text=text)

此代碼可能有效:

if len(info) > 4096:
for x in range(0, len(info), 4096):
bot.send_message(message.chat.id, info[x:x+4096])
else:
bot.send_message(message.chat.id, info)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM