如何使用cURL通过bash脚本向Telegram机器人发送表情符号? [英] How to send emoji via bash script to Telegram bot using curl?
本文介绍了如何使用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屋!
查看全文