Telegram Bot 如何直接发送 HTML 文件?

Telegram Bot how to send HTML file directly?

我使用 HTML 创建了一个游戏,现在我正在尝试将其导入我的 js 文件,然后发送给用户。

到目前为止,这是我的代码

const { Telegraf } = require('telegraf')
const bot = new Telegraf(process.env.BOT_TOKEN);
const test = require('./index.html');

bot.hears('?', ctx => {
//   console.log(ctx.from)
  let msg = `Spin the wheel`;
  ctx.deleteMessage();
  bot.telegram.sendMessage(ctx.chat.id, msg, {
      reply_markup: {
          inline_keyboard: [
              [{
                      text: "SPIN",
                      callback_data: 'wheeloffortune'
                  }
              ],
          ]
      }
  })
})


bot.action('wheeloffortune', ctx => {
    bot.telegram.sendMessage(ctx.chat.id, test, {parse_mode: 'HTML'});
})

但是我收到了这个错误

<!DOCTYPE html>
^

SyntaxError: Unexpected token '<'

如有任何建议,我们将不胜感激

如 Telegram BOT API 的 documentation 所述,html 类型的 parse_mode 仅支持少数标签。因此,您无法将游戏的 html 文件发送到 parse_mode 设置为 html 的用户的聊天室。

文档是这样说的:

要使用此模式,请在 parse_mode 字段中传递 HTML。目前支持以下标签:

<b>bold</b>, <strong>bold</strong>
<i>italic</i>, <em>italic</em>
<u>underline</u>, <ins>underline</ins>
<s>strikethrough</s>, <strike>strikethrough</strike>, <del>strikethrough</del>
<span class="tg-spoiler">spoiler</span>, <tg-spoiler>spoiler</tg-spoiler>
<b>bold <i>italic bold <s>italic bold strikethrough <span class="tg-spoiler">italic bold strikethrough spoiler</span></s> <u>underline italic bold</u></i> bold</b>
<a href="http://www.example.com/">inline URL</a>
<a href="tg://user?id=123456789">inline mention of a user</a>
<code>inline fixed-width code</code>
<pre>pre-formatted fixed-width code block</pre>
<pre><code class="language-python">pre-formatted fixed-width code block written in the Python programming language</code></pre>
  • 目前仅支持上述标签。
  • 所有不属于标签或 HTML 实体的 <、> 和 & 符号必须替换为相应的 HTML 实体(< 与 <、> 与 > 和 &与 &).
  • 支持所有数字 HTML 实体。
  • API 目前仅支持以下命名的 HTML 实体:<、>、& 和“.
  • 使用嵌套的前置和代码标签,为前置实体定义编程语言。
  • 无法为独立代码标签指定编程语言。