如何使用 Telegram Bot API 发送表情符号?
How to send Emoji with Telegram Bot API?
我需要用我的 Telegram 机器人发送包含表情符号的消息。
所以我 copy/paste 表情符号代码 :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 机器人发送表情符号?
您需要指定表情符号的 unicode 值。
这些由函数作为表情符号值返回,例如 u'\U000026C4',它是雪人。虽然在python,你可以申请php.
几天前我遇到了同样的问题..
解决方案是使用此 table 中的字节 (UTF-8) 表示法:
http://apps.timwhitlock.info/emoji/tables/unicode
示例:
\xF0\x9F\x98\x81 笑容满面
\xF0\x9F\x98\x89 眨眼的脸
此答案的补充 。
link那个Mustafa provided doesn't represent all emoji. This source is better http://emojipedia.org/☝️。除了主要标志外,它还有各种表情符号。
真正的解决方案是使用 https://github.com/spatie/emoji (composer require spatie/emoji
) 作为表情符号代码。现在你的代码看起来像
Emoji::CHARACTER_EYES
或
Emoji::eyes()
这是您真正可以使用的东西。不同于手动编写所有代码并且第一眼很难理解它是什么。
在此处查看表情符号及其 UTF-8 代码:
http://apps.timwhitlock.info/emoji/tables/unicode
然后您必须使用以下代码将 UTF-8 代码转换为 Telegram 就绪的响应文本:
<?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);
我一直在寻找这个问题的答案很长时间,但一直没能成功。我的脚本编写能力很差,将 php 的答案转换为 bash 证明是一个挑战。
但是,尽管如此,我还是使用了一个最简单的解决方案:
我去了电报桌面信使,在那里我发送了所需的表情符号 ()。
我做了一个变量:bus=""
现在我可以将 curl 中的变量用作:"text=some text $bus"
在 linux 上使用 bash 效果很好,我想它也可以在 php 上使用。
我在 linux bash 使用此代码,并使用 curl 命令制作笑脸
curl -X POST "https://api.telegram.org/botTOKEN/sendMessage" -d "chat_id=ID&text=%F0%9F%98%80&parse_modwarninge=Markdown"
又一个选择
$curl .... -F text="😁" -F parse_mode=html .... "https://api.telegram.org/botTOKEN/sendMessage"
将启用 parse_mode 到 html 并使用 HTML 十六进制(十六进制)参考(😁)用于 unicode U+1F601
您只需从电报中复制表情符号并粘贴到文本中即可发送
$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);
您可以使用形状名称的另一种方式,例如您可以使用 :house:
示例:
:phone:
:white_check_mark:
:factory:
:page_with_curl:
最简单的方法是在代码中复制并粘贴您需要的表情符号。
但是你必须确保你的源代码文件存储为 UTF8
我刚刚在我的系统上打开了 Telegram 并复制了我需要的那些,再也没有回头:) 有趣的是我不必使用常量、特定名称
或 unicode 字符值。我可以直接在我的编辑器中看到使用的表情符号。
$message = 'Pointing down: ';
如果您将其处理成一条消息(上面的示例是 PHP,但我想它适用于任何编程语言)
> PHP 7
您只需使用 \u
和 unicode 文字,如下所示:
$emojie = "\u{1F600}";
资源:
请注意,至少使用 JavaScript/Node.js,您可以直接将表情符号粘贴到代码中,然后它们将 find 翻译成 Telegram API。例如。
您需要先 json_decode unicode 值,这样试试。
json_decode('"\ud83d\ude0a"')
重要事项:
没人说。
你必须使用双引号,而不是单引号。
下面的代码只会给你文本:\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'));
我需要用我的 Telegram 机器人发送包含表情符号的消息。
所以我 copy/paste 表情符号代码 :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 机器人发送表情符号?
您需要指定表情符号的 unicode 值。
这些由函数作为表情符号值返回,例如 u'\U000026C4',它是雪人。虽然在python,你可以申请php.
几天前我遇到了同样的问题.. 解决方案是使用此 table 中的字节 (UTF-8) 表示法: http://apps.timwhitlock.info/emoji/tables/unicode
示例:
\xF0\x9F\x98\x81 笑容满面
\xF0\x9F\x98\x89 眨眼的脸
此答案的补充
link那个Mustafa provided doesn't represent all emoji. This source is better http://emojipedia.org/☝️。除了主要标志外,它还有各种表情符号。
真正的解决方案是使用 https://github.com/spatie/emoji (composer require spatie/emoji
) 作为表情符号代码。现在你的代码看起来像
Emoji::CHARACTER_EYES
或
Emoji::eyes()
这是您真正可以使用的东西。不同于手动编写所有代码并且第一眼很难理解它是什么。
在此处查看表情符号及其 UTF-8 代码: http://apps.timwhitlock.info/emoji/tables/unicode
然后您必须使用以下代码将 UTF-8 代码转换为 Telegram 就绪的响应文本:
<?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);
我一直在寻找这个问题的答案很长时间,但一直没能成功。我的脚本编写能力很差,将 php 的答案转换为 bash 证明是一个挑战。
但是,尽管如此,我还是使用了一个最简单的解决方案: 我去了电报桌面信使,在那里我发送了所需的表情符号 ()。
我做了一个变量:bus=""
现在我可以将 curl 中的变量用作:"text=some text $bus"
在 linux 上使用 bash 效果很好,我想它也可以在 php 上使用。
我在 linux bash 使用此代码,并使用 curl 命令制作笑脸
curl -X POST "https://api.telegram.org/botTOKEN/sendMessage" -d "chat_id=ID&text=%F0%9F%98%80&parse_modwarninge=Markdown"
又一个选择 $curl .... -F text="😁" -F parse_mode=html .... "https://api.telegram.org/botTOKEN/sendMessage"
将启用 parse_mode 到 html 并使用 HTML 十六进制(十六进制)参考(😁)用于 unicode U+1F601
您只需从电报中复制表情符号并粘贴到文本中即可发送
$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);
您可以使用形状名称的另一种方式,例如您可以使用 :house:
示例:
:phone:
:white_check_mark:
:factory:
:page_with_curl:
最简单的方法是在代码中复制并粘贴您需要的表情符号。 但是你必须确保你的源代码文件存储为 UTF8
我刚刚在我的系统上打开了 Telegram 并复制了我需要的那些,再也没有回头:) 有趣的是我不必使用常量、特定名称 或 unicode 字符值。我可以直接在我的编辑器中看到使用的表情符号。
$message = 'Pointing down: ';
如果您将其处理成一条消息(上面的示例是 PHP,但我想它适用于任何编程语言)
> PHP 7
您只需使用 \u
和 unicode 文字,如下所示:
$emojie = "\u{1F600}";
资源:
请注意,至少使用 JavaScript/Node.js,您可以直接将表情符号粘贴到代码中,然后它们将 find 翻译成 Telegram API。例如。
您需要先 json_decode unicode 值,这样试试。
json_decode('"\ud83d\ude0a"')
重要事项:
没人说。
你必须使用双引号,而不是单引号。
下面的代码只会给你文本:\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'));