web-dev-qa-db-ja.com

Telegram Bot APIで絵文字を送信する方法は?

Telegram Botで絵文字を含むメッセージを送信する必要があります。

絵文字コードをコピーして貼り付けます:nine:たとえば、メッセージテキストでユーザーに送信すると、絵文字は機能しませんでした。

これは私のサンプルコードと機能です。

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']);

だから、私の質問は次のとおりです。Telegramボットで絵文字を送信するにはどうすればよいですか。

25
Vlmake

絵文字のUnicode値を指定する必要があります。

ここをチェック

これらは、雪だるまであるu '\ U000026C4'のような絵文字値として関数によって返されます。これはpythonですが、phpに適用できます。

13
Mustafa

私は数日前に同じ問題に直面しました。解決策は、この表のバイト(UTF-8)表記を使用することです。 http://apps.timwhitlock.info/emoji/tables/unicode

例:

????\xF0\x9F\x98\x81笑顔で笑顔の顔

????\xF0\x9F\x98\x89 WINKING FACE

32
codeWhisperer

Utf8バイトから作成できます。

絵文字リストとその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は、電報ボットの応答テキストで使用できます。

7
Milad

私はこのコードをlinux bashで使用しており、顔をニヤニヤさせるためにcurlコマンドを使用しています。

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

実際の解決策は、 https://github.com/spatie/emojicomposer require spatie/emoji)絵文字コードの場合。これでコードは次のようになります

Emoji::CHARACTER_EYES

または

Emoji::eyes()

これは本当に使用できるものです。すべてのコードを手動で記述し、一目でそれが何であるかを理解するのに苦労するのとは異なります。

3
Dima Stefantsov

私はこれに対する答えを長い間探していましたが、それを機能させることができませんでした。私のスクリプト作成スキルは貧弱で、PHPの回答をbashに変換することは難題でした。

しかし、それでも私はそれを最も簡単なソリューションで動作させました:私は電報デスクトップメッセンジャーに行き、そこに必要な絵文字(????)を送ります。

変数を作成したより:bus = "????"

これでcurlの変数を次のように使用できます: "text = some text $ bus"

これは、Linuxでbashを使用するとうまく機能します。PHPでも機能すると思います。

1
Jeroen Peiffer

この回答への追加 https://stackoverflow.com/a/31431810/1114926

Mustafa が提供するリンクは、すべての絵文字を表すわけではありません。このソースの方が良い http://emojipedia.org/ ☝️。主な記号に加えて、絵文字のバリエーションがあります。

1
Green