Как отправить Emoji с помощью Telegram Bot API?

мне нужно отправить сообщения, содержащие emoji с моим ботом Telegram.

поэтому я копирую / вставляю код emoji :nine: например, в моем тексте сообщения и отправить его пользователю, но emoji не работает.

Это мой пример кода и функции:

function tel_send($key, $t, $c)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://api.telegram.org/bot" . $key . "/sendMessage");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, "cache=" . (time() / rand(1, time() - 100)) . "&text=" . $t . "&chat_id=" . $c);
    $ss = curl_exec($ch);
    curl_close($ch);
    return $ss;
}
tel_send($key, "My number - :nine:", $val['message']['chat']['id']);

Итак, мой вопрос: Как я могу отправить emoji с помощью Telegram bot?

7 ответов


вам нужно указать значение Юникода emoji.

регистрация здесь

Они возвращаются функцией как значение emoji, например u '\U000026C4', который является снеговиком. хотя это в python, вы можете применить его для php.


Я столкнулась с той же проблемой несколько дней назад.. Решение состоит в том, чтобы использовать обозначения байтов (UTF-8) из этой таблицы: http://apps.timwhitlock.info/emoji/tables/unicode

примеры:

\xF0\x9F\x98\x81 ухмыляющееся лицо с улыбающимися глазами

\xF0\x9F\x98\x89 подмигивающее лицо


вы можете создать его из utf8 байт.

см. список emoji и их коды utf8 здесь: http://apps.timwhitlock.info/emoji/tables/unicode

преобразование кодов utf8 в текст ответа telegram-ready со следующим кодом:

<?php

$EmojiUtf8Byte = '\xF0\x9F\x98\x81';

$pattern = '@\\x([0-9a-fA-F]{2})@x';
$emoji = preg_replace_callback(
  $pattern,
  function ($captures) {
    return chr(hexdec($captures[1]));
  },
  $utf8Byte
);

$telegramResponseText = "Hey user " . $emoji;

$emoji можно использовать в текстах ответов Telegram bot.


дополнение к этому ответу https://stackoverflow.com/a/31431810/1114926.

ссылку Мустафа при условии, не представляет все emoji. Этот источник лучше http://emojipedia.org/ ☝️. Он имеет вариации emoji в дополнение к основному знаку.


реальное решение-использовать https://github.com/spatie/emoji (composer require spatie/emoji) для кодов Emoji. Теперь ваш код будет выглядеть как

Emoji::CHARACTER_EYES

или

Emoji::eyes()

Это то, что вы могли бы реально использовать. В отличие от написания всех кодов вручную и с трудом понимая, что это такое на первый взгляд.


Я долго искал ответ на этот вопрос, но не мог заставить его работать. мои навыки написания сценариев плохие, и преобразование ответов php в bash оказалось проблемой.

но, тем не менее, я получил его работу с самым простым решением: Я пошел в telegram desktop messenger, там я отправляю необходимый emoji ().

чем я сделал переменную: bus=""

теперь я могу использовать переменную в завитке как: "text=some text $bus"

Это работает отличное использование bash на linux, я полагаю, что он также может работать в php.


Я использую этот код в команде linux bash и curl для ухмыляющегося лица

curl -X POST "https://api.telegram.org/botTOKEN/sendMessage" -d "chat_id=ID&text=%F0%9F%98%80&parse_modwarninge=Markdown"