Je dois envoyer des messages contenant des emoji avec mon Telegram Bot.
Donc je copie/colle du code emoji :nine:
par exemple, dans mon texte de message et l'envoyer à un utilisateur, MAIS les emoji n'ont pas fonctionné.
Voici mon exemple de code et de fonction:
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']);
Donc, ma question est: comment envoyer des emoji par télégramme bot?
vous devez spécifier la valeur unicode d'emoji.
ceux-ci sont retournés par une fonction sous forme de valeur emoji comme u '\ U000026C4' qui est bonhomme de neige. bien qu'il soit en python, vous pouvez l'appliquer pour php.
J'ai rencontré le même problème il y a quelques jours .. La solution consiste à utiliser la notation Bytes (UTF-8) de ce tableau: http://apps.timwhitlock.info/emoji/tables/unicode
exemples:
????\xF0\x9F\x98\x81 GRINNING FACE AVEC DES YEUX SOURIANTS
????\xF0\x9F\x98\x89 VISAGE CLIGNOTANT
Vous pouvez le créer à partir d'octets utf8.
Voir la liste des emoji et leurs codes utf8 ici: http://apps.timwhitlock.info/emoji/tables/unicode
Convertissez les codes utf8 en texte de réponse prêt pour les télégrammes avec le code suivant:
<?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;
Le $ emoji peut être utilisé dans les textes de réponse de télégramme bot.
J'utilise ce code sur la commande bash et curl de linux pour sourire
curl -X POST "https://api.telegram.org/botTOKEN/sendMessage" -d "chat_id=ID&text=%F0%9F%98%80&parse_modwarninge=Markdown"
La vraie solution consiste à utiliser https://github.com/spatie/emoji (composer require spatie/emoji
) pour les codes Emoji. Maintenant, votre code ressemblera
Emoji::CHARACTER_EYES
ou
Emoji::eyes()
C'est quelque chose que vous pourriez vraiment utiliser. Contrairement à l'écriture manuelle de tous les codes et à la difficulté à comprendre de quoi il s'agit au premier coup d'œil.
Je cherchais depuis longtemps une réponse à cela, mais je n'ai pas réussi à le faire fonctionner. mes compétences en scripting sont médiocres et la conversion des réponses php en bash s'est avérée un défi.
Mais, néanmoins, je l'ai fait fonctionner avec une solution la plus simple: je suis allé à Telegram Desktop Messenger, là j'envoie les emoji requis (????).
Que j'ai fait une variable: bus = "????"
Maintenant, je peux utiliser la variable dans la boucle comme: "text = some text $ bus"
Cela fonctionne très bien en utilisant bash sur linux, je suppose que cela pourrait également fonctionner en php.
Un ajout à cette réponse https://stackoverflow.com/a/31431810/1114926 .
Le lien fourni par Mustafa ne représente pas tous les emoji. Cette source est meilleure http://emojipedia.org/ ☝️. Il a des variations d'emoji en plus du signe majeur.