#node.js #telegram-bot
#node.js #telegram-бот
Вопрос:
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>
Я хочу получить какую-нибудь гиперссылку в telegram. Но вместо этого я получаю [hyperlink](http://some_url)
.
Что здесь происходит не так? message
Здесь всегда есть строка , подобная [title](url)
.
Ответ №1:
Причина, по которой ваш не работает, заключается в том, что вы вызвали его parse_mode
вместо parseMode
(см. Документ)
Попробуйте это, это должно сработать.
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
, и вот ответ:
Итак, теперь позвольте мне нажать Google
, и вы увидите всплывающее окно:
ВОТ ТАК. Надеюсь, это поможет
Ответ №2:
Используете ли вы модуль npm node-telegram-bot-api?
Я думаю, вы не хотите использовать 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. Да,
getBySearchQuery(..)
возвращает ожидаемое сообщение2. @EvgenyBagrov тогда вы пробовали использовать
parseMode
в качестве имени параметра вместо этого? github.com/mullwar /…