Как отправить 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?

Ответы

Ответ 1

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

проверьте здесь

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

Ответ 2

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

примеры:

😁\xF0\x9F\x98\x81 ЛЮБИМЧЕСКАЯ ЛИЦА С ГЛАЗАМИ ГЛАЗА

😉\xF0\x9F\x98\x89 WINKING FACE

Ответ 3

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

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

Преобразуйте коды utf8 в текст ответа, готовый к телеграмме, с помощью следующего кода:

<?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 можно использовать в текстах ответов ботов телеграммы.

Ответ 4

В дополнение к этому ответу fooobar.com/questions/333499/....

Ссылка, представленная Mustafa, не представляет всех эмози. Этот источник лучше http://emojipedia.org/ ☝️. В дополнение к главному знаку он имеет вариации эможи.

Ответ 5

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

Emoji::CHARACTER_EYES

или

Emoji::eyes()

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

Ответ 6

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

Но, тем не менее, я работал с самым простым решением: Я пошел в телеграмму настольного мессенджера, там я отправляю необходимые эможи (🚌).

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

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

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