如何在电报机器人的parse_mode中使用“ Markdown”?

时间:2019-04-19 12:17:35

标签: node.js telegram-bot

bot.on(/^\/s (.+)$/, async function(msg, props) {
      let id = msg.chat.id;
      let message = await MyBot.getBySearchQuery(props.match[1]);
      let parse_mode = 'Markdown';
      return bot.sendMessage(id, message, { parse_mode });
    });

通过/s <param>,我想在电报中获得一些hyperlink。但是我得到的不是[hyperlink](http://some_url)

这是怎么回事?这里的message总是像[title](url)这样的字符串。

2 个答案:

答案 0 :(得分:0)

您是否正在使用node-telegram-bot-api npm模块?

我认为您想使用bot.onText方法而不是.on方法。我已经尝试过两者,并且在使用.on时,回调函数永远不会运行。

bot.onText(/^\/s (.+)$/, async function(msg, props) {
  let id = msg.chat.id;
  let message = await MyBot.getBySearchQuery(props.match[1]);
  let parse_mode = 'Markdown';
  return bot.sendMessage(id, message, { parse_mode });
});

您是否尝试过向此方法添加某种日志记录以查看其是否真正运行过,并且您的getBySearchQuery(..)返回的是预期的消息?

答案 1 :(得分:0)

您之所以无法工作的原因是因为您将其称为parse_mode而不是parseModeSee doc

尝试一下,它应该可以工作。

const TeleBot = require('telebot');

const bot = new TeleBot('35353453:sfsdfsdffgrtyrty454646thfhfgfgh')

bot.on(/^\/s (.+)$/, async function(msg, props) {
  const id = msg.chat.id;
  const url = "https://google.com";
  const message = `Read more about [Google](${url}) now!!!!`;

  return bot.sendMessage(id, message, { parseMode: 'Markdown' });
});

bot.start();

好的,我测试了它,并且效果很好。我发送了/s ert,这是回复:

enter image description here

现在让我单击Google,您将看到弹出窗口: enter image description here

您去了。希望对您有帮助