如何使用 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,错误:请求太多:稍后重试