Не получается отправить requests запрос к Telegram API

Я реализую функцию установки реакции ботом на сообщение пользователя (недавно вышла новая версия bot api в Telegram, где и появилась эта функция).

def send_react(message):
    global TOKEN
    chat_id = message.chat.id
    message_id = message.message_id
    reaction = '?'
    url = f'https://api.telegram.org/bot{TOKEN}/setMessageReaction'
    data = {
        'chat_id': chat_id,
        'message_id': message_id,
        'reaction': reaction,
        'is_big': False
    }
    response = requests.post(url, json=data)
    if response.status_code == 200:
        result = response.json()
        if result['ok']:
            print('Реакция успешно установлена!')
        else:
            print('Не удалось установить реакцию. Причина:', result['description'])
    else:
        print('Ошибка при выполнении запроса. Код статуса:', response.status_code)
    return

Однако получаю ошибку: Ошибка при выполнении запроса. Код статуса: 400 Что это может быть?


Ответы (1 шт):

Автор решения: Trees

Поле reaction ожидает не простую строку, а специальный формат. Нужно заменить на:

reaction = [{'type': 'emoji', 'emoji': '?'}]
→ Ссылка