添加一个前缀并向电报机器人发送文本失败

问题描述 投票:0回答:1
import requests
import json
import pandas as pd
import numpy as np

TOKEN = '......'
chat_id = '.......'

nparr = np.array(['a','b'])

message = ''    
df2 = pd.DataFrame({'Weight':[45, 88, 56, 15, 71], 
                'Name':['Sam', 'Andrea', 'Alex', 'Robin', 'Kia'], 
                'Age':[14, 25, 55, 8, 21]}) 
message = df2.to_string(index=False, header=False)
message = f'```\n{message}```'  # to keep table pretty when reached telegram
message = np.array2string(nparr) +  'some\n' + message
# message = 'for testing_' + message
message = message + '\ntime:....' 

url = f"https://api.telegram.org/bot{TOKEN}/sendMessage?chat_id={chat_id}&text={message}&parse_mode=Markdown"
response = requests.get(url)
print(message)

在向电报机器人发送文本时,我可以向消息添加前缀字符串和后缀字符串,所有这些都有效,直到我向消息添加特定的前缀字符串,并且它没有发送。

我特意编写了上面的测试代码,该代码经过简化,包含我在实际情况下需要使用的所有内容 - numpy 数组到字符串、数据帧到字符串、在到达电报时保持表格格式漂亮等。此测试代码有效(发送到两个终端)和电报),但如果我取消注释第 18 行(在消息中添加前缀“fortesting_”),它仍然可以打印到终端,只是无法发送到电报(没有错误)。

有人可以帮我找出错误吗?

python python-requests telegram-bot
1个回答
0
投票

试试这个:

import requests
import json
import pandas as pd
import numpy as np
import urllib.parse

TOKEN = '......'
chat_id = '.......'

nparr = np.array(['a', 'b'])

message = ''
df2 = pd.DataFrame({'Weight':[45, 88, 56, 15, 71], 
                    'Name':['Sam', 'Andrea', 'Alex', 'Robin', 'Kia'], 
                    'Age':[14, 25, 55, 8, 21]})

message = df2.to_string(index=False, header=False)
message = f'```\n{message}```'  # to keep table pretty when reached telegram
message = np.array2string(nparr) +  'some\n' + message
# Ensure the prefix string is properly encoded
prefix = 'for testing_'
message = urllib.parse.quote(prefix + message) + '\ntime:....'

url = f"https://api.telegram.org/bot{TOKEN}/sendMessage?chat_id={chat_id}&text={message}&parse_mode=Markdown"
response = requests.get(url)
print(message)
© www.soinside.com 2019 - 2024. All rights reserved.