如何使用cURL通过bash脚本向Telegram机器人发送表情符号? [英] How to send emoji via bash script to Telegram bot using curl?

查看:21
本文介绍了如何使用cURL通过bash脚本向Telegram机器人发送表情符号?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用bash脚本向我的Telegram机器人发送一个表情符号/表情符号。此bash脚本按如下方式调用Telegram API:

curl -s -X POST 'https://api.telegram.org/'$API'/sendMessage' -F chat_id=$chat -F text=$text

因为bash脚本不是Unicode,所以我不能简单地从网络上复制/粘贴表情符号。因此,我尝试使用UTF-8表情符号变体,但反斜杠字符一直被转义。

预期json输出应如下所示:"text":"ud83dudd14"

相反,我得到的是:

输入:$text = xF0x9Fx98x81 Json输出="text":"\xF0\x9F\x98\x81\"

输入:$text = u'U0001F604' Json输出="text": "u'\U0001F604'"

输入:$text = U0001F514 Json输出="text":"\U0001F514"

输入:$text = "(1f600)" Json输出="text":""(1f600)""

输入:$text = ud83dude08 Json输出="text":"\ud83d\ude08"

输入:$text = \ud83d\udd14 Json输出="text":"\\\ud83d\\\udd14"

使用bash脚本和curl向我的Telegram机器人发送表情符号的正确语法是什么?

非常感谢!

推荐答案

为电报接口生成JSON

如果您的问题是关于JSON编码,让jq为您解答:

s='🔔'  ## or s=$'360237224224'

json=$(jq -anc --arg id "$chat" --arg s "$s" '{"chat_id": $id, "text": $s}')
curl -X POST -H "Content-Type: application/json" -d "$json" 
  "https://api.telegram.org/$API/sendMessage"

从JSON到字符串文字

在bash 4.0或更高版本中,可以要求外壳程序本身为您提供一个ASCII可打印的文字字符串,该字符串将对应于多字节字符。

LC_ALL=C printf "s=%q
" "$(jq -r . <<<'"ud83dudd14"')"

...将输出:

s=$'360237224224'

从字符串文字到JSON

转到另一个方向:

s=$'360237224224'
jq -anM --arg s "$s" '$s'

...输出为:

"ud83dudd14"

这篇关于如何使用cURL通过bash脚本向Telegram机器人发送表情符号?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆