В Telegram боты умеют отсылать не только простой, но и отформатированный текст, в том числе содержащий внутри себя ссылки. Для этого при отправке сообщения ставится параметр parse_mode = MARKDOWN или parse_mode = HTML.
Я хочу поставить в тексте отправляемого сообщения внутреннюю ссылку, т.е., например, команду на выполнение следующего шага, действия бота. Обычно в этом случае прибегают к «кастомной клавиатуре», но в моём случае получается слишком много кнопок клавиатуры со слишком длинным текстом. Да, можно просто пронумеровать команды и выводить клавиатуру с кнопками-цифрами, но от этого резко теряется читабельность и удобство взаимодействия с ботом.
Можно ставить ссылку вида telegram.me/my_bot?nextcommand, но она обязательно открывает сначала браузер, так что этот вариант тоже не подходит. Есть ли какая-то возможность вставлять в отправляемые ботом сообщения внутренние ссылки?
Можете делать /nextcommand и все
либо /step_{key} - где key генерируется индивидуально для пользователя в данный момент и где-то хранится.
На самом деле очень много свободы действий, выбирайте то, что удобнее вам в реализации и пользователю в использовании.
Про кастомную клавиатуру: сделайте inline клавиатуру, метки короткие, а параметры в callback-запросе передавайте.
Вы кажется не поняли вопрос. "Можете делать /nextcommand и все" - если подставить /nextcommand в поле href, то ссылка перестаёт быть ссылкой. Мне нужно чтобы часть текста было ссылкой, внутренней ссылкой. Inline-клавиатура выводится под телом сообщения всегда, а мне нужно чтобы часть текста внутри сообщения была ссылкой на следующую команду.
nllm: как я и сказал в вопросе, deep-linking обязательно открывает сначала браузер, что мне не подходит. Про генерирование ссылок для выполнения команд я так и не понял что вы имеете ввиду. Вопрос ведь в том, как превратить часть текста во внутреннюю ссылку. Есть большой текст, часть фраз из которого является ссылками. Точнее должно быть ссылками. Но внутренними.
nllm: вот есть у вас сгенерированная команда /step_N, допустим. Как теперь часть текста сделать ссылкой, которая ведёт на выполнение команды /step_N? Допустим текст с ссылкой, которая ведёт на выполнение команды.
В чистом виде внутренние ссылки пока нельзя. Можно кастомные inline-клавиатуры непосредственно под сообщением (под каждым сообщением - своя клавиатура). Делайте разные сообщения от бота по разным тематикам с разным набором кнопок. К нужному сообщению можно всегда прокрутить и нажать нужную кнопку. В отличии от обычной клавиатуры, на встроенной в событии нажатия используется в качестве данных не надпись на кнопке, а callback-data. Соответственно надписи на кнопках для людей, callback-data для бота. https://core.telegram.org/bots/2-0-intro#switch-to...
Проблема inline-клавиатуры именно в том, что она под сообщением, а не в его теле, не в тексте, что мне совершенно не подходит. Вообщем пока нормального способа не существует, понятно.