как отправлять emoji смайлики через API Telegram?
В официальной документации ни слово про смайликов. Где-то пишут, что нужно отправлять UTF-8 код смайлика....но все без толку
U+1F601
U1F601
#1F601;
F601;
\xF0\x9F\x98\x81
как отправлять emoji смайлики через API Telegram?
В официальной документации ни слово про смайликов. Где-то пишут, что нужно отправлять UTF-8 код смайлика....но все без толку
U+1F601
U1F601
#1F601;
F601;
\xF0\x9F\x98\x81
Посмотрите на Emoji Unicode Tables.
Нужный вам код смайлика находится в колонке Bytes (UTF-8).
Перед отправкой на сервер необходимо выполнять URL Encode.
Например, \xF0\x9F\x98\x81 должен выглядеть так: %F0%9F%98%81.
Я просто копировал emoji из таблицы выше обычным выделением мышкой (как выделяется текст) из колонки "Native" получается вот так:
На 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<TOKEN>/sendMessage"
где \uD83D\uDE31 и есть кодированный символ 👌
Для РНР там где смайл:
hex2bin('f09f9880')<br>
f09f9880
- код смайла без \х отсюда (колонка Bytes (UTF-8))
Используйте средства для представления 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<token>/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=<chat-id>&text=%D1%83%D1%80%D0%B0+%F0%9F%87%B7%F0%9F%87%BA%21
\xF0\x9F\x98\x81– VenZell Feb 26 '16 at 11:19%F0%9F%98%81– VenZell Feb 26 '16 at 11:49