如何将消息作为```代码````发送到电报
How to send message to telegram as ```code````
这个问题是之前一个问题的后续问题。我的代码是这样的:
import telegram
from prettytable import PrettyTable
def send_msg(text):
token = "*******:**************"
chat_id = "***********"
bot = telegram.Bot(token=token)
bot.sendMessage(chat_id=chat_id, text=text)
myTable = PrettyTable(["Student Name", "Class", "Section", "Percentage"])
myTable.add_row(["Leanord", "X", "B", "91.2 %"])
myTable.add_row(["Penny", "X", "C", "63.5 %"])
myTable.add_row(["Howard", "X", "A", "90.23 %"])
myTable.add_row(["Bernadette", "X", "D", "92.7 %"])
myTable.add_row(["Sheldon", "X", "A", "98.2 %"])
myTable.add_row(["Raj", "X", "B", "88.1 %"])
myTable.add_row(["Amy", "X", "B", "95.0 %"])
table_txt = myTable.get_string()
with open('output.txt','w') as file:
file.write(table_txt)
new_list = []
with open("output.txt", 'r', encoding="utf-8") as file:
send_msg(file.read())
问题是发送的消息如下所示:
+--------------+-------+---------+------------+
| Student Name | Class | Section | Percentage |
+--------------+-------+---------+------------+
| Leanord | X | B | 91.2 % |
| Penny | X | C | 63.5 % |
| Howard | X | A | 90.23 % |
| Bernadette | X | D | 92.7 % |
| Sheldon | X | A | 98.2 % |
| Raj | X | B | 88.1 % |
| Amy | X | B | 95.0 % |
+--------------+-------+---------+------------+
但是当电报中收到的消息如下所示时:
我该如何解决这个问题? Telegram 允许您在 code
中发送消息,我想它会保留格式。我如何以
格式发送此消息?
Telegram 支持降价(至少代码)。您可以在文本的开头和结尾(第一行和最后一行)添加```,它应该可以解决
您已经自己解决了:您在问题标题中使用了三个反引号。在 Markdown 中(包括此处的 SO),你可以在代码块周围放置三个反引号,这使得它使用“代码块”格式。
```
this is inside a code block
```
您可以在文本的前后添加一行包含三个反引号的行:
backticked_text = "```\n" + text + "\n```"
尝试通过 Telegram 发送格式化的 tables 是失败的原因。即使在等宽发送 table 时,您也无法控制换行符。正如 Danya02 已经观察到的那样,换行符取决于客户端、设备(即显示宽度)、字体、字体大小等。如果要确保用户看到格式正确的 table,请发送它作为 PDF 或图像。
这个问题是之前一个问题的后续问题。我的代码是这样的:
import telegram
from prettytable import PrettyTable
def send_msg(text):
token = "*******:**************"
chat_id = "***********"
bot = telegram.Bot(token=token)
bot.sendMessage(chat_id=chat_id, text=text)
myTable = PrettyTable(["Student Name", "Class", "Section", "Percentage"])
myTable.add_row(["Leanord", "X", "B", "91.2 %"])
myTable.add_row(["Penny", "X", "C", "63.5 %"])
myTable.add_row(["Howard", "X", "A", "90.23 %"])
myTable.add_row(["Bernadette", "X", "D", "92.7 %"])
myTable.add_row(["Sheldon", "X", "A", "98.2 %"])
myTable.add_row(["Raj", "X", "B", "88.1 %"])
myTable.add_row(["Amy", "X", "B", "95.0 %"])
table_txt = myTable.get_string()
with open('output.txt','w') as file:
file.write(table_txt)
new_list = []
with open("output.txt", 'r', encoding="utf-8") as file:
send_msg(file.read())
问题是发送的消息如下所示:
+--------------+-------+---------+------------+
| Student Name | Class | Section | Percentage |
+--------------+-------+---------+------------+
| Leanord | X | B | 91.2 % |
| Penny | X | C | 63.5 % |
| Howard | X | A | 90.23 % |
| Bernadette | X | D | 92.7 % |
| Sheldon | X | A | 98.2 % |
| Raj | X | B | 88.1 % |
| Amy | X | B | 95.0 % |
+--------------+-------+---------+------------+
但是当电报中收到的消息如下所示时:
我该如何解决这个问题? Telegram 允许您在 code
中发送消息,我想它会保留格式。我如何以
格式发送此消息?
Telegram 支持降价(至少代码)。您可以在文本的开头和结尾(第一行和最后一行)添加```,它应该可以解决
您已经自己解决了:您在问题标题中使用了三个反引号。在 Markdown 中(包括此处的 SO),你可以在代码块周围放置三个反引号,这使得它使用“代码块”格式。
``` this is inside a code block ```
您可以在文本的前后添加一行包含三个反引号的行:
backticked_text = "```\n" + text + "\n```"
尝试通过 Telegram 发送格式化的 tables 是失败的原因。即使在等宽发送 table 时,您也无法控制换行符。正如 Danya02 已经观察到的那样,换行符取决于客户端、设备(即显示宽度)、字体、字体大小等。如果要确保用户看到格式正确的 table,请发送它作为 PDF 或图像。