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_”),它仍然可以打印到终端,只是无法发送到电报(没有错误)。
有人可以帮我找出错误吗?
试试这个:
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)