How to send emoji emoticons through Telegram API?

In the official documentation not a word about emoticons. Somewhere they write that you need to send a UTF-8 emoticon code. ... but to no avail

 U+1F601 U1F601 #1F601; &#1F601; \xF0\x9F\x98\x81 

enter image description here

  • So show me how you send this data - VenZell
  • as UTF codes, instead of emoticons (added) - cmd
  • Try sending the following sequence in double quotes: \xF0\x9F\x98\x81 - VenZell
  • so tried too, doesn't work either - cmd
  • one
    Did you forget to encode the text? %F0%9F%98%81 - VenZell

6 answers 6

Look at Emoji Unicode Tables .
The emoticon code you need is in the Bytes (UTF-8) column Bytes (UTF-8) .

Before sending to the server, you must execute the URL Encode.

For example, \xF0\x9F\x98\x81 should look like this: %F0%9F%98%81 .

    I just copied the emoji from the table above with the usual mouse selection (as text is selected) from the "Native" column like this: ๐Ÿ˜œ

      I am writing a bot on C #, it works in this form "\U0001F69A" for the U+1F69A from the table.

        On bash, I use this resource to get the code

        The string "C / C ++ / Java source code" displays the required encoding. The request takes the form

         /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" 

        where \uD83D\uDE31 is the coded symbol ๐Ÿ‘Œ

          For PHP where there is a smile:

           hex2bin('f09f9880')<br> f09f9880 

          - Smiley code without \ั… from here (column Bytes (UTF-8) )

            Use tools to present Unicode text in your environment. She will perform the conversion from text to octets according to the utf-8 encoding, and then perform percent-encoding . For example, to send the flag, which consists of the Unicode characters U + 1f1f7 , U + 1f1fa to restclient in Emacs :

             POST https://api.telegram.org/bot:token/sendMessage Content-type: application/x-www-form-urlencoded chat_id=:chat-id&text=ัƒั€ะฐ ๐Ÿ‡ท๐Ÿ‡บ! 

            This performs an http POST request at the specified url (bot identified by :token sends a ัƒั€ะฐ ๐Ÿ‡ท๐Ÿ‡บ! message ัƒั€ะฐ ๐Ÿ‡ท๐Ÿ‡บ! :chat-id chat).

            On Python it might look like:

             import requests requests.post(f'https://api.telegram.org/bot{token}/sendMessage', dict(chat_id=chat_id, text='ัƒั€ะฐ ๐Ÿ‡ท๐Ÿ‡บ!')) 

            It is seen that there is no need to manually encode the string in the ascii representation:

             '\u0443\u0440\u0430 \U0001f1f7\U0001f1fa!' 

            Python automatically encodes the message. On the server goes (encrypted using TLS), something like:

             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