简体   繁体   中英

How to use 'Markdown' in parse_mode of 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 });
    });

By /s <param> I want to get some hyperlink in telegram. But instead of that I'm getting [hyperlink](http://some_url) .

What is going wrong here? The message here is always a string like [title](url) .

Are you using the node-telegram-bot-api npm module?

I think you want to be using bot.onText method not .on . I've just tried with both, and when using .on the callback function never runs.

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 });
});

Have you tried adding some kind of logging to this method to see if it ever actually runs, and that your getBySearchQuery(..) is returning the expected message?

This reason yours isn't working is because you called it parse_mode instead of parseMode ( See doc )

Try this, it should work.

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();

Okay, I tested it and it works well. I sent /s ert and here was the response:

在此输入图像描述

So now let me click Google and you'll see the popup: 在此输入图像描述

THERE YOU GO. Hope it helps

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM