#telegram_bot
как отправлять emoji смайлики через API Telegram? В официальной документации ни слово про смайликов. Где-то пишут, что нужно отправлять UTF-8 код смайлика....но все без толку U+1F601 U1F601 #1F601; F601; \xF0\x9F\x98\x81
Ответы
Ответ 1
Посмотрите на Emoji Unicode Tables. Нужный вам код смайлика находится в колонке Bytes (UTF-8). Перед отправкой на сервер необходимо выполнять URL Encode. Например, \xF0\x9F\x98\x81 должен выглядеть так: %F0%9F%98%81.Ответ 2
Я просто копировал emoji из таблицы выше обычным выделением мышкой (как выделяется текст) из колонки "Native" получается вот так: 😜Ответ 3
На bash я использую этот ресурс для получения кода Строка "C/C++/Java source code" отображает необходимую кодировку. Запрос приобретает вид /usr/local/bin/curl -s --header 'Content-Type: application/json' --request 'POST' --data "{\"chat_id\":\"-432111111\",\"text\":\"\uD83D\uDC4C - Here is OK emoji\"}" "https://api.telegram.org/bot/sendMessage" где \uD83D\uDE31 и есть кодированный символ 👌 Ответ 4
Пишу бота на C#, работает в таком виде "\U0001F69A" для кода U+1F69A из таблицы.Ответ 5
Для РНР там где смайл: hex2bin('f09f9880')
f09f9880 - код смайла без \х отсюда (колонка Bytes (UTF-8))Ответ 6
Используйте средства для представления Unicode текста в вашей среде. Она сама выполнит преобразование из текста в октеты согласно utf-8 кодировке, а затем произведёт percent-encoding. Например, чтобы отправить флаг 🇷🇺, который состоит из Unicode символов U+1f1f7, U+1f1fa в restclient в Emacs: POST https://api.telegram.org/bot:token/sendMessage Content-type: application/x-www-form-urlencoded chat_id=:chat-id&text=ура 🇷🇺! Это выполняет http POST запрос по указанному url (bot идентифицируемый по :token отправляет сообщение ура 🇷🇺! в :chat-id чат). На Питоне это может выглядеть как: import requests requests.post(f'https://api.telegram.org/bot{token}/sendMessage', dict(chat_id=chat_id, text='ура 🇷🇺!')) Видно, что нет необходимости руками кодировать строку в ascii-представление: '\u0443\u0440\u0430 \U0001f1f7\U0001f1fa!' Питон автоматически кодирует сообщение. На сервер уходит (зашифрованное с помощью TLS), что-то вроде: POST /bot/sendMessage HTTP/1.1 Host: api.telegram.org User-Agent: python-requests/2.18.4 Accept-Encoding: gzip, deflate Accept: */* Connection: keep-alive Content-Length: 69 Content-Type: application/x-www-form-urlencoded chat_id= &text=%D1%83%D1%80%D0%B0+%F0%9F%87%B7%F0%9F%87%BA%21
Комментариев нет:
Отправить комментарий