如何使用 Telegram Bot API 发送表情符号?

Posted

技术标签:

【中文标题】如何使用 Telegram Bot API 发送表情符号?【英文标题】:How to send Emoji with Telegram Bot API? 【发布时间】:2015-10-04 12:06:42 【问题描述】:

我需要使用我的 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 机器人发送表情符号?

【问题讨论】:

【参考方案1】:

重要的事情:

没有人说。

你必须使用双引号,而不是单引号。 下面的代码只会给你文本:\xF0\x9F\x98\x822021-11-21 09:54:25

define('TELEGRAM_TOKEN', '9999999999:FFFFFFFFFFFFraxb6jajm8cDlKPOH-FFFFFFF');

define('TELEGRAM_CHATID', '@my_bot');  

message_to_telegram('\xF0\x9F\x98\x82' . date('Y-m-d H:i:s'));

function message_to_telegram($text)

    $ch = curl_init();
    curl_setopt_array(
        $ch,
        array(
            CURLOPT_URL => 'https://api.telegram.org/bot' . TELEGRAM_TOKEN . '/sendMessage',
            CURLOPT_POST => TRUE,
            CURLOPT_RETURNTRANSFER => TRUE,
            CURLOPT_TIMEOUT => 10,
            CURLOPT_POSTFIELDS => array(
                'chat_id' => TELEGRAM_CHATID,
                'text' => $text,
            ),
        )
    );
    curl_exec($ch);

但是用双引号你会得到表情符号:

message_to_telegram("\xF0\x9F\x98\x82" . date('Y-m-d H:i:s'));

【讨论】:

【参考方案2】:

你需要先json_decode unicode值,这样试试。

json_decode('"\ud83d\ude0a"')

【讨论】:

【参考方案3】:

请注意,至少使用 javascript/Node.js,您可以直接将表情符号粘贴到代码中,然后它们会将 find 转换为 Telegram API。例如。 ?

【讨论】:

【参考方案4】:

> php 7

您只需使用 \u 和 unicode 文字,如下所示:

?

$emojie = "\u1F600";

资源:https://***.com/a/33548423/8760592

【讨论】:

【参考方案5】:

您可以从电报中复制表情符号并粘贴到文本中以发送?

$bot_url    = "https://api.telegram.org/bot$apiToken/";
$url        = $bot_url . "sendPhoto?chat_id=@Your chanel user";

$post_fields = array(
    'chat_id'   => $chat_id,
    'caption'   => 'Test caption ?',
    'photo'     => new CURLFile(realpath("logo.jpg"))
);

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    "Content-Type:multipart/form-data"
));
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); 
$output = curl_exec($ch);

您可以使用 shap 的名称的另一种方式,例如对于 home,您可以使用 :house: 示例:

:phone:
:white_check_mark:
:factory:
:page_with_curl:

【讨论】:

一切巧妙都很简单)我花了很多时间才看到你的答案)这是唯一对我有用的解决方案 一切巧妙都很简单)我花了很多时间才看到你的答案)这是唯一对我有用的解决方案【参考方案6】:

最简单的方法是在代码中复制并粘贴您需要的表情符号。 但是您必须确保您的源代码文件以 UTF8 格式存储

我刚刚在我的系统上打开了 Telegram 并复制了我需要的那些并且从未回头 :) 有趣的是我不必使用常量、特定名称 或 unicode 字符值。我可以直接看到在我的编辑器中使用了什么表情符号。

$message = 'Pointing down: ?';

如果你把它处理成一条消息(上面的例子是 PHP,但我想它可以在任何编程语言中工作)

【讨论】:

【参考方案7】:

在此处查看表情符号及其 UTF-8 代码: http://apps.timwhitlock.info/emoji/tables/unicode

然后您必须使用以下代码将 UTF-8 代码转换为 Telegram-ready 响应文本:

<?php

function telegram_emoji($utf8emoji) 
    preg_replace_callback(
        '@\\\x([0-9a-fA-F]2)@x',
        function ($captures) 
            return chr(hexdec($captures[1]));
        ,
        $utf8emoji
    );

    return $utf8emoji;


$utf8emoji = '\xF0\x9F\x98\x81';

$telegramReadyResponse = 'Hi user ' . telegram_emoji($utf8emoji);

【讨论】:

【参考方案8】:

只是另一种选择 $curl .... -F text="

以上是关于如何使用 Telegram Bot API 发送表情符号?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Telegram Bot API 在消息中发送嵌入图像和文本

Excel VBA 使用 Telegram bot api 发送图像

如何使用 Telegram Bot API 获取 Telegram 频道用户列表

Telegram bot api:错误代码 429,错误:请求太多:稍后重试

找出我自己的用户 ID 以使用 Telegram API 发送消息

Telegram Bot(用 python 编码)与 AWS API Gateway 集成