【PHP Telegram Bot】Day20 - sendMessage:发送和转换 Markdown 讯息

今天先来点轻松的,先来看看各种 sendMessage 的功能,最後来转换使用者发送的 Markdown 文字

sendMessage

https://core.telegram.org/bots/api#sendmessage
https://ithelp.ithome.com.tw/upload/images/20210929/20132916SZ9g5d681l.png
https://ithelp.ithome.com.tw/upload/images/20210929/201329164edq2AVs1B.png

参数 说明
chat_id 这格可以填群组和频道的 id 或 @username,但是私讯的话就只能填 user_id
text 要发送的文字放在这里,最多可以 4096 个字
parse_mode 这个可以解析 Markdown 或是 HTML 语法
entities 看起来是可以替代 parse_mode,但我一直没试成功,有高手会用的话留言教我一下
disable_web_page_preview 设成 true 的话,机器人发出去的连结就不会有预览,会比较不洗板
disable_notification true 会关闭这则讯息的通知,只有在频道能使用
reply_to_message_id 设定要回覆哪则讯息
allow_sending_without_reply 设定为 true 时,就算被回覆的讯息不存在也会发送讯息,否则会出现 Bad Request: replied message not found
reply_markup 这个可以让讯息出现按纽,或是下方出现选项,像这样。这个之後会再详细讲

发送 Markdown 讯息

不知道你还有没有留着之前的机器人程序,如果有的话就把它打开来,把之前写的东西都先注解掉,留下上方的函式

没留着的话就重写一边吧,多练习是好事~
https://ithelp.ithome.com.tw/upload/images/20210929/20132916dg9l1b11Ph.png
之後打出像这样的程序,chat_id 填你的 uid,parse_mode 填上 MarkdownV2,response 可以偷懒不打,那个只是我想看服务器回传的讯息
https://ithelp.ithome.com.tw/upload/images/20210929/20132916hECs1khFUn.png
官方的范例拿来玩玩
https://ithelp.ithome.com.tw/upload/images/20210929/20132916OVRrvAcFQc.png
贴进 text,并按下执行程序
https://ithelp.ithome.com.tw/upload/images/20210929/20132916MUjHUewp3Y.png
PHP 的字串本身就可以打成多行,但是前面的空白会留在字串里
https://ithelp.ithome.com.tw/upload/images/20210929/20132916CctNqlqGdQ.png
加上 preg_replace 就能保持程序码美观又能去掉前面的空白啦
https://ithelp.ithome.com.tw/upload/images/20210929/20132916ObPnJWTw5w.png
这样好多了
https://ithelp.ithome.com.tw/upload/images/20210929/20132916FWs7odAE2S.png
另外的 HTML 就交给你自己玩玩啦


转换使用者输入的 Markdown

接着来把使用者的输入转换然後发送回去

来到 processMessage 这里

可以看到官方已经帮我们把使用者输入的文字,还有讯息和聊天室的 id 从阵列中找出来了
https://ithelp.ithome.com.tw/upload/images/20210929/20132916JE2brPIzVp.png
接着把下方一堆 if else 注解掉(选起来按 Ctrl + /),把刚刚写的东西贴过来

填上官方帮你找好的变数,你也可以加上 reply_to_message_id 那些其他参数
https://ithelp.ithome.com.tw/upload/images/20210929/20132916YqdWUugjVu.png
之後要记得把 Long Polling 的那坨程序取消注解(选起来按 Ctrl + /
https://ithelp.ithome.com.tw/upload/images/20210929/20132916fqj0RcOewM.png
最後执行程序,你就可以发送文字让机器人转换啦
https://ithelp.ithome.com.tw/upload/images/20210929/201329160pvxCsM6QS.png


<<:  【Day29】this - DOM

>>:  [Day14] 运算式与运算子

[Day 16] - Django View , Url -- 功能执行的要角

在系列文章刚开始时我们有介绍过 Django 的 MTV 架构,再来帮大家复习一下: 昨天我们介绍了...

Day15 PHP函数介绍

什麽是函数? 函数就是一个功能~ 在写程序时,相同或类似逻辑的程序码如果很常使用,那麽一直重复写一样...

DAY 5 『 RGB调色盘 - layout ( 约束 ) 』Part4

layout(约束) 拉法 我自己拉 layout 的话,我习惯先选某一个物件当作我的基准点。 例如...

Day 10 (Bootstrap)

1.疑问? 一定要用Bootstrap吗? => 自己决定 我朋友说Bootstrap业界没人...