@RomeSB
Программист

Telegram API на Python, как реализовать InlineKeyboardButton с помощью Requests?

Подскажите, пожалуйста!
Как, пользуясь только библиотекой requests и НЕ пользуясь сторонними библиотеками для ApiTelegram, добавлять кнопки (InlineKeyboardButton) к сообщениям, а лучше к фото?

Отправляю таким способом:

def send_photo(self, chat_id, image, text):
params = {'chat_id': chat_id, 'photo': 'img.jpg', 'caption': text, 'inlinekeyboardbutton':[{'text': "Текст", 'url': "http://ya.ru"}]}
files = {'photo': image}
method = 'sendPhoto'
resp = requests.post(self.api_url + method, params, files=files) 
return resp


Картинка и текст приходят в чат, а кнопки нет!
Подскажите плиз!
  • Вопрос задан
  • 3555 просмотров
Пригласить эксперта
Ответы на вопрос 3
params = {
    ...
    'reply_markup': {
        'inline_keyboard': [[
            {'text': '', 'callback_data': '/pic_vote 0'},
            {'text': '', 'callback_data': '/pic_vote 1'}
        ]]
    }
}
Ответ написан
@RomeSB Автор вопроса
Программист
Спасибо всем!
Вот решение:
def send_photo(self, chat_id, image, text):
    	reply = json.dumps({'inline_keyboard': [[{'text': 'текст1', 'url': 'http://ya.ru'}]]})
    	params = {'chat_id': chat_id, 'photo': 'img.jpg', 'caption': text, 'reply_markup': reply}
    	method = 'sendPhoto'
    	files = {'photo': image}
        resp = requests.post(self.api_url + method, params, files=files)
        return resp

Нужно было бы все это
{'inline_keyboard': [[{'text': 'текст1', 'url': 'http://ya.ru'}]]}
запаковать в json
Ответ написан
Комментировать
assanti
@assanti
Человек
Сама по себе одиночная кнопка не будет "жить" нужно создавать InlineKeyboardMarkup, далее, условно говоря, на клавиатуру нужно помещать InlineKeyboardButton объект, который в свойствах имеет текст.
Исходя из выше перечисленного и отталкиваясь от Вашего примера нужно:
'inlinekeyboardbutton':[{'text': "Текст", 'url': "http://ya.ru"}]

заменить на
reply_markup: {"inline_keyboard":[[{"text":"Текст","url":"http://ya.ru"}]]}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы