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