Кнопка под сообщением в телеграм

  • Автор темы Автор темы cherus09
  • Дата начала Дата начала

cherus09

Client
Регистрация
10.10.2016
Сообщения
172
Реакции
14
Баллы
18
Привет, подскажите как прикрепить кнопку к сообщению через Bot Api Telegram.
Вот такую:

71784
 
Запрос на
Код:
Развернуть Свернуть Копировать
https://api.telegram.org/bot{-Variable.bot_key-}/sendMessage

Тело запроса:
JSON:
Развернуть Свернуть Копировать
{
    "chat_id": {-Variable.chat_id-},
    "text": "Пример сообщения с кнопкой-ссылкой",
    "parse_mode": "HTML",
    "reply_markup": {
        "inline_keyboard": [
            [
                {
                    "text": "Текст кнопки",
                    "url": "https://google.ru/"
                }
            ]
        ]
    }
}
 
Запрос на
Код:
Развернуть Свернуть Копировать
https://api.telegram.org/bot{-Variable.bot_key-}/sendMessage

Тело запроса:
JSON:
Развернуть Свернуть Копировать
{
    "chat_id": {-Variable.chat_id-},
    "text": "Пример сообщения с кнопкой-ссылкой",
    "parse_mode": "HTML",
    "reply_markup": {
        "inline_keyboard": [
            [
                {
                    "text": "Текст кнопки",
                    "url": "https://google.ru/"
                }
            ]
        ]
    }
}
Ребята подскажите пожалуйста что бы в этом коде только чисто кнопка отправлялась а не текст тоже. Что бы как новый пост кнопка отдельно не шла. А то у меня получается два пост запроса один в urlencoded а другой в JSON/ Или может это как то в один постзапрос пихнуть можно?

У меня сейчас так

1 Post запрос
C#:
Развернуть Свернуть Копировать
chat_id=ID&parse_mode=HTML&text=
<a href="{-Variable.poster-}"> </a>
<a href="{-Variable.ssilka-}"><b>{-Variable.title-}</b></a>

{-Variable.description-}

{-Variable.genre-}

2 post запрос
C#:
Развернуть Свернуть Копировать
{
    "chat_id": ID,
"text": "{-Variable.title-}",
    "parse_mode": "HTML",
    "reply_markup": {
        "inline_keyboard": [
            [
                {
                    "text": "Смотреть Онлайн",
                    "url": "{-Variable.ssilka-}"
                }
            ]
        ]
    }
}
 
Вот пример реализации на C#
C#:
Развернуть Свернуть Копировать
string token = "1650685845:AAGqNhDq8SrJCGAhoSQ7tocAy9Q1kycpWrg";
string chat_id = "228243412456";
string message = "Ваш текст";
string url = "Здесь ваша ссылка";
var knopka = "{\"inline_keyboard\": [[{\"text\": \"Кнопка\", \"url\": \""+url+"\"}]]}";           
string post = "https://api.telegram.org/bot"+token+"/sendMessage?chat_id="+chat_id+"&text="+message+"&parse_mode=Markdown&reply_markup="+knopka;
string PostData = string.Empty;
ZennoPoster.HttpPost(post, PostData, "application/x-www-form-urlencoded", "", "UTF-8",ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly);

Результат:
72197
 
  • Спасибо
Реакции: zarufakis и Nikotim
Вот пример реализации на C#
C#:
Развернуть Свернуть Копировать
string token = "1650685845:AAGqNhDq8SrJCGAhoSQ7tocAy9Q1kycpWrg";
string chat_id = "228243412456";
string message = "Ваш текст";
string url = "Здесь ваша ссылка";
var knopka = "{\"inline_keyboard\": [[{\"text\": \"Кнопка\", \"url\": \""+url+"\"}]]}";          
string post = "https://api.telegram.org/bot"+token+"/sendMessage?chat_id="+chat_id+"&text="+message+"&parse_mode=Markdown&reply_markup="+knopka;
string PostData = string.Empty;
ZennoPoster.HttpPost(post, PostData, "application/x-www-form-urlencoded", "", "UTF-8",ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly);

Результат:
Посмотреть вложение 72197
Спасибо но в этом коде нет поддержки html для текста не подскажите как реализовать ?
 
Спасибо но в этом коде нет поддержки html для текста не подскажите как реализовать ?

Нужно заменить в запросе
Код:
Развернуть Свернуть Копировать
parse_mode=Markdown

На
Код:
Развернуть Свернуть Копировать
parse_mode=HTML
 
  • Спасибо
Реакции: Nikotim
Нужно заменить в запросе
Код:
Развернуть Свернуть Копировать
parse_mode=Markdown

На
Код:
Развернуть Свернуть Копировать
parse_mode=HTML
Не работает это хтмл теги не читает и Markdown разметку тоже
 
Последнее редактирование:
Добавил теги:
C#:
Развернуть Свернуть Копировать
string token = "1650685845:AAGqNhDq8SrJCGAhoUQ7tocAy9Q1kyppWrg";
string chat_id = "2771518283";
string message = "<b>Жирный текст</b>\r\n<a href=\"http://site.com\"><b>Ссылка</b></a>";
string url = "https://site.com";
var knopka = "{\"inline_keyboard\": [[{\"text\": \"Кнопка\", \"url\": \""+url+"\"}]]}";          
string post = "https://api.telegram.org/bot"+token+"/sendMessage?chat_id="+chat_id+"&text="+message+"&parse_mode=HTML&reply_markup="+knopka;
string PostData = string.Empty;
ZennoPoster.HttpPost(post, PostData, "application/x-www-form-urlencoded", "", "UTF-8",ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly);

Вот результат:
72226
 
  • Спасибо
Реакции: backoff, LiMe и Nikotim
Вот результат:
Посмотреть вложение 72226
[/QUOTE]

Спасибо большое вот только при проставление хэштегов перестает работать шаб. Не знаю как сейчас хештеги втулить
 
Обработка текста. Encode/decode
Попробуй.
 
  • Спасибо
Реакции: Nikotim
Добавил теги:
C#:
Развернуть Свернуть Копировать
string token = "1650685845:AAGqNhDq8SrJCGAhoUQ7tocAy9Q1kyppWrg";
string chat_id = "2771518283";
string message = "<b>Жирный текст</b>\r\n<a href=\"http://site.com\"><b>Ссылка</b></a>";
string url = "https://site.com";
var knopka = "{\"inline_keyboard\": [[{\"text\": \"Кнопка\", \"url\": \""+url+"\"}]]}";         
string post = "https://api.telegram.org/bot"+token+"/sendMessage?chat_id="+chat_id+"&text="+message+"&parse_mode=HTML&reply_markup="+knopka;
string PostData = string.Empty;
ZennoPoster.HttpPost(post, PostData, "application/x-www-form-urlencoded", "", "UTF-8",ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly);

Вот результат:
Посмотреть вложение 72226
а как сюда картинку прикрутить?
 

Вложения

  • Спасибо
Реакции: Vinovnik
Картинку надо отправлять с помощью sendPhoto. Прикрепил пример.
Спасибо, но это немного не то что я просил.
Вот, может кому пригодится:
C#:
Развернуть Свернуть Копировать
string img = @"путь к картинке";
string strToken = "токен бота";
string strChatId = "id чата";
string proxy = "прокси";
string message = "описание";
string url = "ссылка";
var knopka = "{\"inline_keyboard\": [[{\"text\": \"Перейти на сайт\", \"url\": \""+url+"\"}]]}";
string mode = "&parse_mode=Html";

string data = "--8d769bc78125cd4\n";
data += string.Format("Content-Disposition: form-data; name=\"photo\"; filename=\"{0}\"\n", img);
data += "Content-Type: application/octet-stream\n";
data += img;

string resRequest = ZennoPoster.HttpPost(
"https://api.telegram.org/bot" + strToken + "/sendPhoto?chat_id=" + strChatId+"&caption="+message+"&parse_mode=HTML&reply_markup="+knopka+mode,
data,"multipart/form-data",proxy,"UTF-8",ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
30000,"","Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0",true,5,
new[] {"Host: api.telegram.org"});
 
  • Спасибо
Реакции: Rimen и nicanil
Картинку надо отправлять с помощью sendPhoto. Прикрепил пример.
а как сюда прикрутить кнопку ссылку?

------WebKitFormBoundary{-Variable.boundary-}
Content-Disposition: form-data; name="chat_id"
{-Variable.chat_id-}
------WebKitFormBoundary{-Variable.boundary-}
Content-Disposition: form-data; name="photo"; filename="{-Variable.filename-}"
Content-Type: image/jpeg
{-Variable.image_filepath-}
------WebKitFormBoundary{-Variable.boundary-}
Content-Disposition: form-data; name="caption"
{-Variable.random_text-}
 
Хочу спросить у знающих людей, можно ли сделать вот как на скрине ? приложу ниже.
Чтобы было 3 кнопки:

и когда я нажимаю на 1 кнопку то ответ приходил на это же сообщение c ответом "1"
если на 2 кнопку то так же на это сообщение c ответом "2"
если на 3 кнопку то так же на это сообщение c ответом "3"


photo_2021-11-08_04-26-54.jpg
 
можно ли картинку, пост и прикрепленный архив посылать в одном сообщении?
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)