【问题标题】:How to send message to telegram as ```code````如何将消息作为“代码”发送到电报
【发布时间】:2021-08-13 16:39:06
【问题描述】:

Sending the output of Prettytable to Telegram

此问题是对先前问题的后续问题。我的代码是这样的:

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 中发送消息,我猜它会保留格式。如何以 格式发送此消息?

【问题讨论】:

    标签: python telegram python-telegram-bot


    【解决方案1】:

    您自己已经解决了:您在问题的标题中使用了三个反引号。在 Markdown 中(包括这里的 SO),您可以在代码块周围放置三个反引号,这使其使用“代码块”格式。

    ``` 这是在代码块内 ```

    您可以在文本的前后添加一个包含三个反引号的行:

    backticked_text = "```\n" + text + "\n```"
    

    【讨论】:

    【解决方案2】:

    尝试通过 Telegram 发送格式化表格是失败的。即使以等宽格式发送表格,您也无法控制换行符。正如 Danya02 已经观察到的那样,换行符取决于客户端、设备(即显示宽度)、字体、字体大小等。如果您想确保用户看到格式良好的表格,请将其发送为 PDF 或图片。

    【讨论】:

      【解决方案3】:

      Telegram 支持降价(至少对于代码)。您可以在文本的开头和结尾(第一行和最后一行)添加```,它应该可以解决

      【讨论】:

        猜你喜欢
        • 2016-04-15
        • 2017-11-01
        • 1970-01-01
        • 2016-03-30
        • 2018-09-02
        • 2015-07-31
        • 2015-07-15
        • 2019-10-30
        • 2020-08-12
        相关资源
        最近更新 更多