Помощь по телеграм боту - создание кнопок InlineKeyboardButton

 

Добрый день.

Немного поясню :

1) Каждая кнопка, будь то обычная или инлайн, это теперь самостоятельный объект KeyboardButton или InlineKeyboardButton, не забудьте обновить своих ботов!
2) В Inline-режиме все текстовые поля теперь представлены отдельными объектами InputMessageContent, которые, в свою очередь могут быть аж 4-х типов (подробности тут).

Итак, инлайн-кнопки. Что это такое? Это специальные объекты, которые "цепляются" к конкретным сообщениям и распространяют своё действие, в общем случае, только на них. Делятся такие кнопки на три типа: URL-кнопки, Callback-кнопки и Switch-кнопки.
Самыми простыми являются кнопки-ссылки (URL). Как видно из названия, их цель - просто перекидывать пользователей по определенным веб-адресам. Давайте сразу напишем обработчик, который будет на любое сообщение отвечать каким-либо текстом и предложением перейти, например, на Яндекс.

Кто-нибудь дополнял Telegram.mqh под TelegramAPI от 2016 года, афунциональностью InlineKeyboardButton?

В боте на питоне реализовано так:

@bot.message_handler(content_types=["text"])
def default_test(message):
    keyboard = types.InlineKeyboardMarkup()
    url_button = types.InlineKeyboardButton(text="Перейти на Яндекс", url="https://ya.ru")
    keyboard.add(url_button)
    bot.send_message(message.chat.id, "Привет! Нажми на кнопку и перейди в поисковик.", reply_markup=keyboard)

Инлайн-клавиатура представляет собой объект InlineKeyboardMarkup, а каждая инлайн-кнопка – это объект InlineKeyboardButton. Чтобы получилась URL-кнопка, нужно указать значения параметров text (текст на кнопке) и url (валидный веб-адрес). В результате бот пришлет нам такое сообщение (см. рис.). В целях обеспечения безопасности, перед переходом по URL-кнопкам появляется всплывающее окно, в котором видна ссылка целиком.

Пример:

пример сообщенияЕсли нажать на перейти , то происходит переход по url,  ну ли или отработает обычная текстовая команда.

Изначально брал библиотеку с местного форума. 

Если кто-нибудь расширил метод по работе не могли бы скинуть исходник или текст методов?

   string ReplyKeyboardMarkup(const string keyboard,
                              const bool resize,
                              const bool one_time)
     {
      string result=StringFormat("{\"keyboard\": %s, \"one_time_keyboard\": %s, \"resize_keyboard\": %s, \"selective\": false}",UrlEncode(keyboard),BoolToString(resize),BoolToString(one_time));
      return(result);
     }

А также  int SendMessage(input param).

 
У меня мой телеграм работает нормально и на телефоне и на компьютере. 
Просто нужно скачивать его с официального сайта (ссылка удалена модератором Artyom Trishkin)
и всё будет нормально. А так я вам скажу очень удобный месенджер.
 
Илья Ворегов:

Реклама сторонних ресурсов запрещена правилами ресурса.

Вам - предупреждение.

 
По inline кнопкам нет ответа?
 
Sergey Likho:
По inline кнопкам нет ответа?

Пока не занимаюсь данной задачей.

 
Sergey Likho:
По inline кнопкам нет ответа?
//нужно чтоб хоть что-то было задано - url, callback_data or switch_inline_query
string T_InlineKeyboardButton(const string text,const string url=NULL, const string callback_data=NULL){
   string                  key =StringFormat("\"text\": %s", "\""+text+"\"");
   if(url          !=NULL) key+=StringFormat(",\"url\": %s", "\""+url+"\""); 
   if(callback_data!=NULL) key+=StringFormat(",\"callback_data\": %s", "\""+callback_data+"\""); 
   return("{"+key+"}");}

string T_InlineKeyboardMarkup(const string keyboard){
   return(StringFormat("{\"inline_keyboard\": %s}", UrlEncode(keyboard)));}
//----------------------------------------------
// Пример использования: 
string reply_markup = T_InlineKeyboardMarkup("[["+T_InlineKeyboardButton("A", "https://www.youtube.com")+"],["+T_InlineKeyboardButton("B", NULL, "NN")+"],["+T_InlineKeyboardButton("C", NULL, "NN")+"]]");

//где reply_markup это пaраметр SendMessage

Правда я пока не разобралась с callback_data, поэтому и набрела на эту тему случайно 

 

  

Вожусь с переменным кол-вом кнопок, кол-во должно меняться от результата счетчика. Можно их как отдельные единицы создавать?

 
Sofiia Butenko #:

Правда я пока не разобралась с callback_data, поэтому и набрела на эту тему случайно 

София, вы смогли разобраться с callback_data, да и вообще с функцией InlineKeyboardMarkup ?  приведите пример строки, которую эксперт должен отправлять в телеграм.

 
Aleksei Fetjukov #:

София, вы смогли разобраться с callback_data, да и вообще с функцией InlineKeyboardMarkup ?  приведите пример строки, которую эксперт должен отправлять в телеграм.

Здравствуйте, еще не разобрались с callback_data?

Причина обращения: