RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1583643
Accepted
Василий Балин
Василий Балин
Asked:2024-06-12 13:50:54 +0000 UTC2024-06-12 13:50:54 +0000 UTC 2024-06-12 13:50:54 +0000 UTC

如何为 Telegram 聊天机器人编写消息文本,以便其语法被信使识别并根据它进行标记?

  • 772

我需要在一条消息中给出文本和降价表。一切都会好起来的,但这应该由 Telegram 聊天机器人来完成。

这意味着机器人响应某些命令或内联键盘按键,必须向相应的聊天发送包含 Markdown 表的文本消息。每次的文本和表格都是相同的。

当我自己作为用户,在 Telegram 界面中输入消息文本时,两边都有一个用```包围的表格,一切看起来都很漂亮,Messenger 识别并显示 markdown。然而,当使用 传输相同的消息时await bot.send_message(message.chat.id, text_with_markdown_table),我一次又一次地看到聊天中出现的是普通的无格式文本,而不是预期的“美观”。

我尝试在消息中只保留被“``包围的表格 - 但没有帮助。

如何修复它?

python
  • 2 2 个回答
  • 43 Views

2 个回答

  • Voted
  1. GxdTxnz
    2024-06-13T08:42:20Z2024-06-13T08:42:20Z

    机器人的操作逻辑并不完全清楚,但我会尝试回答。如果你只需要显示一个固定的表格,那么可以这样实现:

    import telebot
    
    TOKEN = ' '
    
    bot = telebot.TeleBot(TOKEN)
    
    @bot.message_handler(commands=['table'])
    def send_table(message):
        text_with_markdown_table = """
        ```
        | Заголовок 1 | Заголовок 2 |
        |-------------|-------------|
        | Строка 1    | Строка 1    |
        | Строка 2    | Строка 2    |
        ```
        """
        bot.send_message(message.chat.id, text_with_markdown_table, parse_mode='Markdown')
    
    bot.polling()
    

    如果需要实现一个动态表,标明行数和列数,那么:

    import telebot
    
    TOKEN = ' '
    
    bot = telebot.TeleBot(TOKEN)
    
    @bot.message_handler(commands=['table'])
    def send_table(message):
        try:
            _, rows, cols = message.text.split()
            rows = int(rows)
            cols = int(cols)
        except ValueError:
            bot.send_message(message.chat.id, "Некорректный формат команды. Используйте /table <количество строк> <количество столбцов>")
            return
        except Exception as e:
            bot.send_message(message.chat.id, f"Ошибка: {e}")
            return
    
        headers = "|"
        col_widths = [10] * cols  # Начальная ширина столбцов
        for j in range(cols):
            headers += f" Заголовок {j+1} |"
        headers += "\n"
    
        # Разделительная строка
        separator = "|"
        for width in col_widths:
            separator += "-" * (width + 2) + "|"
        separator += "\n"
    
        table_text = "Таблица:\n```\n"
        table_text += headers
        table_text += separator
    
        for i in range(1, rows + 1):
            table_text += "|"
            for j in range(cols):
                cell_content = f" Строка {i} ".strip()
                col_widths[j] = max(col_widths[j], len(cell_content))  # Обновляем ширину столбца
                table_text += f" {cell_content.ljust(col_widths[j])} |"
            table_text += "\n"
    
        table_text += "```"
    
        bot.send_message(message.chat.id, table_text, parse_mode='Markdown')
    
    bot.polling()
    
    • 1
  2. Best Answer
    Георгий
    2024-06-18T16:11:51Z2024-06-18T16:11:51Z

    转载请注明parse_mode:await bot.send_message(message.chat.id, text_with_markdown_table, parse_mode='MarkdownV2')

    • 1

相关问题

  • 是否可以以某种方式自定义 QTabWidget?

  • telebot.anihelper.ApiException 错误

  • Python。检查一个数字是否是 3 的幂。输出 无

  • 解析多个响应

  • 交换两个数组的元素,以便它们的新内容也反转

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5