web-dev-qa-db-fra.com

Comment envoyer Emoji avec l'API Telegram Bot?

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?

25
Vlmake

vous devez spécifier la valeur unicode d'emoji.

cochez ici

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.

13
Mustafa

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

32
codeWhisperer

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.

7
Milad

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"
3
Entaah Laah

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.

3
Dima Stefantsov

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.

1
Jeroen Peiffer

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.

1
Green